kuzzle 2.49.1 → 2.50.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/copy-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 +119 -0
- package/package.json +44 -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,405 @@
|
|
|
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 { difference } = require("lodash");
|
|
23
|
+
const Bluebird = require("bluebird");
|
|
24
|
+
const kerror = require("../../kerror");
|
|
25
|
+
const actionEnum = require("./actionEnum");
|
|
26
|
+
const { koncordeTest } = require("../../util/koncordeCompat");
|
|
27
|
+
const { DocumentNotification, ServerNotification, UserNotification, } = require("./notification");
|
|
28
|
+
/**
|
|
29
|
+
* Notification are meant to be dispatched on "channels" created when subscribing.
|
|
30
|
+
* But some notification like TokenExpired don't have a specific channel to be received on,
|
|
31
|
+
* so we need a constant channel name to send Kuzzle notification without having to subscribe.
|
|
32
|
+
*/
|
|
33
|
+
const KUZZLE_NOTIFICATION_CHANNEL = "kuzzle:notification:server";
|
|
34
|
+
/**
|
|
35
|
+
* @typedef {Object} DocumentChanges
|
|
36
|
+
* @property {string} _id of the document
|
|
37
|
+
* @property {Object} [_source] of the document
|
|
38
|
+
* @property {Object} [_updatedFields] applied to the document (for updates)
|
|
39
|
+
* @property {boolean} [created] -- tells if this is a CREATE or REPLACE
|
|
40
|
+
* (for actionEnum.WRITE)
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* @class NotifierController
|
|
44
|
+
*/
|
|
45
|
+
class NotifierController {
|
|
46
|
+
constructor(realtimeModule) {
|
|
47
|
+
this.module = realtimeModule;
|
|
48
|
+
this.ttl = global.kuzzle.config.limits.subscriptionDocumentTTL;
|
|
49
|
+
this.logger = global.kuzzle.log.child("core:realtime:notifier");
|
|
50
|
+
}
|
|
51
|
+
async init() {
|
|
52
|
+
/**
|
|
53
|
+
* Low-level document notification method, allocating a new Notification
|
|
54
|
+
* message and dispatching it to a precomputed list of rooms.
|
|
55
|
+
* @param {Array.<string>} rooms - list of koncorde rooms to notify
|
|
56
|
+
* @param {DocumentNotification} notification
|
|
57
|
+
* @param {Object} [opts]
|
|
58
|
+
*/
|
|
59
|
+
global.kuzzle.onAsk("core:realtime:document:dispatch", (rooms, notification, opts) => {
|
|
60
|
+
return this._notifyDocument(rooms, notification, opts);
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Low-level user notification method, allocating a new Notification
|
|
64
|
+
* message and dispatching it to the provided room
|
|
65
|
+
* @param {string} room
|
|
66
|
+
* @param {UserNotification}
|
|
67
|
+
* @param {Object} [opts]
|
|
68
|
+
*/
|
|
69
|
+
global.kuzzle.onAsk("core:realtime:user:sendMessage", (room, notification, opts) => {
|
|
70
|
+
return this._notifyUser(room, notification, opts);
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Notify about document creations, updates, replacements or deletions
|
|
74
|
+
* @param {Request} request
|
|
75
|
+
* @param {notifyActionEnum} action applied to documents
|
|
76
|
+
* @param {Array.<DocumentChanges>} docs
|
|
77
|
+
*/
|
|
78
|
+
global.kuzzle.onAsk("core:realtime:document:mNotify", (request, action, docs) => this.notifyDocuments(request, action, docs));
|
|
79
|
+
/**
|
|
80
|
+
* Notify about document creations, updates, replacements or deletions
|
|
81
|
+
* @param {Request} request
|
|
82
|
+
* @param {notifyActionEnum} action applied to documents
|
|
83
|
+
* @param {DocumentChanges} doc
|
|
84
|
+
*/
|
|
85
|
+
global.kuzzle.onAsk("core:realtime:document:notify", (request, action, doc) => this.notifyDocuments(request, action, [doc]));
|
|
86
|
+
/**
|
|
87
|
+
* Send a "token expired" notification to the target user
|
|
88
|
+
* @param {string} connectionId
|
|
89
|
+
*/
|
|
90
|
+
global.kuzzle.onAsk("core:realtime:tokenExpired:notify", (connectionId) => this.notifyTokenExpired(connectionId));
|
|
91
|
+
/**
|
|
92
|
+
* Publish the provided request content to listening subscribers
|
|
93
|
+
* @param {Request} request
|
|
94
|
+
*/
|
|
95
|
+
global.kuzzle.onAsk("core:realtime:publish", (request) => this.publish(request));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Broadcasts a notification about a document change or a
|
|
99
|
+
* real-time message
|
|
100
|
+
*
|
|
101
|
+
* @param {Array} rooms - Subscribed rooms to notify
|
|
102
|
+
* @param {Request} request - Request at the origin of the notification
|
|
103
|
+
* @param {string} scope - 'in' or 'out'
|
|
104
|
+
* @param {object} content - Document or message
|
|
105
|
+
*
|
|
106
|
+
* @returns {Promise}
|
|
107
|
+
*/
|
|
108
|
+
async notifyDocument(rooms, request, scope, action, content) {
|
|
109
|
+
if (rooms.length === 0) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const notification = DocumentNotification.fromRequest(request, scope, action, content);
|
|
113
|
+
global.kuzzle.emit("core:notify:document", {
|
|
114
|
+
notification,
|
|
115
|
+
rooms,
|
|
116
|
+
});
|
|
117
|
+
await this._notifyDocument(rooms, notification, {
|
|
118
|
+
fromCluster: false,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Broadcast a notification about a user entering or leaving
|
|
123
|
+
* the provided room
|
|
124
|
+
*
|
|
125
|
+
* @param {string} room - Room entered or left
|
|
126
|
+
* @param {Request} request - User (un)subscription request
|
|
127
|
+
* @param {string} scope - 'in' or 'out'
|
|
128
|
+
* @param {object} content - Notification additional informations
|
|
129
|
+
*
|
|
130
|
+
* @returns {Promise}
|
|
131
|
+
*/
|
|
132
|
+
notifyUser(room, request, scope, content) {
|
|
133
|
+
const notification = UserNotification.fromRequest(request, scope, content);
|
|
134
|
+
global.kuzzle.emit("core:notify:user", {
|
|
135
|
+
notification,
|
|
136
|
+
room,
|
|
137
|
+
});
|
|
138
|
+
return this._notifyUser(room, notification, {
|
|
139
|
+
fromCluster: false,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Send a "token expired" notification to the target user
|
|
144
|
+
*
|
|
145
|
+
* @param {string} connectionId - User's connection identifier
|
|
146
|
+
* @returns {Promise}
|
|
147
|
+
*/
|
|
148
|
+
async notifyTokenExpired(connectionId) {
|
|
149
|
+
await this._dispatch("notify:server", [KUZZLE_NOTIFICATION_CHANNEL], // Sending notification on Kuzzle notification channel
|
|
150
|
+
new ServerNotification("TokenExpired", "Authentication Token Expired"), connectionId);
|
|
151
|
+
await this.module.hotelClerk.removeConnection(connectionId);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Publish the content of the provided request to listening subscribers
|
|
155
|
+
*
|
|
156
|
+
* @param {Request} request
|
|
157
|
+
* @returns {Promise.<Object>}
|
|
158
|
+
*/
|
|
159
|
+
publish(request) {
|
|
160
|
+
const rooms = this._test(request);
|
|
161
|
+
if (rooms.length === 0) {
|
|
162
|
+
return Bluebird.resolve(null);
|
|
163
|
+
}
|
|
164
|
+
return this.notifyDocument(rooms, request, "in", "publish", {
|
|
165
|
+
_id: request.input.args._id,
|
|
166
|
+
_source: request.input.body,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Notify about a created document
|
|
171
|
+
*
|
|
172
|
+
* @param {Request} request
|
|
173
|
+
* @param {DocumentChanges} document created
|
|
174
|
+
* @returns {Promise.<Array.<string>>} list of matched rooms
|
|
175
|
+
*/
|
|
176
|
+
async notifyDocumentCreate(request, document) {
|
|
177
|
+
const rooms = this._test(request, document._source, document._id);
|
|
178
|
+
if (rooms.length > 0) {
|
|
179
|
+
await this.notifyDocument(rooms, request, "in", "create", document);
|
|
180
|
+
}
|
|
181
|
+
return rooms;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Notify about a replaced document
|
|
185
|
+
*
|
|
186
|
+
* @param {Request} request
|
|
187
|
+
* @param {DocumentChanges} document
|
|
188
|
+
* @param {string} cache notification content for that document
|
|
189
|
+
* @returns {Promise.<Array.<string>} list of matched rooms
|
|
190
|
+
*/
|
|
191
|
+
async notifyDocumentReplace(request, document, cache = null) {
|
|
192
|
+
const rooms = this._test(request, document._source, document._id);
|
|
193
|
+
if (rooms.length > 0) {
|
|
194
|
+
await this.notifyDocument(rooms, request, "in", "replace", document);
|
|
195
|
+
}
|
|
196
|
+
if (cache !== null) {
|
|
197
|
+
const stopListening = difference(JSON.parse(cache), rooms);
|
|
198
|
+
await this.notifyDocument(stopListening, request, "out", "replace", document);
|
|
199
|
+
}
|
|
200
|
+
return rooms;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Computes document notifications and sends them to subscribed users.
|
|
204
|
+
* @param {Request} request
|
|
205
|
+
* @param {notifyActionEnum} action
|
|
206
|
+
* @param {Array.<DocumentChanges>} documents
|
|
207
|
+
* @return {Promise}
|
|
208
|
+
*/
|
|
209
|
+
async notifyDocuments(request, action, documents) {
|
|
210
|
+
const prefix = getCachePrefix(request);
|
|
211
|
+
let cached = action === actionEnum.REPLACE || action === actionEnum.UPDATE;
|
|
212
|
+
const cacheIds = documents.map((doc) => {
|
|
213
|
+
if ((action === actionEnum.WRITE || action === actionEnum.UPSERT) &&
|
|
214
|
+
!cached) {
|
|
215
|
+
cached = doc.created !== true; // force a bool value if undefined
|
|
216
|
+
}
|
|
217
|
+
return prefix + doc._id;
|
|
218
|
+
});
|
|
219
|
+
const cache = cached
|
|
220
|
+
? await global.kuzzle.ask("core:cache:internal:mget", cacheIds)
|
|
221
|
+
: [];
|
|
222
|
+
const result = await Bluebird.map(documents, (doc, index) => {
|
|
223
|
+
switch (action) {
|
|
224
|
+
case actionEnum.CREATE:
|
|
225
|
+
return this.notifyDocumentCreate(request, doc);
|
|
226
|
+
case actionEnum.DELETE:
|
|
227
|
+
return this.notifyDocumentDelete(request, doc);
|
|
228
|
+
case actionEnum.REPLACE:
|
|
229
|
+
return this.notifyDocumentReplace(request, doc, cache[index]);
|
|
230
|
+
case actionEnum.UPDATE:
|
|
231
|
+
return this.notifyDocumentUpdate(request, doc, cache[index]);
|
|
232
|
+
case actionEnum.UPSERT:
|
|
233
|
+
return doc.created
|
|
234
|
+
? this.notifyDocumentCreate(request, doc)
|
|
235
|
+
: this.notifyDocumentUpdate(request, doc, cache[index]);
|
|
236
|
+
case actionEnum.WRITE:
|
|
237
|
+
return doc.created
|
|
238
|
+
? this.notifyDocumentCreate(request, doc)
|
|
239
|
+
: this.notifyDocumentReplace(request, doc, cache[index]);
|
|
240
|
+
default:
|
|
241
|
+
throw kerror.get("core", "fatal", "assertion_failed", `unknown notify action "${doc.action}"`);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
const toDelete = [];
|
|
245
|
+
await Bluebird.map(result, (rooms, index) => {
|
|
246
|
+
if (rooms.length > 0) {
|
|
247
|
+
return global.kuzzle.ask("core:cache:internal:store", cacheIds[index], JSON.stringify(rooms), { ttl: this.ttl });
|
|
248
|
+
}
|
|
249
|
+
toDelete.push(cacheIds[index]);
|
|
250
|
+
return null;
|
|
251
|
+
});
|
|
252
|
+
if (toDelete.length > 0) {
|
|
253
|
+
await global.kuzzle.ask("core:cache:internal:del", toDelete);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Notify rooms on a document update
|
|
258
|
+
* @param {Request} request
|
|
259
|
+
* @param {DocumentChanges} document
|
|
260
|
+
* @param {string} cache notification content for that document
|
|
261
|
+
* @returns {Promise.<Array.<string>} list of matched rooms
|
|
262
|
+
*/
|
|
263
|
+
async notifyDocumentUpdate(request, document, cache = null) {
|
|
264
|
+
const rooms = this._test(request, document._source, document._id);
|
|
265
|
+
if (rooms.length > 0) {
|
|
266
|
+
await this.notifyDocument(rooms, request, "in", "update", document);
|
|
267
|
+
}
|
|
268
|
+
if (cache !== null) {
|
|
269
|
+
const stopListening = difference(JSON.parse(cache), rooms);
|
|
270
|
+
await this.notifyDocument(stopListening, request, "out", "update", document);
|
|
271
|
+
}
|
|
272
|
+
return rooms;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Notify about a document deletion
|
|
276
|
+
*
|
|
277
|
+
* @param {Request} request
|
|
278
|
+
* @param {DocumentChanges} document
|
|
279
|
+
* @returns {Promise.<Array>} returns an empty array ("no room match anymore")
|
|
280
|
+
*/
|
|
281
|
+
async notifyDocumentDelete(request, document) {
|
|
282
|
+
const rooms = this._test(request, document._source, document._id);
|
|
283
|
+
if (rooms.length > 0) {
|
|
284
|
+
await this.notifyDocument(rooms, request, "out", "delete", document);
|
|
285
|
+
}
|
|
286
|
+
return [];
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Trigger a notify global event and, if accepted by plugins,
|
|
290
|
+
* dispatch the payload to subscribers
|
|
291
|
+
*
|
|
292
|
+
* @param {Array} channels - Subscribers channels to notify
|
|
293
|
+
* @param {Notification.User|Notification.Document|Notification.Server} notification
|
|
294
|
+
* @param {string} [connectionId] - Notify this connection, or broadcast
|
|
295
|
+
* if not provided
|
|
296
|
+
* @param {boolean} [trigger] - If set to true, triggers Kuzzle plugins
|
|
297
|
+
*
|
|
298
|
+
* @returns {Promise}
|
|
299
|
+
*/
|
|
300
|
+
async _dispatch(event, channels, notification, connectionId) {
|
|
301
|
+
try {
|
|
302
|
+
let updated = await global.kuzzle.pipe(event, notification);
|
|
303
|
+
/**
|
|
304
|
+
* @deprecated Should be replaced by `core:realtime:notification:dispatch`
|
|
305
|
+
*/
|
|
306
|
+
updated = await global.kuzzle.pipe("notify:dispatch", updated);
|
|
307
|
+
const updatedInfo = await global.kuzzle.pipe("core:realtime:notification:dispatch:before", {
|
|
308
|
+
channels: channels,
|
|
309
|
+
connectionId: connectionId,
|
|
310
|
+
notification: updated,
|
|
311
|
+
});
|
|
312
|
+
const action = updatedInfo.connectionId ? "notify" : "broadcast";
|
|
313
|
+
global.kuzzle.entryPoint.dispatch(action, {
|
|
314
|
+
channels: updatedInfo.channels,
|
|
315
|
+
connectionId: updatedInfo.connectionId,
|
|
316
|
+
payload: updatedInfo.notification,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
this.logger.error(error);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Broadcasts a notification about a document change or a
|
|
325
|
+
* real-time message.
|
|
326
|
+
*
|
|
327
|
+
* When this method is called from the node who received
|
|
328
|
+
* the request triggering notification, then every channel is notified
|
|
329
|
+
* regardless of the "cluster" option.
|
|
330
|
+
*
|
|
331
|
+
* When this method is called from the cluster synchronization,
|
|
332
|
+
* then only the channels having the "cluster: true" option are notified
|
|
333
|
+
*
|
|
334
|
+
* @param {Array} rooms - Subscribed rooms to notify
|
|
335
|
+
* @param {DocumentNotification} notification
|
|
336
|
+
* @param {object} [options] - fromCluster (true)
|
|
337
|
+
*
|
|
338
|
+
* @returns {Promise}
|
|
339
|
+
*/
|
|
340
|
+
_notifyDocument(rooms, notification, { fromCluster = true } = {}) {
|
|
341
|
+
const channels = [];
|
|
342
|
+
for (const room of rooms) {
|
|
343
|
+
const hotelClerkRoom = this.module.hotelClerk.rooms.get(room);
|
|
344
|
+
if (hotelClerkRoom === undefined) {
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
for (const [channelId, channel] of hotelClerkRoom.channels.entries()) {
|
|
348
|
+
const executeOnNode = fromCluster ? channel.cluster : true;
|
|
349
|
+
const matchScope = channel.scope === "all" || channel.scope === notification.scope;
|
|
350
|
+
if (matchScope && executeOnNode) {
|
|
351
|
+
channels.push(channelId);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
if (channels.length === 0) {
|
|
356
|
+
return Bluebird.resolve();
|
|
357
|
+
}
|
|
358
|
+
return this._dispatch("notify:document", channels, notification);
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Broadcast a notification about a user entering or leaving
|
|
362
|
+
* the provided room
|
|
363
|
+
*
|
|
364
|
+
* @param {string} room - Room entered or left
|
|
365
|
+
* @param {UserNotification} notification
|
|
366
|
+
* @param {object} content - Notification additional informations
|
|
367
|
+
*
|
|
368
|
+
* @returns {Promise}
|
|
369
|
+
*/
|
|
370
|
+
_notifyUser(room, notification, { fromCluster = true } = {}) {
|
|
371
|
+
const channels = [];
|
|
372
|
+
const hotelClerkRoom = this.module.hotelClerk.rooms.get(room);
|
|
373
|
+
if (hotelClerkRoom !== undefined) {
|
|
374
|
+
for (const [id, channel] of hotelClerkRoom.channels.entries()) {
|
|
375
|
+
const match = channel.users === "all" || channel.users === notification.user;
|
|
376
|
+
const executeOnNode = fromCluster ? channel.cluster : true;
|
|
377
|
+
if (executeOnNode && match) {
|
|
378
|
+
channels.push(id);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
if (channels.length === 0) {
|
|
383
|
+
return Bluebird.resolve();
|
|
384
|
+
}
|
|
385
|
+
return this._dispatch("notify:user", channels, notification);
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* DRYification for calls to Koncorde's test method from a Request object
|
|
389
|
+
* @param {Request} request
|
|
390
|
+
* @param {Object} source - document's source
|
|
391
|
+
* @param {String} id
|
|
392
|
+
*
|
|
393
|
+
* @returns {Array.<string>}
|
|
394
|
+
*/
|
|
395
|
+
_test(request, source = null, id = null) {
|
|
396
|
+
return koncordeTest(global.kuzzle.koncorde, request.input.args.index, request.input.args.collection, source || request.input.body || {}, id || request.input.args._id);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
function getCachePrefix(request) {
|
|
400
|
+
// use redis key hash tag
|
|
401
|
+
// (see https://redis.io/topics/cluster-spec#keys-distribution-model)
|
|
402
|
+
return `{notif/${request.input.args.index}/${request.input.args.collection}}/`;
|
|
403
|
+
}
|
|
404
|
+
module.exports = NotifierController;
|
|
405
|
+
//# sourceMappingURL=notifier.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export = SecurityModule;
|
|
2
|
+
declare class SecurityModule {
|
|
3
|
+
role: RoleRepository;
|
|
4
|
+
profile: ProfileRepository;
|
|
5
|
+
token: TokenRepository;
|
|
6
|
+
user: UserRepository;
|
|
7
|
+
loader: SecurityLoader;
|
|
8
|
+
init(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
import RoleRepository = require("./roleRepository");
|
|
11
|
+
import { ProfileRepository } from "./profileRepository";
|
|
12
|
+
import { TokenRepository } from "./tokenRepository";
|
|
13
|
+
import UserRepository = require("./userRepository");
|
|
14
|
+
import SecurityLoader = require("./securityLoader");
|
|
@@ -18,31 +18,27 @@
|
|
|
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 RoleRepository = require("./roleRepository");
|
|
25
23
|
const { ProfileRepository } = require("./profileRepository");
|
|
26
24
|
const { TokenRepository } = require("./tokenRepository");
|
|
27
25
|
const UserRepository = require("./userRepository");
|
|
28
26
|
const SecurityLoader = require("./securityLoader");
|
|
29
|
-
|
|
30
27
|
class SecurityModule {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
28
|
+
constructor() {
|
|
29
|
+
this.role = new RoleRepository(this);
|
|
30
|
+
this.profile = new ProfileRepository(this);
|
|
31
|
+
this.token = new TokenRepository();
|
|
32
|
+
this.user = new UserRepository(this);
|
|
33
|
+
this.loader = new SecurityLoader();
|
|
34
|
+
}
|
|
35
|
+
async init() {
|
|
36
|
+
await this.role.init();
|
|
37
|
+
await this.profile.init();
|
|
38
|
+
await this.token.init();
|
|
39
|
+
await this.user.init();
|
|
40
|
+
await this.loader.init();
|
|
41
|
+
}
|
|
46
42
|
}
|
|
47
|
-
|
|
48
43
|
module.exports = SecurityModule;
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
export = RoleRepository;
|
|
2
|
+
/**
|
|
3
|
+
* @class RoleRepository
|
|
4
|
+
* @extends ObjectRepository
|
|
5
|
+
*/
|
|
6
|
+
declare class RoleRepository extends ObjectRepository<any> {
|
|
7
|
+
/**
|
|
8
|
+
* @constructor
|
|
9
|
+
* @param {SecurityModule} securityModule
|
|
10
|
+
*/
|
|
11
|
+
constructor(securityModule: SecurityModule);
|
|
12
|
+
module: SecurityModule;
|
|
13
|
+
ObjectConstructor: typeof Role;
|
|
14
|
+
roles: Map<any, any>;
|
|
15
|
+
logger: import("../../kuzzle/Logger").Logger;
|
|
16
|
+
init(): void;
|
|
17
|
+
/**
|
|
18
|
+
* From a list of role ids, retrieves the matching Role objects.
|
|
19
|
+
*
|
|
20
|
+
* @param {Array} ids The role ids to load
|
|
21
|
+
* @param {Object} options - resetCache (false)
|
|
22
|
+
* @returns {Promise.<Array.<Role>>}
|
|
23
|
+
*/
|
|
24
|
+
loadRoles(ids: any[]): Promise<Array<Role>>;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a new role, or create/replace a role
|
|
27
|
+
*
|
|
28
|
+
* @param {String} id
|
|
29
|
+
* @param {Object} content
|
|
30
|
+
* @param {Object} [opts]
|
|
31
|
+
* @returns {Role}
|
|
32
|
+
*/
|
|
33
|
+
_createOrReplace(id: string, content: any, { force, method, refresh, userId }?: any): Role;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a new role
|
|
36
|
+
*
|
|
37
|
+
* @param {String} id
|
|
38
|
+
* @param {Object} content
|
|
39
|
+
* @param {Object} [opts]
|
|
40
|
+
* @returns {Role}
|
|
41
|
+
*/
|
|
42
|
+
create(id: string, content: any, opts?: any): Role;
|
|
43
|
+
/**
|
|
44
|
+
* Creates or replaces a role
|
|
45
|
+
*
|
|
46
|
+
* @param {String} id
|
|
47
|
+
* @param {Object} content
|
|
48
|
+
* @param {Object} [opts]
|
|
49
|
+
* @returns {Role}
|
|
50
|
+
*/
|
|
51
|
+
createOrReplace(id: string, content: any, opts?: any): Role;
|
|
52
|
+
/**
|
|
53
|
+
* Updates a role (replaces the entire content)
|
|
54
|
+
*
|
|
55
|
+
* @todo (breaking change) make this function able to handle partial updates
|
|
56
|
+
* instead of replacing the entire role content (hint: _.merge)
|
|
57
|
+
*
|
|
58
|
+
* @param {String} id
|
|
59
|
+
* @param {Object} content
|
|
60
|
+
* @param {Object} [opts]
|
|
61
|
+
* @returns {Promise}
|
|
62
|
+
*/
|
|
63
|
+
update(id: string, content: any, { force, refresh, retryOnConflict, userId }?: any): Promise<any>;
|
|
64
|
+
/**
|
|
65
|
+
* Get from database the document that represent the role given in parameter
|
|
66
|
+
*
|
|
67
|
+
* @param {string} id
|
|
68
|
+
* @returns {Promise.<Role>} role
|
|
69
|
+
* @throws {NotFoundError} If the corresponding role doesn't exist
|
|
70
|
+
*/
|
|
71
|
+
load(id: string): Promise<Role>;
|
|
72
|
+
/**
|
|
73
|
+
* @override
|
|
74
|
+
*/
|
|
75
|
+
override loadOneFromDatabase(id: any): Promise<any>;
|
|
76
|
+
/**
|
|
77
|
+
* @param {Object} body Search body containing either "query" or "controllers"
|
|
78
|
+
* @param {Object} options
|
|
79
|
+
*/
|
|
80
|
+
searchRole(body: any, { from, size }?: any): Promise<{
|
|
81
|
+
hits: any[];
|
|
82
|
+
total: any;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Given a Role object, validates its definition and if OK, persist it to the database.
|
|
86
|
+
*
|
|
87
|
+
* @param {Role} role
|
|
88
|
+
* @param {object} [options] The persistence options
|
|
89
|
+
* @returns Promise
|
|
90
|
+
*/
|
|
91
|
+
validateAndSaveRole(role: Role, options?: object): Promise<any>;
|
|
92
|
+
/**
|
|
93
|
+
* Given a Role object, checks if its controllers and actions exist.
|
|
94
|
+
*
|
|
95
|
+
* @param {Role} role
|
|
96
|
+
*/
|
|
97
|
+
checkRoleNativeRights(role: Role): void;
|
|
98
|
+
/**
|
|
99
|
+
* Given a Role object, checks if its controllers and actions exist in plugins.
|
|
100
|
+
*
|
|
101
|
+
* @param {Role} role
|
|
102
|
+
* @param {Force} force
|
|
103
|
+
*/
|
|
104
|
+
checkRolePluginsRights(role: Role, { force, forceWarn }?: Force): void;
|
|
105
|
+
/**
|
|
106
|
+
* Fetching roles and check for each of them for invalid plugin rights.
|
|
107
|
+
* If there are some, Kuzzle will log a warning.
|
|
108
|
+
*/
|
|
109
|
+
sanityCheck(): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Deletes a role
|
|
112
|
+
*
|
|
113
|
+
* @param {String} id
|
|
114
|
+
* @param {object} [options]
|
|
115
|
+
* @returns Promise
|
|
116
|
+
*/
|
|
117
|
+
deleteById(id: string, options?: object): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* @override
|
|
120
|
+
*/
|
|
121
|
+
override delete(role: any, { refresh }?: {
|
|
122
|
+
refresh?: string;
|
|
123
|
+
}): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* From a Role object, returns an object ready to be persisted
|
|
126
|
+
*
|
|
127
|
+
* @param {Role} role
|
|
128
|
+
* @returns {object}
|
|
129
|
+
*/
|
|
130
|
+
serializeToDatabase(role: Role): object;
|
|
131
|
+
/**
|
|
132
|
+
* @override
|
|
133
|
+
*/
|
|
134
|
+
override truncate(opts: any): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* Invalidate the cache entries for the given role. If none is provided,
|
|
137
|
+
* the entire cache is emptied.
|
|
138
|
+
* @param {string} [roleId]
|
|
139
|
+
*/
|
|
140
|
+
invalidate(roleId?: string): void;
|
|
141
|
+
}
|
|
142
|
+
import { ObjectRepository } from "../shared/ObjectRepository";
|
|
143
|
+
import { Role } from "../../model/security/role";
|