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
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const Redis = require("../../service/cache/redis");
|
|
4
|
-
|
|
5
|
-
class IDCardRenewer {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.redis = null;
|
|
8
|
-
this.refreshTimer = null;
|
|
9
|
-
this.nodeIdKey = null;
|
|
10
|
-
this.refreshDelay = 2000;
|
|
11
|
-
this.disposed = true; // Disposed until initialized
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async init(config) {
|
|
15
|
-
if (!this.disposed) {
|
|
16
|
-
return; // Already initialized
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
this.disposed = false;
|
|
20
|
-
this.nodeIdKey = config.nodeIdKey;
|
|
21
|
-
this.refreshDelay = config.refreshDelay || 2000;
|
|
22
|
-
this.refreshMultiplier = config.refreshMultiplier;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Since we do not have access to the Kuzzle Context we can't use kuzzle.ask('core:cache:internal:*',...),
|
|
26
|
-
* so we need to have an instance of Redis similar to the one used in the Cache Engine
|
|
27
|
-
*/
|
|
28
|
-
try {
|
|
29
|
-
const redisConf = config.redis || {};
|
|
30
|
-
await this.initRedis(redisConf.config, redisConf.name);
|
|
31
|
-
} catch (error) {
|
|
32
|
-
// eslint-disable-next-line no-console
|
|
33
|
-
console.error(
|
|
34
|
-
`Failed to connect to redis, could not refresh ID card: ${error.message}`,
|
|
35
|
-
);
|
|
36
|
-
this.parentPort.postMessage({
|
|
37
|
-
error: `Failed to connect to redis, could not refresh ID card: ${error.message}`,
|
|
38
|
-
});
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Early renew, otherwise we need to wait the refreshDelay before the first ID Card renewal
|
|
44
|
-
* which could be enough to make the ID Card expire.
|
|
45
|
-
*/
|
|
46
|
-
await this.renewIDCard();
|
|
47
|
-
if (!this.disposed) {
|
|
48
|
-
this.refreshTimer = setInterval(
|
|
49
|
-
this.renewIDCard.bind(this),
|
|
50
|
-
this.refreshDelay,
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Notify that the worker is running and updating the ID Card
|
|
55
|
-
process.send({ initialized: true });
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async initRedis(config, name) {
|
|
59
|
-
const redis = new Redis(config, name);
|
|
60
|
-
await redis.init();
|
|
61
|
-
this.redis = redis;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
async renewIDCard() {
|
|
65
|
-
if (this.disposed) {
|
|
66
|
-
return; // Do not refresh ID Card when worker has been disposed
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
try {
|
|
70
|
-
const refreshed = await this.redis.commands.pexpire(
|
|
71
|
-
this.nodeIdKey,
|
|
72
|
-
this.refreshDelay * this.refreshMultiplier,
|
|
73
|
-
);
|
|
74
|
-
// Unable to refresh the key in time before it expires
|
|
75
|
-
// => this node is too slow, we need to remove it from the cluster
|
|
76
|
-
if (refreshed === 0) {
|
|
77
|
-
await this.dispose();
|
|
78
|
-
process.send({
|
|
79
|
-
error: "Node too slow: ID card expired",
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
} catch (error) {
|
|
83
|
-
await this.dispose();
|
|
84
|
-
process.send({
|
|
85
|
-
error: `Failed to refresh ID Card: ${error.message}`,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
async dispose() {
|
|
91
|
-
if (this.disposed) {
|
|
92
|
-
return; // Already disposed
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
this.disposed = true;
|
|
96
|
-
|
|
97
|
-
clearInterval(this.refreshTimer);
|
|
98
|
-
this.refreshTimer = null;
|
|
99
|
-
|
|
100
|
-
// If the worker is disposed before it had time to starts, redis service
|
|
101
|
-
// may not have been initialized
|
|
102
|
-
if (!this.redis) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
try {
|
|
107
|
-
await this.redis.commands.del(this.nodeIdKey);
|
|
108
|
-
} catch (error) {
|
|
109
|
-
// eslint-disable-next-line no-console
|
|
110
|
-
console.error(
|
|
111
|
-
`Could not delete key '${this.nodeIdKey}' from redis: ${error.message}`,
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const idCardRenewer = new IDCardRenewer();
|
|
118
|
-
|
|
119
|
-
process.on("message", async (message) => {
|
|
120
|
-
if (message.action === "start") {
|
|
121
|
-
// Simulate basic global Kuzzle Context
|
|
122
|
-
global.kuzzle = { ...message.kuzzle };
|
|
123
|
-
global.kuzzle.log = {
|
|
124
|
-
debug: console.debug, // eslint-disable-line no-console
|
|
125
|
-
error: console.error, // eslint-disable-line no-console
|
|
126
|
-
info: console.info, // eslint-disable-line no-console
|
|
127
|
-
warn: console.warn, // eslint-disable-line no-console
|
|
128
|
-
};
|
|
129
|
-
// Should never throw
|
|
130
|
-
await idCardRenewer.init(message);
|
|
131
|
-
} else if (message.action === "dispose") {
|
|
132
|
-
// Should never throw
|
|
133
|
-
await idCardRenewer.dispose();
|
|
134
|
-
process.exit(0);
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
// When the IPC is closed on the main process side
|
|
139
|
-
process.on("disconnect", async () => {
|
|
140
|
-
await idCardRenewer.dispose();
|
|
141
|
-
process.exit();
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
module.exports = { IDCardRenewer };
|
package/lib/config/index.js
DELETED
|
@@ -1,351 +0,0 @@
|
|
|
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
|
-
|
|
22
|
-
"use strict";
|
|
23
|
-
|
|
24
|
-
const assert = require("assert");
|
|
25
|
-
|
|
26
|
-
const rc = require("rc");
|
|
27
|
-
const defaultConfig = require("./default.config");
|
|
28
|
-
const packageJson = require("../../package.json");
|
|
29
|
-
const kerror = require("../kerror").wrap("core", "configuration");
|
|
30
|
-
const { isPlainObject } = require("../util/safeObject");
|
|
31
|
-
const bytes = require("../util/bytes");
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Loads, interprets and checks configuration files
|
|
35
|
-
* @returns {object}
|
|
36
|
-
*/
|
|
37
|
-
function loadConfig() {
|
|
38
|
-
let config;
|
|
39
|
-
|
|
40
|
-
try {
|
|
41
|
-
config = rc("kuzzle", defaultConfig.default);
|
|
42
|
-
} catch (e) {
|
|
43
|
-
throw kerror.get("cannot_parse", e.message);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
config = unstringify(config);
|
|
47
|
-
|
|
48
|
-
checkLimitsConfig(config);
|
|
49
|
-
checkHttpOptions(config);
|
|
50
|
-
checkWebSocketOptions(config);
|
|
51
|
-
checkClusterOptions(config);
|
|
52
|
-
|
|
53
|
-
config.internal = {
|
|
54
|
-
hash: {
|
|
55
|
-
seed: Buffer.from("^m&mOISKBvb1xpl1mRsrylaQXpjb&IJX"),
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
preprocessHttpOptions(config);
|
|
60
|
-
preprocessProtocolsOptions(config);
|
|
61
|
-
preprocessRedisOptions(config.services.internalCache);
|
|
62
|
-
preprocessRedisOptions(config.services.memoryStorage);
|
|
63
|
-
|
|
64
|
-
// Injects the current Kuzzle version
|
|
65
|
-
config.version = packageJson.version;
|
|
66
|
-
|
|
67
|
-
return config;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* RC params can be overriden using environment variables,
|
|
72
|
-
* in which case all values are passed as strings.
|
|
73
|
-
*
|
|
74
|
-
* When dealing with configuration, we can safely assume the expected
|
|
75
|
-
* correct type
|
|
76
|
-
*
|
|
77
|
-
* @param {object} cfg - configuration loaded using RC
|
|
78
|
-
* @returns {object} correctly typed configuration
|
|
79
|
-
*/
|
|
80
|
-
function unstringify(cfg) {
|
|
81
|
-
Object.keys(cfg)
|
|
82
|
-
.filter(
|
|
83
|
-
(k) =>
|
|
84
|
-
!/version$/i.test(k) &&
|
|
85
|
-
(typeof cfg[k] === "string" || cfg[k] instanceof Object),
|
|
86
|
-
)
|
|
87
|
-
.forEach((k) => {
|
|
88
|
-
if (typeof cfg[k] === "string") {
|
|
89
|
-
if (cfg[k] === "true") {
|
|
90
|
-
cfg[k] = true;
|
|
91
|
-
} else if (cfg[k] === "false") {
|
|
92
|
-
cfg[k] = false;
|
|
93
|
-
} else if (cfg[k].startsWith("*json:")) {
|
|
94
|
-
try {
|
|
95
|
-
cfg[k] = JSON.parse(cfg[k].replace(/^\*json:/, ""));
|
|
96
|
-
} catch (e) {
|
|
97
|
-
throw kerror.get(
|
|
98
|
-
"cannot_parse",
|
|
99
|
-
`the key "${k}" does not contain a valid stringified JSON (${cfg[k]})`,
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
} else if (/^(-|\+)?([0-9]+)$/.test(cfg[k])) {
|
|
103
|
-
cfg[k] = Number.parseInt(cfg[k]);
|
|
104
|
-
} else if (/^(-|\+)?([0-9]+(\.[0-9]+)?)$/.test(cfg[k])) {
|
|
105
|
-
cfg[k] = parseFloat(cfg[k]);
|
|
106
|
-
}
|
|
107
|
-
} else {
|
|
108
|
-
cfg[k] = unstringify(cfg[k]);
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
return cfg;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Checks the "limits" section of the provided configuration object.
|
|
117
|
-
* Throw warnings if invalid configuration are detected and auto-correct
|
|
118
|
-
* them if necessary
|
|
119
|
-
*
|
|
120
|
-
* @param {object} cfg
|
|
121
|
-
*/
|
|
122
|
-
function checkLimitsConfig(cfg) {
|
|
123
|
-
const limits = [
|
|
124
|
-
"concurrentRequests",
|
|
125
|
-
"documentsFetchCount",
|
|
126
|
-
"documentsWriteCount",
|
|
127
|
-
"loginsPerSecond",
|
|
128
|
-
"requestsBufferSize",
|
|
129
|
-
"requestsBufferWarningThreshold",
|
|
130
|
-
"subscriptionConditionsCount",
|
|
131
|
-
"subscriptionMinterms",
|
|
132
|
-
"subscriptionRooms",
|
|
133
|
-
"subscriptionDocumentTTL",
|
|
134
|
-
];
|
|
135
|
-
const canBeZero = [
|
|
136
|
-
"subscriptionMinterms",
|
|
137
|
-
"subscriptionRooms",
|
|
138
|
-
"subscriptionDocumentTTL",
|
|
139
|
-
];
|
|
140
|
-
|
|
141
|
-
if (!isPlainObject(cfg.limits)) {
|
|
142
|
-
throw kerror.get("invalid_type", "limits", "object");
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
for (const opt of limits) {
|
|
146
|
-
if (typeof cfg.limits[opt] !== "number") {
|
|
147
|
-
throw kerror.get("invalid_type", `limits.${opt}`, "number");
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if (
|
|
151
|
-
cfg.limits[opt] < 0 ||
|
|
152
|
-
(cfg.limits[opt] === 0 && !canBeZero.includes(opt))
|
|
153
|
-
) {
|
|
154
|
-
const allowed = `>= ${canBeZero.includes(opt) ? "0" : "1"}`;
|
|
155
|
-
throw kerror.get("out_of_range", `limits.${opt}`, allowed);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
if (cfg.limits.concurrentRequests >= cfg.limits.requestsBufferSize) {
|
|
160
|
-
throw kerror.get(
|
|
161
|
-
"out_of_range",
|
|
162
|
-
"limits.concurrentRequests",
|
|
163
|
-
'lower than "limits.requestsBufferSize"',
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
if (
|
|
168
|
-
cfg.limits.requestsBufferWarningThreshold < cfg.limits.concurrentRequests ||
|
|
169
|
-
cfg.limits.requestsBufferWarningThreshold > cfg.limits.requestsBufferSize
|
|
170
|
-
) {
|
|
171
|
-
throw kerror.get(
|
|
172
|
-
"out_of_range",
|
|
173
|
-
"limits.requestsBufferWarningThreshold",
|
|
174
|
-
"[limits.concurrentRequests, limits.requestsBufferSize]",
|
|
175
|
-
);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
function checkWebSocketOptions(config) {
|
|
180
|
-
const cfg = config.server.protocols.websocket;
|
|
181
|
-
|
|
182
|
-
if (cfg === undefined) {
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
assert(
|
|
187
|
-
typeof cfg.enabled === "boolean",
|
|
188
|
-
`[websocket] "enabled" parameter: invalid value "${cfg.enabled}" (boolean expected)`,
|
|
189
|
-
);
|
|
190
|
-
assert(
|
|
191
|
-
Number.isInteger(cfg.idleTimeout) && cfg.idleTimeout >= 0,
|
|
192
|
-
`[websocket] "idleTimeout" parameter: invalid value "${cfg.idleTimeout}" (integer >= 1000 expected)`,
|
|
193
|
-
);
|
|
194
|
-
assert(
|
|
195
|
-
Number.isInteger(cfg.rateLimit) && cfg.rateLimit >= 0,
|
|
196
|
-
`[websocket] "rateLimit" parameter: invalid value "${cfg.rateLimit}" (integer >= 0 expected)`,
|
|
197
|
-
);
|
|
198
|
-
assert(
|
|
199
|
-
typeof cfg.compression === "boolean",
|
|
200
|
-
`[websocket] "compression" parameter: invalid value "${cfg.compression}" (boolean expected)`,
|
|
201
|
-
);
|
|
202
|
-
assert(
|
|
203
|
-
typeof cfg.sendPingsAutomatically === "boolean",
|
|
204
|
-
`[websocket] "sendPingsAutomatically" parameter: invalid value "${cfg.sendPingsAutomatically}" (boolean expected)`,
|
|
205
|
-
);
|
|
206
|
-
assert(
|
|
207
|
-
typeof cfg.resetIdleTimeoutOnSend === "boolean",
|
|
208
|
-
`[websocket] "resetIdleTimeoutOnSend" parameter: invalid value "${cfg.resetIdleTimeoutOnSend}" (boolean expected)`,
|
|
209
|
-
);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
function checkHttpOptions(config) {
|
|
213
|
-
const cfg = config.server.protocols.http;
|
|
214
|
-
|
|
215
|
-
if (cfg === undefined) {
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
assert(
|
|
220
|
-
typeof config.http.accessControlAllowOrigin === "string" ||
|
|
221
|
-
Array.isArray(config.http.accessControlAllowOrigin),
|
|
222
|
-
`[http] "accessControlAllowOrigin" parameter: invalid value "${config.http.accessControlAllowOrigin}" (array or string expected)`,
|
|
223
|
-
);
|
|
224
|
-
assert(
|
|
225
|
-
typeof config.http.accessControlAllowOriginUseRegExp === "boolean",
|
|
226
|
-
`[http] "accessControlAllowOriginUseRegExp" parameter: invalid value "${cfg.accessControlAllowOriginUseRegExp}" (boolean expected)`,
|
|
227
|
-
);
|
|
228
|
-
assert(
|
|
229
|
-
typeof cfg.enabled === "boolean",
|
|
230
|
-
`[http] "enabled" parameter: invalid value "${cfg.enabled}" (boolean expected)`,
|
|
231
|
-
);
|
|
232
|
-
assert(
|
|
233
|
-
typeof cfg.allowCompression === "boolean",
|
|
234
|
-
`[http] "allowCompression" parameter: invalid value "${cfg.allowCompression}" (boolean expected)`,
|
|
235
|
-
);
|
|
236
|
-
assert(
|
|
237
|
-
Number.isInteger(cfg.maxEncodingLayers) && cfg.maxEncodingLayers >= 1,
|
|
238
|
-
`[http] "maxEncodingLayers" parameter: invalid value "${cfg.maxEncodingLayers}" (integer >= 1 expected)`,
|
|
239
|
-
);
|
|
240
|
-
|
|
241
|
-
const maxFormFileSize = bytes(cfg.maxFormFileSize);
|
|
242
|
-
assert(
|
|
243
|
-
Number.isInteger(maxFormFileSize) && maxFormFileSize >= 0,
|
|
244
|
-
`[http] "maxFormFileSize" parameter: cannot parse "${cfg.maxFormFileSize}"`,
|
|
245
|
-
);
|
|
246
|
-
cfg.maxFormFileSize = maxFormFileSize;
|
|
247
|
-
|
|
248
|
-
assert(
|
|
249
|
-
typeof config.http.cookieAuthentication === "boolean",
|
|
250
|
-
`[http] "cookieAuthentication" parameter: invalid value "${config.http.cookieAuthentication}" (boolean expected)`,
|
|
251
|
-
);
|
|
252
|
-
assert(
|
|
253
|
-
Array.isArray(cfg.additionalContentTypes) &&
|
|
254
|
-
cfg.additionalContentTypes.every((ct) => typeof ct === "string"),
|
|
255
|
-
`[http] "additionalContentTypes" parameter: invalid value "${cfg.additionalContentTypes}" (array of strings expected)`,
|
|
256
|
-
);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
function checkClusterOptions(config) {
|
|
260
|
-
const cfg = config.cluster;
|
|
261
|
-
|
|
262
|
-
for (const prop of [
|
|
263
|
-
"heartbeat",
|
|
264
|
-
"joinTimeout",
|
|
265
|
-
"minimumNodes",
|
|
266
|
-
"activityDepth",
|
|
267
|
-
"syncTimeout",
|
|
268
|
-
]) {
|
|
269
|
-
assert(
|
|
270
|
-
typeof cfg[prop] === "number" && cfg[prop] > 0,
|
|
271
|
-
`[CONFIG] kuzzlerc.cluster.${prop}: value must be a number greater than 0`,
|
|
272
|
-
);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
assert(
|
|
276
|
-
cfg.syncTimeout < cfg.joinTimeout,
|
|
277
|
-
"[CONFIG] kuzzlerc.cluster.syncTimeout: value must be lower than kuzzlerc.cluster.joinTimeout",
|
|
278
|
-
);
|
|
279
|
-
|
|
280
|
-
for (const prop of ["command", "sync"]) {
|
|
281
|
-
assert(
|
|
282
|
-
typeof cfg.ports[prop] === "number" && cfg.ports[prop] > 0,
|
|
283
|
-
`[CONFIG] kuzzlerc.cluster.ports.${prop}: value must be a number greater than 0`,
|
|
284
|
-
);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
assert(
|
|
288
|
-
typeof cfg.ipv6 === "boolean",
|
|
289
|
-
"[CONFIG] kuzzlerc.cluster.ipv6: boolean expected",
|
|
290
|
-
);
|
|
291
|
-
// If config is passed with env variable, ip cannot be the value null
|
|
292
|
-
// but only blank string or the string "null"
|
|
293
|
-
if (`${cfg.ip}`.length === 0 || cfg.ip === "null") {
|
|
294
|
-
cfg.ip = null;
|
|
295
|
-
}
|
|
296
|
-
assert(
|
|
297
|
-
!cfg.ip || ["private", "public"].includes(cfg.ip),
|
|
298
|
-
"[CONFIG] kuzzlerc.cluster.ip: invalid value (accepted values: public, private)",
|
|
299
|
-
);
|
|
300
|
-
|
|
301
|
-
assert(
|
|
302
|
-
!cfg.interface || typeof cfg.interface === "string",
|
|
303
|
-
"[CONFIG] kuzzlerc.cluster.interface: value must be either null, or a string",
|
|
304
|
-
);
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
function preprocessHttpOptions(config) {
|
|
308
|
-
const httpConfig = config.http;
|
|
309
|
-
|
|
310
|
-
if (httpConfig === undefined) {
|
|
311
|
-
return;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
if (typeof httpConfig.accessControlAllowOrigin === "string") {
|
|
315
|
-
httpConfig.accessControlAllowOrigin = httpConfig.accessControlAllowOrigin
|
|
316
|
-
.split(",")
|
|
317
|
-
.map((value) => value.trim());
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
// Stored to avoid doing includes multiple times later
|
|
321
|
-
config.internal.allowAllOrigins =
|
|
322
|
-
httpConfig.accessControlAllowOrigin.includes("*");
|
|
323
|
-
|
|
324
|
-
// If Regular Expression is enabled for accessControlAllowOrigin header we convert every string to a RegExp
|
|
325
|
-
if (httpConfig.accessControlAllowOriginUseRegExp) {
|
|
326
|
-
httpConfig.accessControlAllowOrigin =
|
|
327
|
-
httpConfig.accessControlAllowOrigin.map((pattern) => new RegExp(pattern));
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
function preprocessProtocolsOptions(config) {
|
|
332
|
-
const protocols = config.server.protocols;
|
|
333
|
-
|
|
334
|
-
config.internal.notifiableProtocols = [];
|
|
335
|
-
|
|
336
|
-
for (const [protocolName, protocolConfig] of Object.entries(protocols)) {
|
|
337
|
-
if (protocolConfig.enabled && protocolConfig.realtimeNotifications) {
|
|
338
|
-
config.internal.notifiableProtocols.push(protocolName);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
function preprocessRedisOptions(redisConfig) {
|
|
344
|
-
// @deprecated Remove those lines for Kuzzle v3 then
|
|
345
|
-
// remove also 'database' from .kuzzlerc.sample.jsonc and default.config
|
|
346
|
-
if (redisConfig.database) {
|
|
347
|
-
redisConfig.options = { db: redisConfig.database, ...redisConfig.options };
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
module.exports = { loadConfig };
|
|
@@ -1,66 +0,0 @@
|
|
|
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
|
-
|
|
22
|
-
"use strict";
|
|
23
|
-
|
|
24
|
-
module.exports = {
|
|
25
|
-
/**
|
|
26
|
-
* Serializes role and transforms it into a POJO
|
|
27
|
-
*
|
|
28
|
-
* @param {Role} role
|
|
29
|
-
* @returns {object}
|
|
30
|
-
*/
|
|
31
|
-
serializeProfile: (profile) => {
|
|
32
|
-
const { _id, ..._source } = profile;
|
|
33
|
-
|
|
34
|
-
return { _id, _source };
|
|
35
|
-
},
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Serializes profile and transforms it into a POJO
|
|
39
|
-
*
|
|
40
|
-
* @param {Profile} profile
|
|
41
|
-
* @returns {Object}
|
|
42
|
-
*/
|
|
43
|
-
serializeRole: (role) => {
|
|
44
|
-
const _source = {};
|
|
45
|
-
|
|
46
|
-
Object.keys(role).forEach((key) => {
|
|
47
|
-
if (key !== "_id" && key !== "restrictedTo") {
|
|
48
|
-
_source[key] = role[key];
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
return { _id: role._id, _source };
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Serializes user and transforms it into a POJO
|
|
57
|
-
*
|
|
58
|
-
* @param {User} user
|
|
59
|
-
* @returns {Object}
|
|
60
|
-
*/
|
|
61
|
-
serializeUser: (user) => {
|
|
62
|
-
const { _id, ..._source } = user;
|
|
63
|
-
|
|
64
|
-
return { _id, _source };
|
|
65
|
-
},
|
|
66
|
-
};
|
|
@@ -1,126 +0,0 @@
|
|
|
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
|
-
|
|
22
|
-
"use strict";
|
|
23
|
-
|
|
24
|
-
const Bluebird = require("bluebird");
|
|
25
|
-
const passport = require("passport");
|
|
26
|
-
|
|
27
|
-
const { KuzzleError } = require("../../kerror/errors");
|
|
28
|
-
const kerror = require("../../kerror");
|
|
29
|
-
const PassportResponse = require("./passportResponse");
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* @class PassportWrapper
|
|
33
|
-
*/
|
|
34
|
-
class PassportWrapper {
|
|
35
|
-
constructor() {
|
|
36
|
-
this.options = {};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* @param {{query: Object}}request
|
|
41
|
-
* @param strategyName
|
|
42
|
-
* @returns {Promise.<*>}
|
|
43
|
-
*/
|
|
44
|
-
authenticate(request, strategyName) {
|
|
45
|
-
const response = new PassportResponse();
|
|
46
|
-
|
|
47
|
-
return new Bluebird((resolve, reject) => {
|
|
48
|
-
// This listener is invoked when a redirection is required by the strategy (e.g. OAUTH)
|
|
49
|
-
// In that case, the strategy's verify function is not called, and
|
|
50
|
-
// neither is the authenticate's callback.
|
|
51
|
-
// Thus, despite the apparences, the promise can only be resolved once.
|
|
52
|
-
// (Proof: HTTP redirection unit test)
|
|
53
|
-
response.addEndListener(() => resolve(response));
|
|
54
|
-
|
|
55
|
-
const authCB = (err, user, info) => {
|
|
56
|
-
if (err !== null) {
|
|
57
|
-
if (err instanceof KuzzleError) {
|
|
58
|
-
reject(err);
|
|
59
|
-
} else {
|
|
60
|
-
reject(
|
|
61
|
-
kerror.getFrom(
|
|
62
|
-
err,
|
|
63
|
-
"plugin",
|
|
64
|
-
"runtime",
|
|
65
|
-
"unexpected_error",
|
|
66
|
-
err.message,
|
|
67
|
-
),
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
} else if (!user) {
|
|
71
|
-
reject(
|
|
72
|
-
kerror.get("plugin", "strategy", "missing_user", info.message),
|
|
73
|
-
);
|
|
74
|
-
} else {
|
|
75
|
-
resolve(user);
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
try {
|
|
80
|
-
passport.authenticate(
|
|
81
|
-
strategyName,
|
|
82
|
-
this.options[strategyName] || {},
|
|
83
|
-
authCB,
|
|
84
|
-
)(request, response);
|
|
85
|
-
} catch (e) {
|
|
86
|
-
if (e instanceof KuzzleError) {
|
|
87
|
-
reject(e);
|
|
88
|
-
} else {
|
|
89
|
-
reject(
|
|
90
|
-
kerror.getFrom(
|
|
91
|
-
e,
|
|
92
|
-
"plugin",
|
|
93
|
-
"runtime",
|
|
94
|
-
"unexpected_error",
|
|
95
|
-
e.message,
|
|
96
|
-
),
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Exposes passport.use function
|
|
105
|
-
*
|
|
106
|
-
* @param {string} name - strategy name
|
|
107
|
-
* @param {object} strategy - instantiated strategy object
|
|
108
|
-
* @param {object} opts - options to provide to authenticate with the strategy
|
|
109
|
-
*/
|
|
110
|
-
use(name, strategy, opts = {}) {
|
|
111
|
-
passport.use(name, strategy);
|
|
112
|
-
this.options[name] = opts;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Exposes passport.unuse, unregistering a strategy from kuzzle
|
|
117
|
-
*
|
|
118
|
-
* @param {string} name - name of the strategy to unregister
|
|
119
|
-
*/
|
|
120
|
-
unuse(name) {
|
|
121
|
-
passport.unuse(name);
|
|
122
|
-
delete this.options[name];
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
module.exports = PassportWrapper;
|