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,346 @@
|
|
|
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 { Request } = require("../../api/request");
|
|
23
|
+
const debug = require("../../util/debug")("kuzzle:core:security:users");
|
|
24
|
+
const { ObjectRepository } = require("../shared/ObjectRepository");
|
|
25
|
+
const kerror = require("../../kerror");
|
|
26
|
+
const { User } = require("../../model/security/user");
|
|
27
|
+
const ApiKey = require("../../model/storage/apiKey");
|
|
28
|
+
/**
|
|
29
|
+
* @class UserRepository
|
|
30
|
+
* @extends ObjectRepository
|
|
31
|
+
*/
|
|
32
|
+
class UserRepository extends ObjectRepository {
|
|
33
|
+
/**
|
|
34
|
+
* @param {SecurityModule} securityModule
|
|
35
|
+
* @constructor
|
|
36
|
+
*/
|
|
37
|
+
constructor(securityModule) {
|
|
38
|
+
super({ store: global.kuzzle.internalIndex });
|
|
39
|
+
this.module = securityModule;
|
|
40
|
+
this.collection = "users";
|
|
41
|
+
this.ObjectConstructor = User;
|
|
42
|
+
this.anonymousUser = null;
|
|
43
|
+
}
|
|
44
|
+
async init() {
|
|
45
|
+
this.anonymousUser = await this.fromDTO({
|
|
46
|
+
_id: "-1",
|
|
47
|
+
name: "Anonymous",
|
|
48
|
+
profileIds: ["anonymous"],
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Gets the standard anonymous User object
|
|
52
|
+
* @returns {User}
|
|
53
|
+
*/
|
|
54
|
+
global.kuzzle.onAsk("core:security:user:anonymous:get", () => this.anonymousUser);
|
|
55
|
+
/**
|
|
56
|
+
* Creates a new user
|
|
57
|
+
* @param {String} id - user identifier
|
|
58
|
+
* @param {Array.<String>} profileIds - associated profile identifiers
|
|
59
|
+
* @param {Object} content - optional user content
|
|
60
|
+
* @param {Object} opts - refresh, userId (used for metadata)
|
|
61
|
+
* @returns {User}
|
|
62
|
+
* @throws If already exists or if at least one profile ID is unknown
|
|
63
|
+
*/
|
|
64
|
+
global.kuzzle.onAsk("core:security:user:create", (id, profileIds, content, opts) => this.create(id, profileIds, content, opts));
|
|
65
|
+
/**
|
|
66
|
+
* Deletes an existing user
|
|
67
|
+
* @param {String} id
|
|
68
|
+
* @param {Object} opts - refresh
|
|
69
|
+
* @throws If the user doesn't exist
|
|
70
|
+
*/
|
|
71
|
+
global.kuzzle.onAsk("core:security:user:delete", (id, opts) => this.deleteById(id, opts));
|
|
72
|
+
/**
|
|
73
|
+
* Loads and returns an existing user
|
|
74
|
+
* @param {String} id - user identifier
|
|
75
|
+
* @returns {User}
|
|
76
|
+
* @throws {NotFoundError} If the user doesn't exist
|
|
77
|
+
*/
|
|
78
|
+
global.kuzzle.onAsk("core:security:user:get", (id) => this.load(id));
|
|
79
|
+
/**
|
|
80
|
+
* Gets multiple users
|
|
81
|
+
* @param {Array.<String>} ids
|
|
82
|
+
* @returns {Array.<User>}
|
|
83
|
+
* @throws If one or more users don't exist
|
|
84
|
+
*/
|
|
85
|
+
global.kuzzle.onAsk("core:security:user:mGet", (ids) => this.loadMultiFromDatabase(ids));
|
|
86
|
+
/**
|
|
87
|
+
* Replaces the user's content
|
|
88
|
+
* @param {String} id - user identifier
|
|
89
|
+
* @param {Object} content
|
|
90
|
+
* @param {Object} opts - refresh, userId (used for metadata)
|
|
91
|
+
* @returns {User} Updated user
|
|
92
|
+
*/
|
|
93
|
+
global.kuzzle.onAsk("core:security:user:replace", (id, profileIds, content, opts) => this.replace(id, profileIds, content, opts));
|
|
94
|
+
/**
|
|
95
|
+
* Fetches the next page of search results
|
|
96
|
+
* @param {String} id - scroll identifier
|
|
97
|
+
* @param {String} [ttl] - refresh the scroll results TTL
|
|
98
|
+
* @returns {Object} Search results
|
|
99
|
+
*/
|
|
100
|
+
global.kuzzle.onAsk("core:security:user:scroll", (id, ttl) => this.scroll(id, ttl));
|
|
101
|
+
/**
|
|
102
|
+
* Searches users
|
|
103
|
+
* @param {Object} searchBody - Search body (ES format)
|
|
104
|
+
* @param {Object} opts (from, size, scroll)
|
|
105
|
+
* @returns {Object} Search results
|
|
106
|
+
*/
|
|
107
|
+
global.kuzzle.onAsk("core:security:user:search", (searchBody, opts) => this.search(searchBody, opts));
|
|
108
|
+
/**
|
|
109
|
+
* Removes all existing users
|
|
110
|
+
* @param {Object} opts (refresh)
|
|
111
|
+
*/
|
|
112
|
+
global.kuzzle.onAsk("core:security:user:truncate", (opts) => this.truncate(opts));
|
|
113
|
+
/**
|
|
114
|
+
* Updates an existing user using a partial content
|
|
115
|
+
* @param {String} id - user identifier to update
|
|
116
|
+
* @param {Object} content - partial content to apply
|
|
117
|
+
* @param {Object} opts - refresh, retryOnConflict, userId (used for metadata)
|
|
118
|
+
* @returns {User} Updated user
|
|
119
|
+
*/
|
|
120
|
+
global.kuzzle.onAsk("core:security:user:update", (id, profileIds, content, opts) => this.update(id, profileIds, content, opts));
|
|
121
|
+
/**
|
|
122
|
+
* Returns true if there is at least one user with the "admin" profile
|
|
123
|
+
*
|
|
124
|
+
* @returns {Boolean}
|
|
125
|
+
*/
|
|
126
|
+
global.kuzzle.onAsk("core:security:user:admin:exist", () => this.adminExists());
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Creates a user
|
|
130
|
+
* @param {String} id
|
|
131
|
+
* @param {Array} profileIds - profiles to associate to this user
|
|
132
|
+
* @param {Object} content
|
|
133
|
+
* @param {Object} [opts]
|
|
134
|
+
*/
|
|
135
|
+
async create(id, profileIds, content, { userId, refresh = "false" } = {}) {
|
|
136
|
+
const user = await this.fromDTO({
|
|
137
|
+
...content,
|
|
138
|
+
// Profile Ids and content are stored at the same level... for now.
|
|
139
|
+
profileIds,
|
|
140
|
+
// Always last, in case content contains these keys
|
|
141
|
+
/* eslint-disable-next-line sort-keys */
|
|
142
|
+
_id: id,
|
|
143
|
+
_kuzzle_info: {
|
|
144
|
+
author: userId,
|
|
145
|
+
createdAt: Date.now(),
|
|
146
|
+
updatedAt: null,
|
|
147
|
+
updater: null,
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
try {
|
|
151
|
+
return await this.persist(user, {
|
|
152
|
+
database: { method: "create", refresh },
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
if (error.id === "services.storage.document_already_exists") {
|
|
157
|
+
throw kerror.get("security", "user", "already_exists", id);
|
|
158
|
+
}
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Updates a user's content
|
|
164
|
+
* @param {String} id
|
|
165
|
+
* @param {Array} profileIds
|
|
166
|
+
* @param {Object} content
|
|
167
|
+
* @param {Object} [opts]
|
|
168
|
+
* @returns {Promise}
|
|
169
|
+
*/
|
|
170
|
+
async update(id, profileIds, content, { refresh = "false", retryOnConflict = 10, userId } = {}) {
|
|
171
|
+
const user = await this.load(id);
|
|
172
|
+
const pojo = this.toDTO(user);
|
|
173
|
+
const updated = await this.fromDTO({
|
|
174
|
+
// /!\ order is important
|
|
175
|
+
...pojo,
|
|
176
|
+
...content,
|
|
177
|
+
// Always last, in case content contains these keys
|
|
178
|
+
_id: id,
|
|
179
|
+
_kuzzle_info: {
|
|
180
|
+
...pojo._kuzzle_info,
|
|
181
|
+
updatedAt: Date.now(),
|
|
182
|
+
updater: userId,
|
|
183
|
+
},
|
|
184
|
+
profileIds: profileIds || pojo.profileIds,
|
|
185
|
+
});
|
|
186
|
+
return this.persist(updated, {
|
|
187
|
+
database: {
|
|
188
|
+
method: "update",
|
|
189
|
+
refresh,
|
|
190
|
+
retryOnConflict,
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Replaces a user's content
|
|
196
|
+
* @param {String} id
|
|
197
|
+
* @param {Object} content
|
|
198
|
+
* @param {Object} [opts]
|
|
199
|
+
* @returns {Promise}
|
|
200
|
+
*/
|
|
201
|
+
async replace(id, profileIds, content, { refresh = "false", userId } = {}) {
|
|
202
|
+
// Assertion: the user must exist
|
|
203
|
+
await this.load(id);
|
|
204
|
+
const user = await this.fromDTO({
|
|
205
|
+
...content,
|
|
206
|
+
// Always last, in case content contains these keys
|
|
207
|
+
_id: id,
|
|
208
|
+
_kuzzle_info: {
|
|
209
|
+
author: userId,
|
|
210
|
+
createdAt: Date.now(),
|
|
211
|
+
updatedAt: null,
|
|
212
|
+
updater: null,
|
|
213
|
+
},
|
|
214
|
+
profileIds,
|
|
215
|
+
});
|
|
216
|
+
return this.persist(user, {
|
|
217
|
+
database: {
|
|
218
|
+
method: "replace",
|
|
219
|
+
refresh,
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Loads a user
|
|
225
|
+
*
|
|
226
|
+
* @param {string} id
|
|
227
|
+
* @returns {Promise.<User>}
|
|
228
|
+
* @throws {NotFoundError} If the user is not found
|
|
229
|
+
*/
|
|
230
|
+
async load(id) {
|
|
231
|
+
if (id === "anonymous" || id === "-1") {
|
|
232
|
+
return this.anonymousUser;
|
|
233
|
+
}
|
|
234
|
+
return super.load(id);
|
|
235
|
+
}
|
|
236
|
+
async persist(user, options = {}) {
|
|
237
|
+
const databaseOptions = options.database || {};
|
|
238
|
+
const cacheOptions = options.cache || {};
|
|
239
|
+
if (user._id === this.anonymousUser._id &&
|
|
240
|
+
user.profileIds.indexOf("anonymous") === -1) {
|
|
241
|
+
throw kerror.get("security", "user", "anonymous_profile_required");
|
|
242
|
+
}
|
|
243
|
+
await this.persistToDatabase(user, databaseOptions);
|
|
244
|
+
await this.persistToCache(user, cacheOptions);
|
|
245
|
+
return user;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* @param dto
|
|
249
|
+
* @returns {Promise<User>}
|
|
250
|
+
*/
|
|
251
|
+
async fromDTO(dto) {
|
|
252
|
+
if (dto.profileIds && !Array.isArray(dto.profileIds)) {
|
|
253
|
+
dto.profileIds = [dto.profileIds];
|
|
254
|
+
}
|
|
255
|
+
const user = await super.fromDTO(dto);
|
|
256
|
+
if (user._id === undefined || user._id === null) {
|
|
257
|
+
return this.anonymousUser;
|
|
258
|
+
}
|
|
259
|
+
// if the user exists (has an _id) but no profile associated: there is a
|
|
260
|
+
// database inconsistency
|
|
261
|
+
if (user.profileIds.length === 0) {
|
|
262
|
+
throw kerror.get("security", "user", "no_profile", user._id);
|
|
263
|
+
}
|
|
264
|
+
const profiles = await this.module.profile.loadProfiles(user.profileIds);
|
|
265
|
+
// Fail if not all profiles are found
|
|
266
|
+
if (profiles.some((p) => p === null)) {
|
|
267
|
+
throw kerror.get("security", "user", "cannot_hydrate", dto._id);
|
|
268
|
+
}
|
|
269
|
+
return user;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Deletes a user from memory and database, along with its related tokens and
|
|
273
|
+
* strategies.
|
|
274
|
+
*
|
|
275
|
+
* @param {String} id
|
|
276
|
+
* @param {Object} [options]
|
|
277
|
+
* @returns {Promise}
|
|
278
|
+
*/
|
|
279
|
+
async deleteById(id, opts) {
|
|
280
|
+
const user = await this.load(id);
|
|
281
|
+
return this.delete(user, opts);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* @override
|
|
285
|
+
*/
|
|
286
|
+
async delete(user, { refresh = "false" } = {}) {
|
|
287
|
+
debug("Delete user: %s", user);
|
|
288
|
+
await this._removeUserStrategies(user);
|
|
289
|
+
await ApiKey.deleteByUser(user, { refresh });
|
|
290
|
+
await this.module.token.deleteByKuid(user._id);
|
|
291
|
+
await super.delete(user, { refresh });
|
|
292
|
+
}
|
|
293
|
+
async _removeUserStrategies(user) {
|
|
294
|
+
const availableStrategies = global.kuzzle.pluginsManager.listStrategies();
|
|
295
|
+
const userStrategies = [];
|
|
296
|
+
const request = new Request({ _id: user._id });
|
|
297
|
+
for (const strategy of availableStrategies) {
|
|
298
|
+
const existStrategy = global.kuzzle.pluginsManager.getStrategyMethod(strategy, "exists");
|
|
299
|
+
if (await existStrategy(request, user._id, strategy)) {
|
|
300
|
+
userStrategies.push(strategy);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
const errors = [];
|
|
304
|
+
if (userStrategies.length > 0) {
|
|
305
|
+
for (const strategy of userStrategies) {
|
|
306
|
+
const deleteStrategy = global.kuzzle.pluginsManager.getStrategyMethod(strategy, "delete");
|
|
307
|
+
// We catch any error produced by delete as we want to make as much
|
|
308
|
+
// cleanup as possible
|
|
309
|
+
try {
|
|
310
|
+
debug("Deleting credentials on strategy %s for user %s", strategy, user._id);
|
|
311
|
+
await deleteStrategy(request, user._id, strategy);
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
errors.push(error);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
if (errors.length > 0) {
|
|
319
|
+
throw kerror.get("security", "credentials", "rejected", errors.join("\n\t- "));
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* @override
|
|
324
|
+
*/
|
|
325
|
+
async loadOneFromDatabase(id) {
|
|
326
|
+
try {
|
|
327
|
+
return await super.loadOneFromDatabase(id);
|
|
328
|
+
}
|
|
329
|
+
catch (err) {
|
|
330
|
+
if (err.status === 404) {
|
|
331
|
+
throw kerror.get("security", "user", "not_found", id);
|
|
332
|
+
}
|
|
333
|
+
throw err;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
async adminExists() {
|
|
337
|
+
const { total } = await this.search({
|
|
338
|
+
query: {
|
|
339
|
+
term: { profileIds: "admin" },
|
|
340
|
+
},
|
|
341
|
+
}, { size: 1 });
|
|
342
|
+
return total >= 1;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
module.exports = UserRepository;
|
|
346
|
+
//# sourceMappingURL=userRepository.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export = AbstractManifest;
|
|
2
|
+
/**
|
|
3
|
+
* Abstract class used to load a manifest.json file.
|
|
4
|
+
* Used as a base for plugins and protocols.
|
|
5
|
+
*
|
|
6
|
+
* @param {Kuzzle} kuzzle - Kuzzle instance
|
|
7
|
+
* @param {string} pluginPath - Absolute path to the plugin directory
|
|
8
|
+
*/
|
|
9
|
+
declare class AbstractManifest {
|
|
10
|
+
constructor(pluginPath: any);
|
|
11
|
+
path: any;
|
|
12
|
+
manifestPath: string;
|
|
13
|
+
name: any;
|
|
14
|
+
kuzzleVersion: any;
|
|
15
|
+
raw: any;
|
|
16
|
+
load(): void;
|
|
17
|
+
/**
|
|
18
|
+
* This object can be stringified and exported, most notably by the
|
|
19
|
+
* server:info API action
|
|
20
|
+
* It's important that only relevant properties are stringified, to
|
|
21
|
+
* prevent circular JSONs (especially with the kuzzle object ref) and
|
|
22
|
+
* to prevent leaking important information
|
|
23
|
+
*
|
|
24
|
+
* @returns {Object}
|
|
25
|
+
*/
|
|
26
|
+
toJSON(): any;
|
|
27
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
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 _ = require("lodash");
|
|
23
|
+
const path = require("path");
|
|
24
|
+
const semver = require("semver");
|
|
25
|
+
const kerror = require("../../kerror").wrap("plugin", "manifest");
|
|
26
|
+
/**
|
|
27
|
+
* Abstract class used to load a manifest.json file.
|
|
28
|
+
* Used as a base for plugins and protocols.
|
|
29
|
+
*
|
|
30
|
+
* @param {Kuzzle} kuzzle - Kuzzle instance
|
|
31
|
+
* @param {string} pluginPath - Absolute path to the plugin directory
|
|
32
|
+
*/
|
|
33
|
+
class AbstractManifest {
|
|
34
|
+
constructor(pluginPath) {
|
|
35
|
+
this.path = pluginPath;
|
|
36
|
+
this.manifestPath = path.resolve(this.path, "manifest.json");
|
|
37
|
+
this.name = null;
|
|
38
|
+
this.kuzzleVersion = null;
|
|
39
|
+
this.raw = null;
|
|
40
|
+
}
|
|
41
|
+
load() {
|
|
42
|
+
try {
|
|
43
|
+
this.raw = require(this.manifestPath);
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
throw kerror.get("cannot_load", this.manifestPath, e.message);
|
|
47
|
+
}
|
|
48
|
+
if (_.isNil(this.raw.kuzzleVersion)) {
|
|
49
|
+
throw kerror.get("missing_version", this.manifestPath);
|
|
50
|
+
}
|
|
51
|
+
this.kuzzleVersion = this.raw.kuzzleVersion;
|
|
52
|
+
if (!semver.satisfies(global.kuzzle.config.version, this.kuzzleVersion, {
|
|
53
|
+
includePrerelease: true,
|
|
54
|
+
})) {
|
|
55
|
+
throw kerror.get("version_mismatch", this.path, global.kuzzle.config.version, this.kuzzleVersion);
|
|
56
|
+
}
|
|
57
|
+
if (!_.isNil(this.raw.name)) {
|
|
58
|
+
if (typeof this.raw.name !== "string" || this.raw.name.length === 0) {
|
|
59
|
+
throw kerror.get("invalid_name_type", this.manifestPath);
|
|
60
|
+
}
|
|
61
|
+
this.name = this.raw.name;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
throw kerror.get("missing_name", this.manifestPath);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* This object can be stringified and exported, most notably by the
|
|
69
|
+
* server:info API action
|
|
70
|
+
* It's important that only relevant properties are stringified, to
|
|
71
|
+
* prevent circular JSONs (especially with the kuzzle object ref) and
|
|
72
|
+
* to prevent leaking important information
|
|
73
|
+
*
|
|
74
|
+
* @returns {Object}
|
|
75
|
+
*/
|
|
76
|
+
toJSON() {
|
|
77
|
+
return {
|
|
78
|
+
kuzzleVersion: this.kuzzleVersion,
|
|
79
|
+
name: this.name,
|
|
80
|
+
path: this.path,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
module.exports = AbstractManifest;
|
|
85
|
+
//# sourceMappingURL=abstractManifest.js.map
|
|
@@ -0,0 +1,80 @@
|
|
|
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 nativeControllers = require("../../../api/controllers");
|
|
23
|
+
class ImpersonatedSDK {
|
|
24
|
+
constructor(kuid, options = {}) {
|
|
25
|
+
this.kuid = kuid;
|
|
26
|
+
this.checkRights = options.checkRights || false;
|
|
27
|
+
for (const controller of Object.keys(nativeControllers)) {
|
|
28
|
+
// @todo in the future, native controller names should be normalized to sdk naming
|
|
29
|
+
const controllerName = controller
|
|
30
|
+
.replace("Controller", "")
|
|
31
|
+
.replace("MemoryStorage", "ms")
|
|
32
|
+
.toLowerCase();
|
|
33
|
+
const controllerProxy = `${controllerName}Proxy`;
|
|
34
|
+
if (!global.app.sdk[controllerName]) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
// Lazily wrap in runtime; native 'sdk' controllers and induce custom 'query' beaviour
|
|
38
|
+
Reflect.defineProperty(this, controllerName, {
|
|
39
|
+
get: () => {
|
|
40
|
+
// If the requested controller has not yet been proxied
|
|
41
|
+
if (!this[controllerProxy]) {
|
|
42
|
+
// Create a proxy object to inject our local 'query' behaviour
|
|
43
|
+
// in the underlying base 'sdk' action methods so we can send
|
|
44
|
+
// impersonation configuration (kuid & checkRights) to the funnel
|
|
45
|
+
this[controllerProxy] = new Proxy(global.app.sdk[controllerName], {
|
|
46
|
+
get: (controllerInstance, actionName) => {
|
|
47
|
+
const customContext = {
|
|
48
|
+
kuzzle: global.app.sdk,
|
|
49
|
+
query: (request, opts) => {
|
|
50
|
+
request.controller = controllerName;
|
|
51
|
+
// Call the 'ImpersonatedSdk.query' method instead
|
|
52
|
+
return this.query(request, opts);
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
// Make sure we bring any local methods into our new custom context
|
|
56
|
+
Object.getOwnPropertyNames(Object.getPrototypeOf(global.app.sdk[controllerName])).forEach((localMethod) => {
|
|
57
|
+
if (!["constructor", "query"].includes(localMethod)) {
|
|
58
|
+
customContext[localMethod] =
|
|
59
|
+
controllerInstance[localMethod];
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// Return the original SDK action method AND also bind our merged custom context
|
|
63
|
+
// containing our 'query' method and any original local methods
|
|
64
|
+
return controllerInstance[actionName].bind(customContext);
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return this[controllerProxy];
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
query(request, options = {}) {
|
|
74
|
+
request.__kuid__ = this.kuid;
|
|
75
|
+
request.__checkRights__ = this.checkRights;
|
|
76
|
+
return global.app.sdk.query(request, options);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
module.exports = ImpersonatedSDK;
|
|
80
|
+
//# sourceMappingURL=impersonatedSdk.js.map
|
|
@@ -31,8 +31,8 @@ export declare class Store {
|
|
|
31
31
|
updateByQuery: (...args: any[]) => Promise<any>;
|
|
32
32
|
updateCollection: (...args: any[]) => Promise<any>;
|
|
33
33
|
updateMapping: (...args: any[]) => Promise<any>;
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
index: string;
|
|
35
|
+
scope: storeScopeEnum;
|
|
36
36
|
private readonly logger;
|
|
37
37
|
constructor(index: string, scope: storeScopeEnum);
|
|
38
38
|
/**
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Request, RequestContext } from "../../api/request";
|
|
3
|
+
type StatsMaps = {
|
|
4
|
+
completedRequests: Map<string, number>;
|
|
5
|
+
connections: Map<string, number>;
|
|
6
|
+
failedRequests: Map<string, number>;
|
|
7
|
+
ongoingRequests: Map<string, number>;
|
|
8
|
+
};
|
|
9
|
+
type SerializableStats = {
|
|
10
|
+
completedRequests: Record<string, number>;
|
|
11
|
+
connections: Record<string, number>;
|
|
12
|
+
failedRequests: Record<string, number>;
|
|
13
|
+
ongoingRequests: Record<string, number>;
|
|
14
|
+
};
|
|
15
|
+
type StatsFrame = SerializableStats & {
|
|
16
|
+
timestamp: number;
|
|
17
|
+
};
|
|
18
|
+
type StatsResponse = {
|
|
19
|
+
hits: StatsFrame[];
|
|
20
|
+
total: number;
|
|
21
|
+
};
|
|
22
|
+
type LastStatsResponse = StatsFrame | (StatsMaps & {
|
|
23
|
+
timestamp: number;
|
|
24
|
+
});
|
|
25
|
+
/**
|
|
26
|
+
* @class Statistics
|
|
27
|
+
* @param {Kuzzle} kuzzle
|
|
28
|
+
*/
|
|
29
|
+
export default class Statistics {
|
|
30
|
+
private cacheKeyPrefix;
|
|
31
|
+
enabled: boolean;
|
|
32
|
+
ttl: number;
|
|
33
|
+
interval: number;
|
|
34
|
+
lastFrame: number | null;
|
|
35
|
+
timer: NodeJS.Timeout | null;
|
|
36
|
+
currentStats: StatsMaps;
|
|
37
|
+
private readonly logger;
|
|
38
|
+
constructor();
|
|
39
|
+
/**
|
|
40
|
+
* Start recording a new request
|
|
41
|
+
*
|
|
42
|
+
* @param {Request} request
|
|
43
|
+
*/
|
|
44
|
+
startRequest(request?: Request): void;
|
|
45
|
+
/**
|
|
46
|
+
* Mark an ongoing request as 'completed'
|
|
47
|
+
*
|
|
48
|
+
* @param {Request} request
|
|
49
|
+
*/
|
|
50
|
+
completedRequest(request?: Request): void;
|
|
51
|
+
/**
|
|
52
|
+
* Mark an ongoing request as 'completed'
|
|
53
|
+
*
|
|
54
|
+
* @param {Request} request
|
|
55
|
+
*/
|
|
56
|
+
failedRequest(request?: Request): void;
|
|
57
|
+
/**
|
|
58
|
+
* Register a newly created connection
|
|
59
|
+
*
|
|
60
|
+
* @param {RequestContext} requestContext
|
|
61
|
+
*/
|
|
62
|
+
newConnection(requestContext: RequestContext): void;
|
|
63
|
+
/**
|
|
64
|
+
* Removes a connection from the statistics
|
|
65
|
+
*
|
|
66
|
+
* @param {RequestContext} requestContext
|
|
67
|
+
*/
|
|
68
|
+
dropConnection(requestContext: RequestContext): void;
|
|
69
|
+
/**
|
|
70
|
+
* Gets stored statistics frames from a date
|
|
71
|
+
*
|
|
72
|
+
* @returns {Promise}
|
|
73
|
+
*/
|
|
74
|
+
getLastStats(): Promise<LastStatsResponse>;
|
|
75
|
+
/**
|
|
76
|
+
* Gets the last saved statistics frame from a date
|
|
77
|
+
*
|
|
78
|
+
* @param {Request} request
|
|
79
|
+
* @returns {Promise<Object>}
|
|
80
|
+
*/
|
|
81
|
+
getStats(request?: Request): Promise<StatsResponse>;
|
|
82
|
+
/**
|
|
83
|
+
* Gets all the saved statistics
|
|
84
|
+
*
|
|
85
|
+
* @returns {Promise<Object>}
|
|
86
|
+
*/
|
|
87
|
+
getAllStats(): Promise<StatsResponse>;
|
|
88
|
+
/**
|
|
89
|
+
* Init statistics component
|
|
90
|
+
*/
|
|
91
|
+
init(): void;
|
|
92
|
+
writeStats(): Promise<void>;
|
|
93
|
+
}
|
|
94
|
+
export {};
|