kuzzle 2.49.1 → 2.50.0-beta.3
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/check-node-version.js +11 -0
- package/dist/bin/copy-protobuf.js +17 -0
- package/dist/lib/api/controllers/adminController.d.ts +51 -0
- package/dist/lib/api/controllers/adminController.js +191 -0
- package/{lib → dist/lib}/api/controllers/authController.d.ts +20 -40
- package/{lib → dist/lib}/api/controllers/authController.js +23 -24
- package/dist/lib/api/controllers/bulkController.d.ts +46 -0
- package/dist/lib/api/controllers/bulkController.js +132 -0
- package/dist/lib/api/controllers/clusterController.d.ts +6 -0
- package/{lib → dist/lib}/api/controllers/clusterController.js +7 -11
- package/dist/lib/api/controllers/collectionController.d.ts +136 -0
- package/dist/lib/api/controllers/collectionController.js +356 -0
- package/dist/lib/api/controllers/documentController.d.ts +181 -0
- package/dist/lib/api/controllers/documentController.js +768 -0
- package/dist/lib/api/controllers/index.d.ts +12 -0
- package/{lib → dist/lib}/api/controllers/index.js +13 -14
- package/dist/lib/api/controllers/indexController.d.ts +65 -0
- package/dist/lib/api/controllers/indexController.js +139 -0
- package/dist/lib/api/controllers/memoryStorageController.d.ts +8 -0
- package/dist/lib/api/controllers/memoryStorageController.js +867 -0
- package/dist/lib/api/controllers/realtimeController.d.ts +47 -0
- package/dist/lib/api/controllers/realtimeController.js +128 -0
- package/dist/lib/api/controllers/securityController.d.ts +423 -0
- package/dist/lib/api/controllers/securityController.js +1139 -0
- package/dist/lib/api/controllers/serverController.d.ts +82 -0
- package/dist/lib/api/controllers/serverController.js +321 -0
- package/dist/lib/api/documentExtractor.d.ts +9 -0
- package/dist/lib/api/documentExtractor.js +274 -0
- package/dist/lib/api/funnel.d.ts +183 -0
- package/dist/lib/api/funnel.js +821 -0
- package/dist/lib/api/httpRoutes.d.ts +17 -0
- package/dist/lib/api/httpRoutes.js +1496 -0
- package/dist/lib/api/rateLimiter.d.ts +18 -0
- package/dist/lib/api/rateLimiter.js +74 -0
- package/{lib → dist/lib}/api/request/kuzzleRequest.d.ts +2 -2
- package/{lib → dist/lib}/api/request/requestContext.d.ts +2 -1
- package/dist/lib/cluster/command.d.ts +73 -0
- package/dist/lib/cluster/command.js +236 -0
- package/dist/lib/cluster/index.d.ts +2 -0
- package/{lib → dist/lib}/cluster/index.js +1 -2
- package/dist/lib/cluster/node.d.ts +278 -0
- package/dist/lib/cluster/node.js +876 -0
- package/dist/lib/cluster/publisher.d.ts +188 -0
- package/dist/lib/cluster/publisher.js +347 -0
- package/dist/lib/cluster/subscriber.d.ts +269 -0
- package/dist/lib/cluster/subscriber.js +555 -0
- package/dist/lib/cluster/workers/IDCardRenewer.d.ts +13 -0
- package/dist/lib/cluster/workers/IDCardRenewer.js +120 -0
- package/{lib → dist/lib}/config/documentEventAliases.d.ts +1 -2
- package/dist/lib/config/index.d.ts +5 -0
- package/dist/lib/config/index.js +244 -0
- package/dist/lib/config/sdkCompatibility.json +9 -0
- package/dist/lib/core/auth/formatProcessing.d.ts +30 -0
- package/dist/lib/core/auth/formatProcessing.js +55 -0
- package/dist/lib/core/auth/passportResponse.d.ts +15 -0
- package/{lib → dist/lib}/core/auth/passportResponse.js +24 -30
- package/dist/lib/core/auth/passportWrapper.d.ts +28 -0
- package/dist/lib/core/auth/passportWrapper.js +126 -0
- package/{lib → dist/lib}/core/backend/backendConfig.js +2 -2
- package/{lib → dist/lib}/core/backend/backendErrors.js +9 -12
- package/dist/lib/core/cache/cacheEngine.d.ts +15 -0
- package/dist/lib/core/cache/cacheEngine.js +205 -0
- package/dist/lib/core/network/accessLogger.d.ts +29 -0
- package/dist/lib/core/network/accessLogger.js +250 -0
- package/dist/lib/core/network/clientConnection.d.ts +15 -0
- package/{lib → dist/lib}/core/network/clientConnection.js +17 -24
- package/dist/lib/core/network/context.d.ts +42 -0
- package/dist/lib/core/network/context.js +57 -0
- package/dist/lib/core/network/entryPoint.d.ts +62 -0
- package/dist/lib/core/network/entryPoint.js +261 -0
- package/dist/lib/core/network/httpRouter/index.d.ts +85 -0
- package/dist/lib/core/network/httpRouter/index.js +258 -0
- package/dist/lib/core/network/httpRouter/routeHandler.d.ts +46 -0
- package/dist/lib/core/network/httpRouter/routeHandler.js +101 -0
- package/dist/lib/core/network/httpRouter/routePart.d.ts +35 -0
- package/dist/lib/core/network/httpRouter/routePart.js +117 -0
- package/dist/lib/core/network/protocolManifest.d.ts +6 -0
- package/{lib → dist/lib}/core/network/protocolManifest.js +5 -9
- package/dist/lib/core/network/protocols/httpMessage.d.ts +22 -0
- package/dist/lib/core/network/protocols/httpMessage.js +62 -0
- package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +171 -0
- package/dist/lib/core/network/protocols/httpwsProtocol.js +921 -0
- package/dist/lib/core/network/protocols/internalProtocol.d.ts +27 -0
- package/dist/lib/core/network/protocols/internalProtocol.js +82 -0
- package/dist/lib/core/network/protocols/mqttProtocol.d.ts +39 -0
- package/dist/lib/core/network/protocols/mqttProtocol.js +219 -0
- package/dist/lib/core/network/protocols/protocol.d.ts +26 -0
- package/dist/lib/core/network/protocols/protocol.js +74 -0
- package/dist/lib/core/network/router.d.ts +49 -0
- package/dist/lib/core/network/router.js +193 -0
- package/dist/lib/core/plugin/plugin.d.ts +56 -0
- package/dist/lib/core/plugin/plugin.js +282 -0
- package/{lib → dist/lib}/core/plugin/pluginContext.js +2 -2
- package/dist/lib/core/plugin/pluginManifest.d.ts +5 -0
- package/{lib → dist/lib}/core/plugin/pluginManifest.js +16 -27
- package/dist/lib/core/plugin/pluginRepository.d.ts +53 -0
- package/dist/lib/core/plugin/pluginRepository.js +112 -0
- package/dist/lib/core/plugin/pluginsManager.d.ts +190 -0
- package/dist/lib/core/plugin/pluginsManager.js +817 -0
- package/dist/lib/core/plugin/privilegedContext.d.ts +14 -0
- package/{lib → dist/lib}/core/plugin/privilegedContext.js +10 -14
- package/dist/lib/core/realtime/actionEnum.d.ts +25 -0
- package/{lib → dist/lib}/core/realtime/actionEnum.js +7 -10
- package/dist/lib/core/realtime/index.d.ts +8 -0
- package/{lib → dist/lib}/core/realtime/index.js +9 -13
- package/dist/lib/core/realtime/notification/document.d.ts +34 -0
- package/dist/lib/core/realtime/notification/document.js +98 -0
- package/dist/lib/core/realtime/notification/index.d.ts +3 -0
- package/{lib → dist/lib}/core/realtime/notification/index.js +4 -5
- package/dist/lib/core/realtime/notification/server.d.ts +17 -0
- package/{lib → dist/lib}/core/realtime/notification/server.js +8 -10
- package/dist/lib/core/realtime/notification/user.d.ts +29 -0
- package/dist/lib/core/realtime/notification/user.js +66 -0
- package/dist/lib/core/realtime/notifier.d.ts +171 -0
- package/dist/lib/core/realtime/notifier.js +405 -0
- package/dist/lib/core/security/index.d.ts +14 -0
- package/{lib → dist/lib}/core/security/index.js +15 -19
- package/dist/lib/core/security/roleRepository.d.ts +143 -0
- package/dist/lib/core/security/roleRepository.js +445 -0
- package/dist/lib/core/security/securityLoader.d.ts +24 -0
- package/dist/lib/core/security/securityLoader.js +125 -0
- package/{lib → dist/lib}/core/security/tokenRepository.js +1 -1
- package/dist/lib/core/security/userRepository.d.ts +81 -0
- package/dist/lib/core/security/userRepository.js +346 -0
- package/dist/lib/core/shared/abstractManifest.d.ts +27 -0
- package/dist/lib/core/shared/abstractManifest.js +85 -0
- package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +7 -0
- package/dist/lib/core/shared/sdk/impersonatedSdk.js +80 -0
- package/{lib → dist/lib}/core/shared/store.d.ts +2 -2
- package/dist/lib/core/statistics/statistics.d.ts +94 -0
- package/dist/lib/core/statistics/statistics.js +287 -0
- package/dist/lib/core/storage/clientAdapter.d.ts +62 -0
- package/dist/lib/core/storage/clientAdapter.js +756 -0
- package/dist/lib/core/storage/storageEngine.d.ts +13 -0
- package/dist/lib/core/storage/storageEngine.js +52 -0
- package/dist/lib/core/validation/baseType.d.ts +35 -0
- package/dist/lib/core/validation/baseType.js +70 -0
- package/dist/lib/core/validation/types/anything.d.ts +10 -0
- package/{lib → dist/lib}/core/validation/types/anything.js +7 -10
- package/dist/lib/core/validation/types/boolean.d.ts +16 -0
- package/{lib → dist/lib}/core/validation/types/boolean.js +18 -23
- package/dist/lib/core/validation/types/date.d.ts +17 -0
- package/dist/lib/core/validation/types/date.js +215 -0
- package/dist/lib/core/validation/types/email.d.ts +17 -0
- package/dist/lib/core/validation/types/email.js +80 -0
- package/dist/lib/core/validation/types/enum.d.ts +17 -0
- package/dist/lib/core/validation/types/enum.js +70 -0
- package/dist/lib/core/validation/types/geoPoint.d.ts +17 -0
- package/{lib → dist/lib}/core/validation/types/geoPoint.js +19 -24
- package/dist/lib/core/validation/types/geoShape.d.ts +31 -0
- package/dist/lib/core/validation/types/geoShape.js +280 -0
- package/dist/lib/core/validation/types/integer.d.ts +7 -0
- package/{lib → dist/lib}/core/validation/types/integer.js +21 -27
- package/dist/lib/core/validation/types/ipAddress.d.ts +17 -0
- package/dist/lib/core/validation/types/ipAddress.js +73 -0
- package/dist/lib/core/validation/types/numeric.d.ts +17 -0
- package/dist/lib/core/validation/types/numeric.js +84 -0
- package/dist/lib/core/validation/types/object.d.ts +24 -0
- package/dist/lib/core/validation/types/object.js +74 -0
- package/dist/lib/core/validation/types/string.d.ts +17 -0
- package/dist/lib/core/validation/types/string.js +85 -0
- package/dist/lib/core/validation/types/url.d.ts +17 -0
- package/dist/lib/core/validation/types/url.js +73 -0
- package/dist/lib/core/validation/validation.d.ts +113 -0
- package/dist/lib/core/validation/validation.js +692 -0
- package/dist/lib/kerror/codes/0-core.json +194 -0
- package/dist/lib/kerror/codes/1-services.json +351 -0
- package/dist/lib/kerror/codes/2-api.json +195 -0
- package/dist/lib/kerror/codes/3-network.json +151 -0
- package/dist/lib/kerror/codes/4-plugin.json +498 -0
- package/dist/lib/kerror/codes/5-validation.json +158 -0
- package/dist/lib/kerror/codes/6-protocol.json +28 -0
- package/dist/lib/kerror/codes/7-security.json +283 -0
- package/dist/lib/kerror/codes/8-cluster.json +16 -0
- package/dist/lib/kerror/codes/index.d.ts +24 -0
- package/dist/lib/kerror/codes/index.js +140 -0
- package/{lib → dist/lib}/kerror/index.d.ts +5 -5
- package/{lib → dist/lib}/kuzzle/Logger.d.ts +6 -0
- package/{lib → dist/lib}/kuzzle/Logger.js +26 -5
- package/dist/lib/kuzzle/dumpGenerator.d.ts +14 -0
- package/dist/lib/kuzzle/dumpGenerator.js +180 -0
- package/dist/lib/kuzzle/event/pipeRunner.d.ts +30 -0
- package/dist/lib/kuzzle/event/pipeRunner.js +119 -0
- package/dist/lib/kuzzle/event/waterfall.d.ts +2 -0
- package/dist/lib/kuzzle/event/waterfall.js +90 -0
- package/dist/lib/kuzzle/internalIndexHandler.d.ts +186 -0
- package/dist/lib/kuzzle/internalIndexHandler.js +174 -0
- package/{lib → dist/lib}/kuzzle/kuzzle.d.ts +6 -7
- package/{lib → dist/lib}/kuzzle/kuzzle.js +5 -2
- package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +20 -0
- package/{lib → dist/lib}/kuzzle/kuzzleStateEnum.js +5 -8
- package/dist/lib/kuzzle/vault.d.ts +2 -0
- package/dist/lib/kuzzle/vault.js +63 -0
- package/dist/lib/model/security/rights.d.ts +8 -0
- package/{lib → dist/lib}/model/security/rights.js +4 -8
- package/{lib → dist/lib}/model/security/role.d.ts +1 -1
- package/{lib → dist/lib}/model/security/user.d.ts +1 -0
- package/dist/lib/model/storage/apiKey.d.ts +49 -0
- package/dist/lib/model/storage/apiKey.js +126 -0
- package/dist/lib/model/storage/baseModel.d.ts +100 -0
- package/dist/lib/model/storage/baseModel.js +211 -0
- package/dist/lib/service/cache/redis.d.ts +74 -0
- package/dist/lib/service/cache/redis.js +237 -0
- package/dist/lib/service/service.d.ts +30 -0
- package/dist/lib/service/service.js +74 -0
- package/{lib → dist/lib}/service/storage/7/elasticsearch.d.ts +2 -2
- package/{lib → dist/lib}/service/storage/7/elasticsearch.js +23 -25
- package/dist/lib/service/storage/7/esWrapper.d.ts +19 -0
- package/dist/lib/service/storage/7/esWrapper.js +245 -0
- package/{lib → dist/lib}/service/storage/8/elasticsearch.js +23 -25
- package/dist/lib/service/storage/8/esWrapper.d.ts +19 -0
- package/dist/lib/service/storage/8/esWrapper.js +245 -0
- package/{lib → dist/lib}/types/Plugin.d.ts +1 -1
- package/{lib/types → dist/lib/types/controllers}/Controller.d.ts +2 -2
- package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.d.ts +1 -1
- package/dist/lib/types/controllers/adminControlller.type.d.ts +5 -0
- package/dist/lib/types/controllers/adminControlller.type.js +3 -0
- package/dist/lib/types/controllers/authController.type.d.ts +5 -0
- package/dist/lib/types/controllers/authController.type.js +3 -0
- package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -0
- package/dist/lib/types/core/auth/formatProcessing.type.js +3 -0
- package/{lib → dist/lib}/types/index.d.ts +3 -3
- package/{lib → dist/lib}/types/index.js +3 -3
- package/dist/lib/util/assertType.d.ts +41 -0
- package/{lib → dist/lib}/util/assertType.js +38 -56
- package/dist/lib/util/asyncStore.d.ts +38 -0
- package/dist/lib/util/asyncStore.js +70 -0
- package/dist/lib/util/bytes.d.ts +2 -0
- package/dist/lib/util/bytes.js +33 -0
- package/dist/lib/util/debug.d.ts +2 -0
- package/{lib → dist/lib}/util/debug.js +15 -23
- package/dist/lib/util/deprecate.d.ts +1 -0
- package/dist/lib/util/deprecate.js +64 -0
- package/dist/lib/util/didYouMean.d.ts +2 -0
- package/{lib → dist/lib}/util/didYouMean.js +9 -15
- package/dist/lib/util/extractFields.d.ts +17 -0
- package/{lib → dist/lib}/util/extractFields.js +18 -32
- package/dist/lib/util/memoize.d.ts +7 -0
- package/{lib → dist/lib}/util/memoize.js +14 -21
- package/dist/lib/util/promback.d.ts +13 -0
- package/dist/lib/util/promback.js +60 -0
- package/dist/lib/util/requestAssertions.d.ts +10 -0
- package/dist/lib/util/requestAssertions.js +143 -0
- package/dist/lib/util/safeObject.d.ts +3 -0
- package/{lib → dist/lib}/util/safeObject.js +7 -13
- package/dist/lib/util/stackTrace.d.ts +19 -0
- package/{lib → dist/lib}/util/stackTrace.js +35 -41
- package/dist/lib/util/wildcard.d.ts +1 -0
- package/{lib → dist/lib}/util/wildcard.js +21 -30
- package/dist/package.json +120 -0
- package/package.json +45 -58
- package/bin/start-kuzzle-server +0 -126
- package/check-node-version.js +0 -17
- package/lib/api/controllers/adminController.js +0 -229
- package/lib/api/controllers/bulkController.js +0 -210
- package/lib/api/controllers/collectionController.js +0 -502
- package/lib/api/controllers/documentController.js +0 -1156
- package/lib/api/controllers/indexController.js +0 -179
- package/lib/api/controllers/memoryStorageController.js +0 -1023
- package/lib/api/controllers/realtimeController.js +0 -155
- package/lib/api/controllers/securityController.js +0 -1571
- package/lib/api/controllers/serverController.js +0 -381
- package/lib/api/documentExtractor.js +0 -309
- package/lib/api/funnel.js +0 -1143
- package/lib/api/httpRoutes.js +0 -1547
- package/lib/api/rateLimiter.js +0 -87
- package/lib/cluster/command.js +0 -284
- package/lib/cluster/node.js +0 -1203
- package/lib/cluster/publisher.js +0 -386
- package/lib/cluster/subscriber.js +0 -776
- package/lib/cluster/workers/IDCardRenewer.js +0 -144
- package/lib/config/index.js +0 -351
- package/lib/config/sdkCompatibility.json +0 -9
- package/lib/core/auth/formatProcessing.js +0 -66
- package/lib/core/auth/passportWrapper.js +0 -126
- package/lib/core/cache/cacheEngine.js +0 -278
- package/lib/core/network/accessLogger.js +0 -322
- package/lib/core/network/context.js +0 -80
- package/lib/core/network/entryPoint.js +0 -358
- package/lib/core/network/httpRouter/index.js +0 -316
- package/lib/core/network/httpRouter/routeHandler.js +0 -111
- package/lib/core/network/httpRouter/routePart.js +0 -147
- package/lib/core/network/protocols/httpMessage.js +0 -69
- package/lib/core/network/protocols/httpwsProtocol.js +0 -1254
- package/lib/core/network/protocols/internalProtocol.js +0 -109
- package/lib/core/network/protocols/mqttProtocol.js +0 -291
- package/lib/core/network/protocols/protocol.js +0 -102
- package/lib/core/network/router.js +0 -255
- package/lib/core/plugin/plugin.js +0 -436
- package/lib/core/plugin/pluginRepository.js +0 -132
- package/lib/core/plugin/pluginsManager.js +0 -1244
- package/lib/core/realtime/notification/document.js +0 -108
- package/lib/core/realtime/notification/user.js +0 -70
- package/lib/core/realtime/notifier.js +0 -541
- package/lib/core/security/README.md +0 -223
- package/lib/core/security/roleRepository.js +0 -569
- package/lib/core/security/securityLoader.js +0 -174
- package/lib/core/security/userRepository.js +0 -446
- package/lib/core/shared/README.md +0 -3
- package/lib/core/shared/abstractManifest.js +0 -102
- package/lib/core/shared/sdk/impersonatedSdk.js +0 -94
- package/lib/core/statistics/index.js +0 -24
- package/lib/core/statistics/statistics.js +0 -373
- package/lib/core/storage/clientAdapter.js +0 -1045
- package/lib/core/storage/storageEngine.js +0 -63
- package/lib/core/validation/baseType.js +0 -80
- package/lib/core/validation/index.js +0 -24
- package/lib/core/validation/types/date.js +0 -284
- package/lib/core/validation/types/email.js +0 -92
- package/lib/core/validation/types/enum.js +0 -100
- package/lib/core/validation/types/geoShape.js +0 -370
- package/lib/core/validation/types/ipAddress.js +0 -83
- package/lib/core/validation/types/numeric.js +0 -108
- package/lib/core/validation/types/object.js +0 -88
- package/lib/core/validation/types/string.js +0 -110
- package/lib/core/validation/types/url.js +0 -83
- package/lib/core/validation/validation.js +0 -1180
- package/lib/kerror/codes/0-core.json +0 -194
- package/lib/kerror/codes/1-services.json +0 -351
- package/lib/kerror/codes/2-api.json +0 -195
- package/lib/kerror/codes/3-network.json +0 -151
- package/lib/kerror/codes/4-plugin.json +0 -498
- package/lib/kerror/codes/5-validation.json +0 -158
- package/lib/kerror/codes/6-protocol.json +0 -28
- package/lib/kerror/codes/7-security.json +0 -283
- package/lib/kerror/codes/8-cluster.json +0 -16
- package/lib/kerror/codes/index.js +0 -208
- package/lib/kuzzle/dumpGenerator.js +0 -259
- package/lib/kuzzle/event/pipeRunner.js +0 -144
- package/lib/kuzzle/event/waterfall.js +0 -101
- package/lib/kuzzle/internalIndexHandler.js +0 -234
- package/lib/kuzzle/vault.js +0 -89
- package/lib/model/storage/apiKey.js +0 -158
- package/lib/model/storage/baseModel.js +0 -275
- package/lib/service/cache/redis.js +0 -282
- package/lib/service/service.js +0 -84
- package/lib/service/storage/7/esWrapper.js +0 -303
- package/lib/service/storage/8/esWrapper.js +0 -303
- package/lib/util/asyncStore.js +0 -112
- package/lib/util/bytes.js +0 -36
- package/lib/util/deprecate.js +0 -82
- package/lib/util/promback.js +0 -66
- package/lib/util/readYamlFile.d.ts +0 -2
- package/lib/util/readYamlFile.js +0 -10
- package/lib/util/requestAssertions.js +0 -157
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{index.js → dist/index.js} +0 -0
- /package/{lib → dist/lib}/api/controllers/baseController.d.ts +0 -0
- /package/{lib → dist/lib}/api/controllers/baseController.js +0 -0
- /package/{lib → dist/lib}/api/controllers/debugController.d.ts +0 -0
- /package/{lib → dist/lib}/api/controllers/debugController.js +0 -0
- /package/{lib → dist/lib}/api/openapi/OpenApiManager.d.ts +0 -0
- /package/{lib → dist/lib}/api/openapi/OpenApiManager.js +0 -0
- /package/{lib → dist/lib}/api/openapi/index.d.ts +0 -0
- /package/{lib → dist/lib}/api/openapi/index.js +0 -0
- /package/{lib → dist/lib}/api/openapi/openApiGenerator.d.ts +0 -0
- /package/{lib → dist/lib}/api/openapi/openApiGenerator.js +0 -0
- /package/{lib → dist/lib}/api/request/index.d.ts +0 -0
- /package/{lib → dist/lib}/api/request/index.js +0 -0
- /package/{lib → dist/lib}/api/request/kuzzleRequest.js +0 -0
- /package/{lib → dist/lib}/api/request/requestContext.js +0 -0
- /package/{lib → dist/lib}/api/request/requestInput.d.ts +0 -0
- /package/{lib → dist/lib}/api/request/requestInput.js +0 -0
- /package/{lib → dist/lib}/api/request/requestResponse.d.ts +0 -0
- /package/{lib → dist/lib}/api/request/requestResponse.js +0 -0
- /package/{lib → dist/lib}/cluster/idCardHandler.d.ts +0 -0
- /package/{lib → dist/lib}/cluster/idCardHandler.js +0 -0
- /package/{lib → dist/lib}/cluster/protobuf/command.proto +0 -0
- /package/{lib → dist/lib}/cluster/protobuf/sync.proto +0 -0
- /package/{lib → dist/lib}/cluster/state.d.ts +0 -0
- /package/{lib → dist/lib}/cluster/state.js +0 -0
- /package/{lib → dist/lib}/config/default.config.d.ts +0 -0
- /package/{lib → dist/lib}/config/default.config.js +0 -0
- /package/{lib → dist/lib}/config/documentEventAliases.js +0 -0
- /package/{lib → dist/lib}/core/auth/tokenManager.d.ts +0 -0
- /package/{lib → dist/lib}/core/auth/tokenManager.js +0 -0
- /package/{lib → dist/lib}/core/backend/applicationManager.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/applicationManager.js +0 -0
- /package/{lib → dist/lib}/core/backend/backend.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backend.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendCluster.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendCluster.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendConfig.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendController.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendController.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendErrors.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendHook.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendHook.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendImport.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendImport.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendOpenApi.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendOpenApi.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendPipe.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendPipe.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendPlugin.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendPlugin.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendStorage.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendStorage.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendSubscription.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendSubscription.js +0 -0
- /package/{lib → dist/lib}/core/backend/backendVault.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/backendVault.js +0 -0
- /package/{lib → dist/lib}/core/backend/index.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/index.js +0 -0
- /package/{lib → dist/lib}/core/backend/internalLogger.d.ts +0 -0
- /package/{lib → dist/lib}/core/backend/internalLogger.js +0 -0
- /package/{lib → dist/lib}/core/cache/cacheDbEnum.d.ts +0 -0
- /package/{lib → dist/lib}/core/cache/cacheDbEnum.js +0 -0
- /package/{lib → dist/lib}/core/debug/kuzzleDebugger.d.ts +0 -0
- /package/{lib → dist/lib}/core/debug/kuzzleDebugger.js +0 -0
- /package/{lib → dist/lib}/core/plugin/pluginContext.d.ts +0 -0
- /package/{lib → dist/lib}/core/realtime/channel.d.ts +0 -0
- /package/{lib → dist/lib}/core/realtime/channel.js +0 -0
- /package/{lib → dist/lib}/core/realtime/connectionRooms.d.ts +0 -0
- /package/{lib → dist/lib}/core/realtime/connectionRooms.js +0 -0
- /package/{lib → dist/lib}/core/realtime/hotelClerk.d.ts +0 -0
- /package/{lib → dist/lib}/core/realtime/hotelClerk.js +0 -0
- /package/{lib → dist/lib}/core/realtime/room.d.ts +0 -0
- /package/{lib → dist/lib}/core/realtime/room.js +0 -0
- /package/{lib → dist/lib}/core/realtime/subscription.d.ts +0 -0
- /package/{lib → dist/lib}/core/realtime/subscription.js +0 -0
- /package/{lib → dist/lib}/core/security/profileRepository.d.ts +0 -0
- /package/{lib → dist/lib}/core/security/profileRepository.js +0 -0
- /package/{lib → dist/lib}/core/security/tokenRepository.d.ts +0 -0
- /package/{lib → dist/lib}/core/shared/KoncordeWrapper.d.ts +0 -0
- /package/{lib → dist/lib}/core/shared/KoncordeWrapper.js +0 -0
- /package/{lib → dist/lib}/core/shared/ObjectRepository.d.ts +0 -0
- /package/{lib → dist/lib}/core/shared/ObjectRepository.js +0 -0
- /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.d.ts +0 -0
- /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.js +0 -0
- /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.d.ts +0 -0
- /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.js +0 -0
- /package/{lib → dist/lib}/core/shared/store.js +0 -0
- /package/{lib → dist/lib}/core/storage/indexCache.d.ts +0 -0
- /package/{lib → dist/lib}/core/storage/indexCache.js +0 -0
- /package/{lib → dist/lib}/core/storage/storeScopeEnum.d.ts +0 -0
- /package/{lib → dist/lib}/core/storage/storeScopeEnum.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/badRequestError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/badRequestError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/externalServiceError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/externalServiceError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/forbiddenError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/forbiddenError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/index.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/index.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/internalError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/internalError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/kuzzleError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/kuzzleError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/notFoundError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/notFoundError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/partialError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/partialError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/preconditionError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/preconditionError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/sizeLimitError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/sizeLimitError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.js +0 -0
- /package/{lib → dist/lib}/kerror/errors/unauthorizedError.d.ts +0 -0
- /package/{lib → dist/lib}/kerror/errors/unauthorizedError.js +0 -0
- /package/{lib → dist/lib}/kerror/index.js +0 -0
- /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.d.ts +0 -0
- /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.js +0 -0
- /package/{lib → dist/lib}/kuzzle/index.d.ts +0 -0
- /package/{lib → dist/lib}/kuzzle/index.js +0 -0
- /package/{lib → dist/lib}/model/security/profile.d.ts +0 -0
- /package/{lib → dist/lib}/model/security/profile.js +0 -0
- /package/{lib → dist/lib}/model/security/role.js +0 -0
- /package/{lib → dist/lib}/model/security/token.d.ts +0 -0
- /package/{lib → dist/lib}/model/security/token.js +0 -0
- /package/{lib → dist/lib}/model/security/user.js +0 -0
- /package/{lib → dist/lib}/service/storage/8/elasticsearch.d.ts +0 -0
- /package/{lib → dist/lib}/service/storage/Elasticsearch.d.ts +0 -0
- /package/{lib → dist/lib}/service/storage/Elasticsearch.js +0 -0
- /package/{lib → dist/lib}/service/storage/commons/queryTranslator.d.ts +0 -0
- /package/{lib → dist/lib}/service/storage/commons/queryTranslator.js +0 -0
- /package/{lib → dist/lib}/types/ClientConnection.d.ts +0 -0
- /package/{lib → dist/lib}/types/ClientConnection.js +0 -0
- /package/{lib → dist/lib}/types/Deprecation.d.ts +0 -0
- /package/{lib → dist/lib}/types/Deprecation.js +0 -0
- /package/{lib → dist/lib}/types/EventHandler.d.ts +0 -0
- /package/{lib → dist/lib}/types/EventHandler.js +0 -0
- /package/{lib → dist/lib}/types/Global.d.ts +0 -0
- /package/{lib → dist/lib}/types/Global.js +0 -0
- /package/{lib → dist/lib}/types/HttpMessage.d.ts +0 -0
- /package/{lib → dist/lib}/types/HttpMessage.js +0 -0
- /package/{lib → dist/lib}/types/HttpStream.d.ts +0 -0
- /package/{lib → dist/lib}/types/HttpStream.js +0 -0
- /package/{lib → dist/lib}/types/Kuzzle.d.ts +0 -0
- /package/{lib → dist/lib}/types/Kuzzle.js +0 -0
- /package/{lib → dist/lib}/types/KuzzleDocument.d.ts +0 -0
- /package/{lib → dist/lib}/types/KuzzleDocument.js +0 -0
- /package/{lib → dist/lib}/types/OpenApiDefinition.d.ts +0 -0
- /package/{lib → dist/lib}/types/OpenApiDefinition.js +0 -0
- /package/{lib → dist/lib}/types/PasswordPolicy.d.ts +0 -0
- /package/{lib → dist/lib}/types/PasswordPolicy.js +0 -0
- /package/{lib → dist/lib}/types/Plugin.js +0 -0
- /package/{lib → dist/lib}/types/PluginManifest.d.ts +0 -0
- /package/{lib → dist/lib}/types/PluginManifest.js +0 -0
- /package/{lib → dist/lib}/types/Policy.d.ts +0 -0
- /package/{lib → dist/lib}/types/Policy.js +0 -0
- /package/{lib → dist/lib}/types/PolicyRestrictions.d.ts +0 -0
- /package/{lib → dist/lib}/types/PolicyRestrictions.js +0 -0
- /package/{lib → dist/lib}/types/ProfileDefinition.d.ts +0 -0
- /package/{lib → dist/lib}/types/ProfileDefinition.js +0 -0
- /package/{lib → dist/lib}/types/RoleDefinition.d.ts +0 -0
- /package/{lib → dist/lib}/types/RoleDefinition.js +0 -0
- /package/{lib → dist/lib}/types/StrategyDefinition.d.ts +0 -0
- /package/{lib → dist/lib}/types/StrategyDefinition.js +0 -0
- /package/{lib → dist/lib}/types/Target.d.ts +0 -0
- /package/{lib → dist/lib}/types/Target.js +0 -0
- /package/{lib → dist/lib}/types/Token.d.ts +0 -0
- /package/{lib → dist/lib}/types/Token.js +0 -0
- /package/{lib → dist/lib}/types/User.d.ts +0 -0
- /package/{lib → dist/lib}/types/User.js +0 -0
- /package/{lib → dist/lib}/types/config/DumpConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/DumpConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/HttpConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/HttpConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/KuzzleConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/KuzzleConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/LimitsConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/LimitsConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/PluginsConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/PluginsConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/SecurityConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/SecurityConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/ServerConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/ServerConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/ServicesConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/ServicesConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.js +0 -0
- /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +0 -0
- /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.js +0 -0
- /package/{lib/types → dist/lib/types/controllers}/Controller.js +0 -0
- /package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.js +0 -0
- /package/{lib/types → dist/lib/types/controllers}/ControllerRights.d.ts +0 -0
- /package/{lib/types → dist/lib/types/controllers}/ControllerRights.js +0 -0
- /package/{lib → dist/lib}/types/errors/ErrorDefinition.d.ts +0 -0
- /package/{lib → dist/lib}/types/errors/ErrorDefinition.js +0 -0
- /package/{lib → dist/lib}/types/errors/ErrorDomains.d.ts +0 -0
- /package/{lib → dist/lib}/types/errors/ErrorDomains.js +0 -0
- /package/{lib → dist/lib}/types/events/EventGenericDocument.d.ts +0 -0
- /package/{lib → dist/lib}/types/events/EventGenericDocument.js +0 -0
- /package/{lib → dist/lib}/types/events/EventProtocol.d.ts +0 -0
- /package/{lib → dist/lib}/types/events/EventProtocol.js +0 -0
- /package/{lib → dist/lib}/types/realtime/RealtimeScope.d.ts +0 -0
- /package/{lib → dist/lib}/types/realtime/RealtimeScope.js +0 -0
- /package/{lib → dist/lib}/types/realtime/RealtimeUsers.d.ts +0 -0
- /package/{lib → dist/lib}/types/realtime/RealtimeUsers.js +0 -0
- /package/{lib → dist/lib}/types/realtime/RoomList.d.ts +0 -0
- /package/{lib → dist/lib}/types/realtime/RoomList.js +0 -0
- /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.d.ts +0 -0
- /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.js +0 -0
- /package/{lib → dist/lib}/types/storage/7/Elasticsearch.d.ts +0 -0
- /package/{lib → dist/lib}/types/storage/7/Elasticsearch.js +0 -0
- /package/{lib → dist/lib}/types/storage/8/Elasticsearch.d.ts +0 -0
- /package/{lib → dist/lib}/types/storage/8/Elasticsearch.js +0 -0
- /package/{lib → dist/lib}/util/Inflector.d.ts +0 -0
- /package/{lib → dist/lib}/util/Inflector.js +0 -0
- /package/{lib → dist/lib}/util/array.d.ts +0 -0
- /package/{lib → dist/lib}/util/array.js +0 -0
- /package/{lib → dist/lib}/util/async.d.ts +0 -0
- /package/{lib → dist/lib}/util/async.js +0 -0
- /package/{lib → dist/lib}/util/bufferedPassThrough.d.ts +0 -0
- /package/{lib → dist/lib}/util/bufferedPassThrough.js +0 -0
- /package/{lib → dist/lib}/util/crypto.d.ts +0 -0
- /package/{lib → dist/lib}/util/crypto.js +0 -0
- /package/{lib → dist/lib}/util/dump-collection.d.ts +0 -0
- /package/{lib → dist/lib}/util/dump-collection.js +0 -0
- /package/{lib → dist/lib}/util/esRequest.d.ts +0 -0
- /package/{lib → dist/lib}/util/esRequest.js +0 -0
- /package/{lib → dist/lib}/util/koncordeCompat.d.ts +0 -0
- /package/{lib → dist/lib}/util/koncordeCompat.js +0 -0
- /package/{lib → dist/lib}/util/mutex.d.ts +0 -0
- /package/{lib → dist/lib}/util/mutex.js +0 -0
- /package/{lib → dist/lib}/util/name-generator.d.ts +0 -0
- /package/{lib → dist/lib}/util/name-generator.js +0 -0
- /package/{lib → dist/lib}/util/time.d.ts +0 -0
- /package/{lib → dist/lib}/util/time.js +0 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
|
+
* to power modern apps
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2015-2022 Kuzzle
|
|
6
|
+
* mailto: support AT kuzzle.io
|
|
7
|
+
* website: http://kuzzle.io
|
|
8
|
+
*
|
|
9
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
* you may not use this file except in compliance with the License.
|
|
11
|
+
* You may obtain a copy of the License at
|
|
12
|
+
*
|
|
13
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
*
|
|
15
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
* See the License for the specific language governing permissions and
|
|
19
|
+
* limitations under the License.
|
|
20
|
+
*/
|
|
21
|
+
"use strict";
|
|
22
|
+
const Bluebird = require("bluebird");
|
|
23
|
+
const Redis = require("../../service/cache/redis");
|
|
24
|
+
class CacheEngine {
|
|
25
|
+
constructor() {
|
|
26
|
+
const config = global.kuzzle.config.services;
|
|
27
|
+
this.public = new Redis(config.memoryStorage, "public_adapter");
|
|
28
|
+
this.internal = new Redis(config.internalCache, "internal_adapter");
|
|
29
|
+
this.logger = global.kuzzle.log.child("core:cache:cacheEngine");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Initializes the redis clients
|
|
33
|
+
*
|
|
34
|
+
* @returns {Promise}
|
|
35
|
+
*/
|
|
36
|
+
async init() {
|
|
37
|
+
await Bluebird.all([this.public.init(), this.internal.init()]);
|
|
38
|
+
this.registerInternalEvents();
|
|
39
|
+
this.registerPublicEvents();
|
|
40
|
+
this.logger.info("[✔] Cache initialized");
|
|
41
|
+
}
|
|
42
|
+
registerInternalEvents() {
|
|
43
|
+
/**
|
|
44
|
+
* Deletes on or multiple keys
|
|
45
|
+
* @param {string|Array.<string>} keys
|
|
46
|
+
*/
|
|
47
|
+
global.kuzzle.onAsk("core:cache:internal:del", (keys) => this.internal.commands.del(keys));
|
|
48
|
+
/**
|
|
49
|
+
* Asks a key to expire in the provided delay
|
|
50
|
+
* @param {string} key
|
|
51
|
+
* @param {number} ttl (in seconds)
|
|
52
|
+
*/
|
|
53
|
+
global.kuzzle.onAsk("core:cache:internal:expire", (key, ttl) => this.internal.commands.expire(key, ttl));
|
|
54
|
+
/**
|
|
55
|
+
* Wipes the database clean
|
|
56
|
+
*/
|
|
57
|
+
global.kuzzle.onAsk("core:cache:internal:flushdb", () => this.internal.commands.flushdb());
|
|
58
|
+
/**
|
|
59
|
+
* Returns basic information about the internal cache service
|
|
60
|
+
* @returns {Promise.<Object>}
|
|
61
|
+
*/
|
|
62
|
+
global.kuzzle.onAsk("core:cache:internal:info:get", () => this.internal.info());
|
|
63
|
+
/**
|
|
64
|
+
* Fetches a single value
|
|
65
|
+
* @param {string} key
|
|
66
|
+
* @return {string}
|
|
67
|
+
*/
|
|
68
|
+
global.kuzzle.onAsk("core:cache:internal:get", (key) => this.internal.commands.get(key));
|
|
69
|
+
/**
|
|
70
|
+
* Fetches multiple values in one go
|
|
71
|
+
* @param {Array.<string>} ids
|
|
72
|
+
* @return {Array.<string|null>}
|
|
73
|
+
*/
|
|
74
|
+
global.kuzzle.onAsk("core:cache:internal:mget", (keys) => {
|
|
75
|
+
// redis throws an error if trying to mget without arguments
|
|
76
|
+
if (keys.length === 0) {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
return this.internal.commands.mget(keys);
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* Makes a key persistent (disable its expiration delay, if there is one)
|
|
83
|
+
* @param {string} key
|
|
84
|
+
*/
|
|
85
|
+
global.kuzzle.onAsk("core:cache:internal:persist", (key) => this.internal.commands.persist(key));
|
|
86
|
+
/**
|
|
87
|
+
* Asks a key to expire in the provided delay
|
|
88
|
+
* @param {string} key
|
|
89
|
+
* @param {number} ttl (in milliseconds)
|
|
90
|
+
*/
|
|
91
|
+
global.kuzzle.onAsk("core:cache:internal:pexpire", (key, ttl) => this.internal.commands.pexpire(key, ttl));
|
|
92
|
+
/**
|
|
93
|
+
* Fetches all keys matching the provided pattern
|
|
94
|
+
* @param {string} pattern
|
|
95
|
+
*/
|
|
96
|
+
global.kuzzle.onAsk("core:cache:internal:searchKeys", (pattern) => this.internal.searchKeys(pattern));
|
|
97
|
+
/**
|
|
98
|
+
* Add a custom LUA script to the internal client
|
|
99
|
+
* The script can then be executed using core:cache:internal:script:execute
|
|
100
|
+
* @see {@link https://www.npmjs.com/package/ioredis#lua-scripting}
|
|
101
|
+
*
|
|
102
|
+
* @param {string} name of the script
|
|
103
|
+
* @param {number} keys -- number of keys
|
|
104
|
+
* @param {string} script
|
|
105
|
+
*/
|
|
106
|
+
global.kuzzle.onAsk("core:cache:internal:script:define", (name, keys, script) => {
|
|
107
|
+
return this.internal.client.defineCommand(name, {
|
|
108
|
+
lua: script,
|
|
109
|
+
numberOfKeys: keys,
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
/**
|
|
113
|
+
* Execute a script previously defined with core:cache:internal:script:define
|
|
114
|
+
*
|
|
115
|
+
* @param {string} name of the script to execute
|
|
116
|
+
* @param {...string} args -- script arguments
|
|
117
|
+
* @return {*} script result (if any)
|
|
118
|
+
*/
|
|
119
|
+
global.kuzzle.onAsk("core:cache:internal:script:execute", (name, ...args) => this.internal.client[name](...args));
|
|
120
|
+
/**
|
|
121
|
+
* Convenience method for easy access to options NX and PX of the "set"
|
|
122
|
+
* command.
|
|
123
|
+
* Deliberately not named after an existing Redis command to prevent
|
|
124
|
+
* confusion with Redis' API.
|
|
125
|
+
*
|
|
126
|
+
* Options:
|
|
127
|
+
* - ttl: key expiration TTL in milliseconds
|
|
128
|
+
* - onlyIfNew: if true, does not write the key if it already exists
|
|
129
|
+
*
|
|
130
|
+
* @param {string} key
|
|
131
|
+
* @param {string} value
|
|
132
|
+
* @param {{ttl: number, onlyIfNew: boolean}} [opts]
|
|
133
|
+
* @returns {Promise.<boolean>} true if the key was set, false otherwise
|
|
134
|
+
*/
|
|
135
|
+
global.kuzzle.onAsk("core:cache:internal:store", (key, value, opts) => this.internal.store(key, value, opts));
|
|
136
|
+
/**
|
|
137
|
+
* Executes an arbitrary NATIVE cache command directly
|
|
138
|
+
* @param {string} command
|
|
139
|
+
* @param {Array} args -- command arguments
|
|
140
|
+
*/
|
|
141
|
+
global.kuzzle.onAsk("core:cache:internal:execute", (command, ...args) => this.internal.exec(command, ...args));
|
|
142
|
+
}
|
|
143
|
+
registerPublicEvents() {
|
|
144
|
+
/**
|
|
145
|
+
* Deletes on or multiple keys
|
|
146
|
+
* @param {string|Array.<string>} keys
|
|
147
|
+
*/
|
|
148
|
+
global.kuzzle.onAsk("core:cache:public:del", (keys) => this.public.commands.del(keys));
|
|
149
|
+
/**
|
|
150
|
+
* Executes an arbitrary NATIVE cache command directly
|
|
151
|
+
* @param {string} command
|
|
152
|
+
* @param {Array} args -- command arguments
|
|
153
|
+
*/
|
|
154
|
+
global.kuzzle.onAsk("core:cache:public:execute", (command, ...args) => this.public.exec(command, ...args));
|
|
155
|
+
/**
|
|
156
|
+
* Asks a key to expire in the provided delay
|
|
157
|
+
* @param {string} key
|
|
158
|
+
* @param {number} ttl (in seconds)
|
|
159
|
+
*/
|
|
160
|
+
global.kuzzle.onAsk("core:cache:public:expire", (key, ttl) => this.public.commands.expire(key, ttl));
|
|
161
|
+
/**
|
|
162
|
+
* Wipes the database clean
|
|
163
|
+
*/
|
|
164
|
+
global.kuzzle.onAsk("core:cache:public:flushdb", () => this.public.commands.flushdb());
|
|
165
|
+
/**
|
|
166
|
+
* Returns basic information about the internal cache service
|
|
167
|
+
* @returns {Promise.<Object>}
|
|
168
|
+
*/
|
|
169
|
+
global.kuzzle.onAsk("core:cache:public:info:get", () => this.public.info());
|
|
170
|
+
/**
|
|
171
|
+
* Fetches a single value
|
|
172
|
+
* @param {string} key
|
|
173
|
+
* @return {string}
|
|
174
|
+
*/
|
|
175
|
+
global.kuzzle.onAsk("core:cache:public:get", (key) => this.public.commands.get(key));
|
|
176
|
+
/**
|
|
177
|
+
* Executes multiple cache commands in one go, as a single transaction
|
|
178
|
+
* @param {Array} commands to execute
|
|
179
|
+
*/
|
|
180
|
+
global.kuzzle.onAsk("core:cache:public:mExecute", (commands) => this.public.mExecute(commands));
|
|
181
|
+
/**
|
|
182
|
+
* Makes a key persistent (disable its expiration delay, if there is one)
|
|
183
|
+
* @param {string} key
|
|
184
|
+
*/
|
|
185
|
+
global.kuzzle.onAsk("core:cache:public:persist", (key) => this.public.commands.persist(key));
|
|
186
|
+
/**
|
|
187
|
+
* Convenience method for easy access to options NX and PX of the "set"
|
|
188
|
+
* command.
|
|
189
|
+
* Deliberately not named after an existing Redis command to prevent
|
|
190
|
+
* confusion with Redis' API.
|
|
191
|
+
*
|
|
192
|
+
* Options:
|
|
193
|
+
* - ttl: key expiration TTL in milliseconds
|
|
194
|
+
* - onlyIfNew: if true, does not write the key if it already exists
|
|
195
|
+
*
|
|
196
|
+
* @param {string} key
|
|
197
|
+
* @param {string} value
|
|
198
|
+
* @param {{ttl: number, onlyIfNew: boolean}} [opts]
|
|
199
|
+
* @returns {Promise.<boolean>} true if the key was set, false otherwise
|
|
200
|
+
*/
|
|
201
|
+
global.kuzzle.onAsk("core:cache:public:store", (key, value, opts) => this.public.store(key, value, opts));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
module.exports = CacheEngine;
|
|
205
|
+
//# sourceMappingURL=cacheEngine.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export class AccessLogger {
|
|
3
|
+
isActive: boolean;
|
|
4
|
+
worker: Worker;
|
|
5
|
+
logger: import("../../kuzzle/Logger").Logger;
|
|
6
|
+
init(): Promise<void>;
|
|
7
|
+
log(connection: any, request: any, extra: any): void;
|
|
8
|
+
}
|
|
9
|
+
export class AccessLoggerWorker {
|
|
10
|
+
constructor(config: any, anonymousUserId: any);
|
|
11
|
+
config: any;
|
|
12
|
+
logger: pino.Logger<never, boolean>;
|
|
13
|
+
anonymousUserId: any;
|
|
14
|
+
init(): void;
|
|
15
|
+
initTransport(): void;
|
|
16
|
+
/**
|
|
17
|
+
* @param {ClientConnection} connection
|
|
18
|
+
* @param {Request} request
|
|
19
|
+
* @param {String} size - response size, in bytes
|
|
20
|
+
* @param {Object} [extra]
|
|
21
|
+
*/
|
|
22
|
+
logAccess(connection: ClientConnection, request: Request, size: string, extra?: any): void;
|
|
23
|
+
/**
|
|
24
|
+
* @param {ClientConnection} connection
|
|
25
|
+
*/
|
|
26
|
+
getIP(connection: ClientConnection): any;
|
|
27
|
+
}
|
|
28
|
+
import { Worker } from "node:worker_threads";
|
|
29
|
+
import pino = require("pino");
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
|
+
* to power modern apps
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2015-2022 Kuzzle
|
|
6
|
+
* mailto: support AT kuzzle.io
|
|
7
|
+
* website: http://kuzzle.io
|
|
8
|
+
*
|
|
9
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
* you may not use this file except in compliance with the License.
|
|
11
|
+
* You may obtain a copy of the License at
|
|
12
|
+
*
|
|
13
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
*
|
|
15
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
* See the License for the specific language governing permissions and
|
|
19
|
+
* limitations under the License.
|
|
20
|
+
*/
|
|
21
|
+
"use strict";
|
|
22
|
+
// winston is CPU-hungry: isolating it in a worker thread allows for a more
|
|
23
|
+
// efficient CPU resources management, and more performances in the end
|
|
24
|
+
const { Worker, isMainThread, parentPort, workerData, } = require("worker_threads");
|
|
25
|
+
const pino = require("pino");
|
|
26
|
+
const moment = require("moment");
|
|
27
|
+
const { KuzzleRequest } = require("../../api/request");
|
|
28
|
+
const ALLOWED_TRANSPORTS = ["console", "elasticsearch", "file", "syslog"];
|
|
29
|
+
class AccessLogger {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.isActive = false;
|
|
32
|
+
this.worker = null;
|
|
33
|
+
this.logger = global.kuzzle.log.child("core:network:accessLogger");
|
|
34
|
+
}
|
|
35
|
+
async init() {
|
|
36
|
+
const config = global.kuzzle.config.server;
|
|
37
|
+
for (const out of config.logs.transports) {
|
|
38
|
+
if (out.transport && !ALLOWED_TRANSPORTS.includes(out.transport)) {
|
|
39
|
+
this.logger.error(`Failed to initialize logger transport "${out.transport}": unsupported transport. Skipped.`);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.isActive = this.isActive || !out.silent;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (!this.isActive) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const anonymous = await global.kuzzle.ask("core:security:user:anonymous:get");
|
|
49
|
+
this.worker = new Worker(__filename, {
|
|
50
|
+
workerData: {
|
|
51
|
+
anonymousUserId: anonymous._id,
|
|
52
|
+
config,
|
|
53
|
+
kuzzleId: global.nodeId,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
log(connection, request, extra) {
|
|
58
|
+
if (!this.isActive) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const serialized = request.serialize();
|
|
62
|
+
// Users can set anything in the request response, as long as it can
|
|
63
|
+
// be stringified. Problem is: not all that can be stringified is
|
|
64
|
+
// serializable to worker threads (e.g. functions).
|
|
65
|
+
serialized.options.result = undefined;
|
|
66
|
+
// Since we won't pass the response to the worker thread, we need to
|
|
67
|
+
// compute its size beforehand, as this information is needed for access
|
|
68
|
+
// logs
|
|
69
|
+
const size = request.response
|
|
70
|
+
? Buffer.byteLength(JSON.stringify(request.response)).toString()
|
|
71
|
+
: "-";
|
|
72
|
+
try {
|
|
73
|
+
this.worker.postMessage({
|
|
74
|
+
connection,
|
|
75
|
+
extra,
|
|
76
|
+
request: serialized,
|
|
77
|
+
size,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
this.logger.error(`Failed to write access log for request "${request.id}": ${error.message}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
class AccessLoggerWorker {
|
|
86
|
+
constructor(config, anonymousUserId) {
|
|
87
|
+
this.config = config;
|
|
88
|
+
this.logger = null;
|
|
89
|
+
this.anonymousUserId = anonymousUserId;
|
|
90
|
+
}
|
|
91
|
+
init() {
|
|
92
|
+
this.initTransport();
|
|
93
|
+
parentPort.on("message", ({ connection, extra, request, size }) => {
|
|
94
|
+
this.logAccess(connection, new KuzzleRequest(request.data, request.options), size, extra);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
initTransport() {
|
|
98
|
+
const transports = { targets: [] };
|
|
99
|
+
for (const conf of this.config.logs.transports) {
|
|
100
|
+
if (conf.silent === true) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
// Guarantee default transport is 'console' and retro compatibility with winston options
|
|
104
|
+
switch (conf.transport || conf.preset || "console") {
|
|
105
|
+
case "console":
|
|
106
|
+
transports.targets.push({
|
|
107
|
+
level: conf.level || "info",
|
|
108
|
+
options: {
|
|
109
|
+
destination: 1,
|
|
110
|
+
},
|
|
111
|
+
target: "pino/file",
|
|
112
|
+
});
|
|
113
|
+
break;
|
|
114
|
+
case "elasticsearch":
|
|
115
|
+
transports.targets.push({
|
|
116
|
+
level: conf.level || "info",
|
|
117
|
+
options: Object.assign({}, conf.options),
|
|
118
|
+
target: "pino-elasticsearch",
|
|
119
|
+
});
|
|
120
|
+
break;
|
|
121
|
+
case "file":
|
|
122
|
+
transports.targets.push({
|
|
123
|
+
level: conf.level || "info",
|
|
124
|
+
options: {
|
|
125
|
+
append: conf.options?.append ?? true,
|
|
126
|
+
destination: conf.options?.destination ?? "./kuzzle.access.log",
|
|
127
|
+
mkdir: conf.options?.mkdir ?? true,
|
|
128
|
+
},
|
|
129
|
+
target: "pino/file",
|
|
130
|
+
});
|
|
131
|
+
break;
|
|
132
|
+
default:
|
|
133
|
+
// do nothing
|
|
134
|
+
}
|
|
135
|
+
// If a pino transport configuration is used, we'll try to use it as-is and
|
|
136
|
+
// assume the user installed the necessary dependencies in his Kuzzle application
|
|
137
|
+
if (typeof conf.target === "string" && conf.target !== "") {
|
|
138
|
+
transports.targets.push({
|
|
139
|
+
level: conf.level || "info",
|
|
140
|
+
options: conf.options || {},
|
|
141
|
+
target: conf.target,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
this.logger = pino.pino(pino.transport(transports));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @param {ClientConnection} connection
|
|
149
|
+
* @param {Request} request
|
|
150
|
+
* @param {String} size - response size, in bytes
|
|
151
|
+
* @param {Object} [extra]
|
|
152
|
+
*/
|
|
153
|
+
logAccess(connection, request, size, extra = null) {
|
|
154
|
+
if (this.config.logs.accessLogFormat === "logstash") {
|
|
155
|
+
// custom kuzzle logs to be exported to logstash
|
|
156
|
+
this.logger.info({
|
|
157
|
+
connection,
|
|
158
|
+
error: request.error,
|
|
159
|
+
extra,
|
|
160
|
+
namespace: "kuzzle:accessLogs",
|
|
161
|
+
nodeId: global.kuzzle.id,
|
|
162
|
+
request: request.input,
|
|
163
|
+
status: request.status,
|
|
164
|
+
});
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
// user init: prioritize the already decoded and verified token stored in
|
|
168
|
+
// the request
|
|
169
|
+
// If not available, then that may mean that we didn't verify the user yet,
|
|
170
|
+
// so we have to decode any provided token
|
|
171
|
+
let user = null;
|
|
172
|
+
if (request.context.token !== null) {
|
|
173
|
+
user =
|
|
174
|
+
request.context.token.userId === this.anonymousUserId
|
|
175
|
+
? "(anonymous)"
|
|
176
|
+
: request.context.token.userId;
|
|
177
|
+
}
|
|
178
|
+
// = apache combined
|
|
179
|
+
const protocol = connection.protocol.toUpperCase();
|
|
180
|
+
let url;
|
|
181
|
+
let verb = "DO";
|
|
182
|
+
if (connection.protocol.indexOf("HTTP/") === 0) {
|
|
183
|
+
verb = extra.method;
|
|
184
|
+
url = extra.url;
|
|
185
|
+
}
|
|
186
|
+
// for other protocols than http, we rebuild a pseudo url
|
|
187
|
+
else {
|
|
188
|
+
url = `/${request.input.controller}/${request.input.action}`;
|
|
189
|
+
if (request.input.args.index) {
|
|
190
|
+
url += `/${request.input.args.index}`;
|
|
191
|
+
}
|
|
192
|
+
if (request.input.args.collection) {
|
|
193
|
+
url += `/${request.input.args.collection}`;
|
|
194
|
+
}
|
|
195
|
+
if (request.input.args._id) {
|
|
196
|
+
url += `/${request.input.args._id}`;
|
|
197
|
+
}
|
|
198
|
+
let queryString = "";
|
|
199
|
+
for (const k of Object.keys(request.input.args)) {
|
|
200
|
+
if (k === "_id" || k === "index" || k === "collection") {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
const val = request.input.args[k];
|
|
204
|
+
if (queryString.length > 0) {
|
|
205
|
+
queryString += "&";
|
|
206
|
+
}
|
|
207
|
+
queryString += `${k}=${typeof val === "object" ? JSON.stringify(val) : val}`;
|
|
208
|
+
}
|
|
209
|
+
if (queryString.length > 0) {
|
|
210
|
+
url += `?${queryString}`;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (user === null) {
|
|
214
|
+
user = "(unknown)";
|
|
215
|
+
}
|
|
216
|
+
const ip = this.getIP(connection);
|
|
217
|
+
const when = moment().format("DD/MMM/YYYY:HH:mm:ss ZZ");
|
|
218
|
+
const status = request.status || "-";
|
|
219
|
+
const referer = connection.headers.referer
|
|
220
|
+
? `"${connection.headers.referer}"`
|
|
221
|
+
: "-";
|
|
222
|
+
const agent = connection.headers["user-agent"]
|
|
223
|
+
? `"${connection.headers["user-agent"]}"`
|
|
224
|
+
: "-";
|
|
225
|
+
this.logger.info({ namespace: "kuzzle:accessLogs", nodeId: global.kuzzle.id }, `${ip} - ${user} [${when}] "${verb} ${url} ${protocol}" ${status} ${size} ${referer} ${agent}`);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* @param {ClientConnection} connection
|
|
229
|
+
*/
|
|
230
|
+
getIP(connection) {
|
|
231
|
+
const { ips } = connection;
|
|
232
|
+
if (ips.length === 0) {
|
|
233
|
+
return "-";
|
|
234
|
+
}
|
|
235
|
+
const idx = Math.max(0, ips.length - 1 - this.config.logs.accessLogIpOffset);
|
|
236
|
+
return ips[idx];
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
if (!isMainThread) {
|
|
240
|
+
// Needed for instantiating a serialized KuzzleRequest object
|
|
241
|
+
global.kuzzle = { id: workerData.kuzzleId };
|
|
242
|
+
const worker = new AccessLoggerWorker(workerData.config, workerData.anonymousUserId);
|
|
243
|
+
worker.init();
|
|
244
|
+
}
|
|
245
|
+
// Exposing the worker isn't necessary for production code: this is only
|
|
246
|
+
// useful to make this class testable. I usually don't like it when tests have a
|
|
247
|
+
// say in how the code should be written, but in this particular case, I see
|
|
248
|
+
// no other way to correctly test this.
|
|
249
|
+
module.exports = { AccessLogger, AccessLoggerWorker };
|
|
250
|
+
//# sourceMappingURL=accessLogger.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export = ClientConnection;
|
|
2
|
+
/**
|
|
3
|
+
* @class ClientConnection
|
|
4
|
+
* @param {string} protocol - The protocol used (http, websocket, mqtt etc)
|
|
5
|
+
* @param {Array.<string>} ips - The list of forwarded ips (= X-Forwarded-For http header + the final ip, i.e. client, proxy1, proxy2, etc.)
|
|
6
|
+
* @param {object} [headers] - Optional extra key-value object. I.e., for http, will receive the request headers
|
|
7
|
+
*/
|
|
8
|
+
declare class ClientConnection {
|
|
9
|
+
constructor(protocol: any, ips: any, headers?: any, internal?: any);
|
|
10
|
+
id: string;
|
|
11
|
+
protocol: any;
|
|
12
|
+
headers: any;
|
|
13
|
+
internal: any;
|
|
14
|
+
ips: any[];
|
|
15
|
+
}
|
|
@@ -18,12 +18,9 @@
|
|
|
18
18
|
* See the License for the specific language governing permissions and
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
|
-
|
|
22
21
|
"use strict";
|
|
23
|
-
|
|
24
22
|
const { isPlainObject } = require("../../util/safeObject");
|
|
25
23
|
const uuid = require("uuid");
|
|
26
|
-
|
|
27
24
|
/**
|
|
28
25
|
* @class ClientConnection
|
|
29
26
|
* @param {string} protocol - The protocol used (http, websocket, mqtt etc)
|
|
@@ -31,27 +28,23 @@ const uuid = require("uuid");
|
|
|
31
28
|
* @param {object} [headers] - Optional extra key-value object. I.e., for http, will receive the request headers
|
|
32
29
|
*/
|
|
33
30
|
class ClientConnection {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
constructor(protocol, ips, headers = null, internal = null) {
|
|
32
|
+
this.id = uuid.v4();
|
|
33
|
+
this.protocol = protocol;
|
|
34
|
+
this.headers = {};
|
|
35
|
+
this.internal = {};
|
|
36
|
+
if (!Array.isArray(ips)) {
|
|
37
|
+
throw new TypeError(`Expected ips to be an Array, got ${typeof ips}`);
|
|
38
|
+
}
|
|
39
|
+
this.ips = ips;
|
|
40
|
+
if (isPlainObject(headers)) {
|
|
41
|
+
this.headers = headers;
|
|
42
|
+
}
|
|
43
|
+
if (isPlainObject(internal)) {
|
|
44
|
+
this.internal = internal;
|
|
45
|
+
}
|
|
46
|
+
Object.freeze(this);
|
|
42
47
|
}
|
|
43
|
-
this.ips = ips;
|
|
44
|
-
|
|
45
|
-
if (isPlainObject(headers)) {
|
|
46
|
-
this.headers = headers;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (isPlainObject(internal)) {
|
|
50
|
-
this.internal = internal;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
Object.freeze(this);
|
|
54
|
-
}
|
|
55
48
|
}
|
|
56
|
-
|
|
57
49
|
module.exports = ClientConnection;
|
|
50
|
+
//# sourceMappingURL=clientConnection.js.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export = Context;
|
|
2
|
+
declare class Context {
|
|
3
|
+
ClientConnection: typeof ClientConnection;
|
|
4
|
+
debug: any;
|
|
5
|
+
errors: {
|
|
6
|
+
BadRequestError: typeof BadRequestError;
|
|
7
|
+
ExternalServiceError: typeof ExternalServiceError;
|
|
8
|
+
ForbiddenError: typeof ForbiddenError;
|
|
9
|
+
GatewayTimeoutError: typeof GatewayTimeoutError;
|
|
10
|
+
InternalError: typeof KuzzleInternalError;
|
|
11
|
+
KuzzleError: typeof KuzzleError;
|
|
12
|
+
NotFoundError: typeof NotFoundError;
|
|
13
|
+
PartialError: typeof PartialError;
|
|
14
|
+
PluginImplementationError: typeof PluginImplementationError;
|
|
15
|
+
PreconditionError: typeof PreconditionError;
|
|
16
|
+
ServiceUnavailableError: typeof ServiceUnavailableError;
|
|
17
|
+
SizeLimitError: typeof SizeLimitError;
|
|
18
|
+
TooManyRequestsError: typeof TooManyRequestsError;
|
|
19
|
+
UnauthorizedError: typeof UnauthorizedError;
|
|
20
|
+
};
|
|
21
|
+
Protocol: typeof ProtocolBase;
|
|
22
|
+
Request: any;
|
|
23
|
+
RequestContext: any;
|
|
24
|
+
RequestInput: any;
|
|
25
|
+
log: {};
|
|
26
|
+
}
|
|
27
|
+
import ClientConnection = require("./clientConnection");
|
|
28
|
+
import { BadRequestError } from "../../kerror/errors/badRequestError";
|
|
29
|
+
import { ExternalServiceError } from "../../kerror/errors/externalServiceError";
|
|
30
|
+
import { ForbiddenError } from "../../kerror/errors/forbiddenError";
|
|
31
|
+
import { GatewayTimeoutError } from "../../kerror/errors/gatewayTimeoutError";
|
|
32
|
+
import { InternalError as KuzzleInternalError } from "../../kerror/errors/internalError";
|
|
33
|
+
import { KuzzleError } from "../../kerror/errors/kuzzleError";
|
|
34
|
+
import { NotFoundError } from "../../kerror/errors/notFoundError";
|
|
35
|
+
import { PartialError } from "../../kerror/errors/partialError";
|
|
36
|
+
import { PluginImplementationError } from "../../kerror/errors/pluginImplementationError";
|
|
37
|
+
import { PreconditionError } from "../../kerror/errors/preconditionError";
|
|
38
|
+
import { ServiceUnavailableError } from "../../kerror/errors/serviceUnavailableError";
|
|
39
|
+
import { SizeLimitError } from "../../kerror/errors/sizeLimitError";
|
|
40
|
+
import { TooManyRequestsError } from "../../kerror/errors/tooManyRequestsError";
|
|
41
|
+
import { UnauthorizedError } from "../../kerror/errors/unauthorizedError";
|
|
42
|
+
import ProtocolBase = require("./protocols/protocol");
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
|
+
* to power modern apps
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2015-2022 Kuzzle
|
|
6
|
+
* mailto: support AT kuzzle.io
|
|
7
|
+
* website: http://kuzzle.io
|
|
8
|
+
*
|
|
9
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
* you may not use this file except in compliance with the License.
|
|
11
|
+
* You may obtain a copy of the License at
|
|
12
|
+
*
|
|
13
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
*
|
|
15
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
* See the License for the specific language governing permissions and
|
|
19
|
+
* limitations under the License.
|
|
20
|
+
*/
|
|
21
|
+
"use strict";
|
|
22
|
+
const { BadRequestError, ExternalServiceError, ForbiddenError, GatewayTimeoutError, InternalError: KuzzleInternalError, KuzzleError, NotFoundError, PartialError, PluginImplementationError, PreconditionError, ServiceUnavailableError, SizeLimitError, TooManyRequestsError, UnauthorizedError, Request, RequestContext, RequestInput, } = require("../../kerror/errors");
|
|
23
|
+
const ClientConnection = require("./clientConnection");
|
|
24
|
+
const ProtocolBase = require("./protocols/protocol");
|
|
25
|
+
const debug = require("../../util/debug")("kuzzle:network:protocols");
|
|
26
|
+
class Context {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.ClientConnection = ClientConnection;
|
|
29
|
+
this.debug = debug;
|
|
30
|
+
this.errors = {
|
|
31
|
+
BadRequestError,
|
|
32
|
+
ExternalServiceError,
|
|
33
|
+
ForbiddenError,
|
|
34
|
+
GatewayTimeoutError,
|
|
35
|
+
InternalError: KuzzleInternalError,
|
|
36
|
+
KuzzleError,
|
|
37
|
+
NotFoundError,
|
|
38
|
+
PartialError,
|
|
39
|
+
PluginImplementationError,
|
|
40
|
+
PreconditionError,
|
|
41
|
+
ServiceUnavailableError,
|
|
42
|
+
SizeLimitError,
|
|
43
|
+
TooManyRequestsError,
|
|
44
|
+
UnauthorizedError,
|
|
45
|
+
};
|
|
46
|
+
this.Protocol = ProtocolBase;
|
|
47
|
+
this.Request = Request;
|
|
48
|
+
this.RequestContext = RequestContext;
|
|
49
|
+
this.RequestInput = RequestInput;
|
|
50
|
+
this.log = {};
|
|
51
|
+
for (const type of ["silly", "debug", "verbose", "info", "warn", "error"]) {
|
|
52
|
+
this.log[type] = (...args) => global.kuzzle.log[type](...args);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
module.exports = Context;
|
|
57
|
+
//# sourceMappingURL=context.js.map
|