kuzzle 2.56.0 → 2.57.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/copy-binaries.js +71 -4
- package/dist/bin/start-kuzzle-server +191 -97
- package/dist/index.d.ts +31 -1
- package/dist/index.js +45 -2
- package/dist/lib/api/controllers/adminController.d.ts +4 -3
- package/dist/lib/api/controllers/adminController.js +1 -2
- package/dist/lib/api/controllers/authController.d.ts +37 -16
- package/dist/lib/api/controllers/authController.js +88 -39
- package/dist/lib/api/controllers/baseController.d.ts +10 -5
- package/dist/lib/api/controllers/baseController.js +36 -15
- package/dist/lib/api/controllers/bulkController.d.ts +11 -7
- package/dist/lib/api/controllers/bulkController.js +28 -5
- package/dist/lib/api/controllers/clusterController.d.ts +2 -2
- package/dist/lib/api/controllers/clusterController.js +3 -3
- package/dist/lib/api/controllers/collectionController.d.ts +57 -21
- package/dist/lib/api/controllers/collectionController.js +40 -11
- package/dist/lib/api/controllers/debugController.d.ts +1 -1
- package/dist/lib/api/controllers/documentController.d.ts +137 -28
- package/dist/lib/api/controllers/documentController.js +156 -125
- package/dist/lib/api/controllers/index.d.ts +27 -12
- package/dist/lib/api/controllers/index.js +28 -13
- package/dist/lib/api/controllers/indexController.d.ts +17 -10
- package/dist/lib/api/controllers/indexController.js +13 -11
- package/dist/lib/api/controllers/memoryStorageController.d.ts +2 -5
- package/dist/lib/api/controllers/memoryStorageController.js +199 -127
- package/dist/lib/api/controllers/realtimeController.d.ts +19 -9
- package/dist/lib/api/controllers/realtimeController.js +8 -4
- package/dist/lib/api/controllers/securityController.d.ts +42 -29
- package/dist/lib/api/controllers/securityController.js +35 -19
- package/dist/lib/api/controllers/serverController.d.ts +114 -19
- package/dist/lib/api/controllers/serverController.js +69 -29
- package/dist/lib/api/documentExtractor.d.ts +9 -7
- package/dist/lib/api/documentExtractor.js +105 -41
- package/dist/lib/api/funnel.d.ts +131 -29
- package/dist/lib/api/funnel.js +436 -225
- package/dist/lib/api/httpRoutes.d.ts +16 -11
- package/dist/lib/api/httpRoutes.js +272 -2
- package/dist/lib/api/openapi/OpenApiManager.d.ts +1 -1
- package/dist/lib/api/openapi/openApiGenerator.d.ts +1 -1
- package/dist/lib/api/rateLimiter.d.ts +15 -5
- package/dist/lib/api/rateLimiter.js +42 -14
- package/dist/lib/api/request/kuzzleRequest.d.ts +83 -12
- package/dist/lib/api/request/kuzzleRequest.js +88 -23
- package/dist/lib/api/request/requestContext.d.ts +20 -5
- package/dist/lib/api/request/requestContext.js +14 -4
- package/dist/lib/api/request/requestInput.d.ts +37 -6
- package/dist/lib/api/request/requestInput.js +22 -9
- package/dist/lib/api/request/requestResponse.d.ts +45 -9
- package/dist/lib/api/request/requestResponse.js +34 -3
- package/dist/lib/cluster/command.d.ts +131 -37
- package/dist/lib/cluster/command.js +243 -71
- package/dist/lib/cluster/idCardHandler.d.ts +18 -5
- package/dist/lib/cluster/idCardHandler.js +52 -19
- package/dist/lib/cluster/index.d.ts +8 -2
- package/dist/lib/cluster/index.js +6 -2
- package/dist/lib/cluster/node.d.ts +127 -49
- package/dist/lib/cluster/node.js +412 -179
- package/dist/lib/cluster/protobuf/command.proto +18 -0
- package/dist/lib/cluster/protobuf/commandMessages.d.ts +104 -0
- package/dist/lib/cluster/protobuf/commandMessages.js +30 -0
- package/dist/lib/cluster/protobuf/syncMessages.d.ts +184 -0
- package/dist/lib/cluster/protobuf/syncMessages.js +23 -0
- package/dist/lib/cluster/publisher.d.ts +118 -78
- package/dist/lib/cluster/publisher.js +174 -72
- package/dist/lib/cluster/state.d.ts +15 -9
- package/dist/lib/cluster/state.js +12 -8
- package/dist/lib/cluster/subscriber.d.ts +185 -131
- package/dist/lib/cluster/subscriber.js +357 -95
- package/dist/lib/cluster/workers/IDCardRenewer.d.ts +39 -8
- package/dist/lib/cluster/workers/IDCardRenewer.js +88 -23
- package/dist/lib/config/default.config.d.ts +2 -2
- package/dist/lib/config/default.config.js +10 -3
- package/dist/lib/config/documentEventAliases.d.ts +1 -1
- package/dist/lib/config/index.d.ts +2 -5
- package/dist/lib/config/index.js +30 -17
- package/dist/lib/core/auth/formatProcessing.d.ts +3 -3
- package/dist/lib/core/auth/passportResponse.d.ts +1 -1
- package/dist/lib/core/auth/passportWrapper.d.ts +1 -1
- package/dist/lib/core/auth/passportWrapper.js +14 -13
- package/dist/lib/core/auth/tokenManager.d.ts +24 -3
- package/dist/lib/core/auth/tokenManager.js +47 -19
- package/dist/lib/core/backend/applicationManager.d.ts +2 -2
- package/dist/lib/core/backend/backend.d.ts +16 -5
- package/dist/lib/core/backend/backend.js +14 -6
- package/dist/lib/core/backend/backendCluster.d.ts +1 -1
- package/dist/lib/core/backend/backendConfig.d.ts +17 -5
- package/dist/lib/core/backend/backendConfig.js +1 -0
- package/dist/lib/core/backend/backendController.d.ts +1 -1
- package/dist/lib/core/backend/backendController.js +8 -1
- package/dist/lib/core/backend/backendErrors.d.ts +15 -8
- package/dist/lib/core/backend/backendErrors.js +5 -0
- package/dist/lib/core/backend/backendHook.d.ts +1 -1
- package/dist/lib/core/backend/backendImport.d.ts +1 -1
- package/dist/lib/core/backend/backendOpenApi.d.ts +3 -2
- package/dist/lib/core/backend/backendPipe.d.ts +1 -1
- package/dist/lib/core/backend/backendPipe.js +9 -1
- package/dist/lib/core/backend/backendPlugin.d.ts +2 -2
- package/dist/lib/core/backend/backendSubscription.d.ts +2 -2
- package/dist/lib/core/backend/backendVault.d.ts +1 -1
- package/dist/lib/core/backend/backendVault.js +8 -1
- package/dist/lib/core/cache/cacheEngine.d.ts +7 -4
- package/dist/lib/core/cache/cacheEngine.js +25 -8
- package/dist/lib/core/debug/kuzzleDebugger.d.ts +2 -1
- package/dist/lib/core/debug/kuzzleDebugger.js +31 -17
- package/dist/lib/core/network/accessLogger.d.ts +33 -18
- package/dist/lib/core/network/accessLogger.js +135 -73
- package/dist/lib/core/network/clientConnection.d.ts +13 -11
- package/dist/lib/core/network/clientConnection.js +33 -9
- package/dist/lib/core/network/context.d.ts +17 -22
- package/dist/lib/core/network/context.js +43 -26
- package/dist/lib/core/network/entryPoint.d.ts +38 -16
- package/dist/lib/core/network/entryPoint.js +119 -48
- package/dist/lib/core/network/httpRouter/index.d.ts +20 -50
- package/dist/lib/core/network/httpRouter/index.js +61 -75
- package/dist/lib/core/network/httpRouter/routeHandler.d.ts +17 -32
- package/dist/lib/core/network/httpRouter/routeHandler.js +26 -36
- package/dist/lib/core/network/httpRouter/routePart.d.ts +9 -18
- package/dist/lib/core/network/httpRouter/routePart.js +61 -43
- package/dist/lib/core/network/httpRouter/routeTypes.d.ts +3 -0
- package/dist/lib/core/network/httpRouter/routeTypes.js +23 -0
- package/dist/lib/core/network/networkEntryPoint.d.ts +20 -0
- package/dist/lib/core/network/networkEntryPoint.js +23 -0
- package/dist/lib/core/network/protocolManifest.d.ts +5 -4
- package/dist/lib/core/network/protocolManifest.js +6 -3
- package/dist/lib/core/network/protocols/httpMessage.d.ts +25 -18
- package/dist/lib/core/network/protocols/httpMessage.js +14 -11
- package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +84 -93
- package/dist/lib/core/network/protocols/httpwsProtocol.js +284 -129
- package/dist/lib/core/network/protocols/internalProtocol.d.ts +26 -15
- package/dist/lib/core/network/protocols/internalProtocol.js +17 -16
- package/dist/lib/core/network/protocols/mqttProtocol.d.ts +56 -32
- package/dist/lib/core/network/protocols/mqttProtocol.js +91 -44
- package/dist/lib/core/network/protocols/protocol.d.ts +85 -21
- package/dist/lib/core/network/protocols/protocol.js +83 -27
- package/dist/lib/core/network/router.d.ts +13 -22
- package/dist/lib/core/network/router.js +59 -46
- package/dist/lib/core/plugin/plugin.d.ts +57 -51
- package/dist/lib/core/plugin/plugin.js +218 -103
- package/dist/lib/core/plugin/pluginContext.d.ts +54 -11
- package/dist/lib/core/plugin/pluginContext.js +99 -58
- package/dist/lib/core/plugin/pluginManifest.d.ts +6 -2
- package/dist/lib/core/plugin/pluginManifest.js +18 -11
- package/dist/lib/core/plugin/pluginRepository.d.ts +35 -44
- package/dist/lib/core/plugin/pluginRepository.js +35 -50
- package/dist/lib/core/plugin/pluginsManager.d.ts +128 -46
- package/dist/lib/core/plugin/pluginsManager.js +468 -231
- package/dist/lib/core/plugin/privilegedContext.d.ts +4 -9
- package/dist/lib/core/plugin/privilegedContext.js +5 -10
- package/dist/lib/core/realtime/actionEnum.d.ts +12 -21
- package/dist/lib/core/realtime/actionEnum.js +6 -7
- package/dist/lib/core/realtime/channel.d.ts +11 -5
- package/dist/lib/core/realtime/channel.js +17 -2
- package/dist/lib/core/realtime/connectionRooms.d.ts +2 -2
- package/dist/lib/core/realtime/hotelClerk.d.ts +12 -6
- package/dist/lib/core/realtime/hotelClerk.js +29 -11
- package/dist/lib/core/realtime/index.d.ts +8 -3
- package/dist/lib/core/realtime/index.js +12 -5
- package/dist/lib/core/realtime/notification/document.d.ts +54 -25
- package/dist/lib/core/realtime/notification/document.js +10 -13
- package/dist/lib/core/realtime/notification/index.d.ts +9 -3
- package/dist/lib/core/realtime/notification/index.js +10 -4
- package/dist/lib/core/realtime/notification/server.d.ts +7 -10
- package/dist/lib/core/realtime/notification/server.js +4 -7
- package/dist/lib/core/realtime/notification/user.d.ts +45 -21
- package/dist/lib/core/realtime/notification/user.js +8 -9
- package/dist/lib/core/realtime/notifier.d.ts +52 -40
- package/dist/lib/core/realtime/notifier.js +60 -25
- package/dist/lib/core/realtime/room.d.ts +1 -1
- package/dist/lib/core/realtime/subscription.d.ts +11 -6
- package/dist/lib/core/realtime/subscription.js +5 -1
- package/dist/lib/core/security/index.d.ts +14 -6
- package/dist/lib/core/security/index.js +27 -13
- package/dist/lib/core/security/profileRepository.d.ts +24 -19
- package/dist/lib/core/security/profileRepository.js +23 -10
- package/dist/lib/core/security/roleRepository.d.ts +60 -23
- package/dist/lib/core/security/roleRepository.js +122 -53
- package/dist/lib/core/security/securityLoader.d.ts +33 -18
- package/dist/lib/core/security/securityLoader.js +43 -16
- package/dist/lib/core/security/tokenRepository.d.ts +21 -7
- package/dist/lib/core/security/tokenRepository.js +50 -23
- package/dist/lib/core/security/userRepository.d.ts +44 -21
- package/dist/lib/core/security/userRepository.js +59 -19
- package/dist/lib/core/shared/KoncordeWrapper.d.ts +1 -1
- package/dist/lib/core/shared/ObjectRepository.d.ts +80 -18
- package/dist/lib/core/shared/ObjectRepository.js +57 -29
- package/dist/lib/core/shared/abstractManifest.d.ts +21 -8
- package/dist/lib/core/shared/abstractManifest.js +57 -17
- package/dist/lib/core/shared/sdk/embeddedSdk.d.ts +3 -1
- package/dist/lib/core/shared/sdk/embeddedSdk.js +8 -7
- package/dist/lib/core/shared/sdk/funnelProtocol.d.ts +2 -1
- package/dist/lib/core/shared/sdk/funnelProtocol.js +12 -3
- package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +11 -5
- package/dist/lib/core/shared/sdk/impersonatedSdk.js +22 -9
- package/dist/lib/core/shared/store.d.ts +45 -29
- package/dist/lib/core/shared/store.js +48 -27
- package/dist/lib/core/statistics/statistics.d.ts +1 -1
- package/dist/lib/core/storage/clientAdapter.d.ts +39 -21
- package/dist/lib/core/storage/clientAdapter.js +88 -48
- package/dist/lib/core/storage/indexCache.d.ts +8 -0
- package/dist/lib/core/storage/indexCache.js +16 -7
- package/dist/lib/core/storage/storageEngine.d.ts +7 -6
- package/dist/lib/core/storage/storageEngine.js +11 -8
- package/dist/lib/core/validation/baseType.d.ts +22 -22
- package/dist/lib/core/validation/baseType.js +11 -26
- package/dist/lib/core/validation/specification.d.ts +148 -0
- package/dist/lib/core/validation/specification.js +34 -0
- package/dist/lib/core/validation/typeOptions.d.ts +62 -0
- package/dist/lib/core/validation/typeOptions.js +23 -0
- package/dist/lib/core/validation/types/anything.d.ts +3 -6
- package/dist/lib/core/validation/types/anything.js +7 -7
- package/dist/lib/core/validation/types/boolean.d.ts +5 -12
- package/dist/lib/core/validation/types/boolean.js +7 -12
- package/dist/lib/core/validation/types/date.d.ts +19 -11
- package/dist/lib/core/validation/types/date.js +212 -161
- package/dist/lib/core/validation/types/email.d.ts +7 -11
- package/dist/lib/core/validation/types/email.js +13 -17
- package/dist/lib/core/validation/types/enum.d.ts +7 -11
- package/dist/lib/core/validation/types/enum.js +39 -20
- package/dist/lib/core/validation/types/geoPoint.d.ts +5 -13
- package/dist/lib/core/validation/types/geoPoint.js +10 -15
- package/dist/lib/core/validation/types/geoShape.d.ts +22 -21
- package/dist/lib/core/validation/types/geoShape.js +113 -129
- package/dist/lib/core/validation/types/geoShapeUtils.d.ts +15 -0
- package/dist/lib/core/validation/types/geoShapeUtils.js +75 -0
- package/dist/lib/core/validation/types/integer.d.ts +7 -5
- package/dist/lib/core/validation/types/integer.js +7 -13
- package/dist/lib/core/validation/types/ipAddress.d.ts +7 -11
- package/dist/lib/core/validation/types/ipAddress.js +13 -17
- package/dist/lib/core/validation/types/numeric.d.ts +7 -11
- package/dist/lib/core/validation/types/numeric.js +22 -29
- package/dist/lib/core/validation/types/object.d.ts +8 -15
- package/dist/lib/core/validation/types/object.js +12 -21
- package/dist/lib/core/validation/types/string.d.ts +7 -11
- package/dist/lib/core/validation/types/string.js +22 -29
- package/dist/lib/core/validation/types/url.d.ts +7 -11
- package/dist/lib/core/validation/types/url.js +14 -18
- package/dist/lib/core/validation/validation.d.ts +119 -80
- package/dist/lib/core/validation/validation.js +470 -412
- package/dist/lib/core/validation/validationUtils.d.ts +31 -0
- package/dist/lib/core/validation/validationUtils.js +190 -0
- package/dist/lib/kerror/codes/4-plugin.json +0 -12
- package/dist/lib/kerror/codes/index.d.ts +12 -2
- package/dist/lib/kerror/codes/index.js +5 -4
- package/dist/lib/kerror/errors/badRequestError.d.ts +1 -1
- package/dist/lib/kerror/errors/badRequestError.js +1 -1
- package/dist/lib/kerror/errors/externalServiceError.d.ts +1 -1
- package/dist/lib/kerror/errors/externalServiceError.js +1 -1
- package/dist/lib/kerror/errors/forbiddenError.d.ts +1 -1
- package/dist/lib/kerror/errors/forbiddenError.js +1 -1
- package/dist/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
- package/dist/lib/kerror/errors/gatewayTimeoutError.js +1 -1
- package/dist/lib/kerror/errors/internalError.d.ts +1 -1
- package/dist/lib/kerror/errors/internalError.js +1 -1
- package/dist/lib/kerror/errors/kuzzleError.d.ts +32 -3
- package/dist/lib/kerror/errors/kuzzleError.js +21 -7
- package/dist/lib/kerror/errors/multipleErrorsError.d.ts +2 -2
- package/dist/lib/kerror/errors/multipleErrorsError.js +2 -2
- package/dist/lib/kerror/errors/notFoundError.d.ts +1 -1
- package/dist/lib/kerror/errors/notFoundError.js +1 -1
- package/dist/lib/kerror/errors/partialError.d.ts +8 -2
- package/dist/lib/kerror/errors/partialError.js +22 -9
- package/dist/lib/kerror/errors/pluginImplementationError.d.ts +9 -1
- package/dist/lib/kerror/errors/pluginImplementationError.js +9 -3
- package/dist/lib/kerror/errors/preconditionError.d.ts +1 -1
- package/dist/lib/kerror/errors/preconditionError.js +1 -1
- package/dist/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
- package/dist/lib/kerror/errors/serviceUnavailableError.js +1 -1
- package/dist/lib/kerror/errors/sizeLimitError.d.ts +1 -1
- package/dist/lib/kerror/errors/sizeLimitError.js +1 -1
- package/dist/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
- package/dist/lib/kerror/errors/tooManyRequestsError.js +1 -1
- package/dist/lib/kerror/errors/unauthorizedError.d.ts +1 -1
- package/dist/lib/kerror/errors/unauthorizedError.js +1 -1
- package/dist/lib/kerror/index.d.ts +19 -13
- package/dist/lib/kerror/index.js +60 -19
- package/dist/lib/kuzzle/Logger.d.ts +2 -2
- package/dist/lib/kuzzle/dumpGenerator.d.ts +12 -8
- package/dist/lib/kuzzle/dumpGenerator.js +130 -62
- package/dist/lib/kuzzle/event/KuzzleEventEmitter.d.ts +18 -9
- package/dist/lib/kuzzle/event/KuzzleEventEmitter.js +45 -18
- package/dist/lib/kuzzle/event/pipeRunner.d.ts +37 -16
- package/dist/lib/kuzzle/event/pipeRunner.js +73 -26
- package/dist/lib/kuzzle/event/waterfall.d.ts +11 -1
- package/dist/lib/kuzzle/event/waterfall.js +38 -13
- package/dist/lib/kuzzle/internalIndexHandler.d.ts +11 -174
- package/dist/lib/kuzzle/internalIndexHandler.js +58 -29
- package/dist/lib/kuzzle/kuzzle.d.ts +25 -10
- package/dist/lib/kuzzle/kuzzle.js +74 -17
- package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +16 -12
- package/dist/lib/kuzzle/kuzzleStateEnum.js +5 -7
- package/dist/lib/kuzzle/vault.d.ts +5 -1
- package/dist/lib/kuzzle/vault.js +29 -17
- package/dist/lib/model/security/profile.d.ts +34 -5
- package/dist/lib/model/security/profile.js +6 -5
- package/dist/lib/model/security/rights.d.ts +12 -4
- package/dist/lib/model/security/rights.js +7 -6
- package/dist/lib/model/security/role.d.ts +8 -4
- package/dist/lib/model/security/role.js +12 -6
- package/dist/lib/model/security/token.d.ts +8 -0
- package/dist/lib/model/security/user.d.ts +8 -2
- package/dist/lib/model/security/user.js +7 -4
- package/dist/lib/model/storage/apiKey.d.ts +55 -26
- package/dist/lib/model/storage/apiKey.js +97 -24
- package/dist/lib/model/storage/baseModel.d.ts +77 -66
- package/dist/lib/model/storage/baseModel.js +21 -34
- package/dist/lib/service/cache/redis.d.ts +53 -36
- package/dist/lib/service/cache/redis.js +148 -71
- package/dist/lib/service/service.d.ts +14 -19
- package/dist/lib/service/service.js +41 -22
- package/dist/lib/service/storage/7/elasticsearch.d.ts +136 -93
- package/dist/lib/service/storage/7/elasticsearch.js +218 -165
- package/dist/lib/service/storage/7/esWrapper.d.ts +30 -13
- package/dist/lib/service/storage/7/esWrapper.js +58 -37
- package/dist/lib/service/storage/8/elasticsearch.d.ts +153 -119
- package/dist/lib/service/storage/8/elasticsearch.js +286 -213
- package/dist/lib/service/storage/8/esWrapper.d.ts +30 -13
- package/dist/lib/service/storage/8/esWrapper.js +59 -38
- package/dist/lib/service/storage/commons/queryTranslator.d.ts +3 -3
- package/dist/lib/service/storage/commons/queryTranslator.js +71 -35
- package/dist/lib/types/ApiRoute.d.ts +12 -0
- package/dist/lib/types/ApiRoute.js +23 -0
- package/dist/lib/types/ClientConnection.d.ts +1 -1
- package/dist/lib/types/EventHandler.d.ts +10 -0
- package/dist/lib/types/Global.d.ts +8 -3
- package/dist/lib/types/HttpMessage.d.ts +2 -2
- package/dist/lib/types/HttpStream.d.ts +1 -1
- package/dist/lib/types/HttpStream.js +3 -1
- package/dist/lib/types/JSONObject.d.ts +9 -0
- package/dist/lib/types/JSONObject.js +23 -0
- package/dist/lib/types/Kuzzle.d.ts +5 -3
- package/dist/lib/types/KuzzleDocument.d.ts +1 -1
- package/dist/lib/types/KuzzleWebSocket.d.ts +24 -0
- package/dist/lib/types/KuzzleWebSocket.js +23 -0
- package/dist/lib/types/OpenApiDefinition.d.ts +1 -1
- package/dist/lib/types/Plugin.d.ts +33 -8
- package/dist/lib/types/PluginInstance.d.ts +67 -0
- package/dist/lib/types/PluginInstance.js +23 -0
- package/dist/lib/types/Policy.d.ts +1 -1
- package/dist/lib/types/Target.d.ts +8 -0
- package/dist/lib/types/Token.d.ts +14 -2
- package/dist/lib/types/config/HttpConfiguration.d.ts +5 -0
- package/dist/lib/types/config/KuzzleConfiguration.d.ts +102 -1
- package/dist/lib/types/config/PluginsConfiguration.d.ts +3 -2
- package/dist/lib/types/config/SecurityConfiguration.d.ts +6 -2
- package/dist/lib/types/config/ServerConfiguration.d.ts +2 -2
- package/dist/lib/types/config/ServicesConfiguration.d.ts +1 -1
- package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.d.ts +131 -0
- package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.js +3 -0
- package/dist/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +2 -106
- package/dist/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +2 -26
- package/dist/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +3 -0
- package/dist/lib/types/controllers/Controller.d.ts +12 -3
- package/dist/lib/types/controllers/ControllerDefinition.d.ts +2 -2
- package/dist/lib/types/controllers/{adminControlller.type.js → adminController.type.js} +1 -1
- package/dist/lib/types/controllers/authController.type.d.ts +2 -2
- package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -1
- package/dist/lib/types/errors/ErrorDomains.d.ts +1 -1
- package/dist/lib/types/events/EventGenericDocument.d.ts +10 -9
- package/dist/lib/types/events/EventProtocol.d.ts +4 -4
- package/dist/lib/types/index.d.ts +7 -0
- package/dist/lib/types/index.js +7 -0
- package/dist/lib/types/shared/StoreCollectionsDefinition.d.ts +1 -1
- package/dist/lib/types/storage/7/Elasticsearch.d.ts +62 -13
- package/dist/lib/types/storage/8/Elasticsearch.d.ts +62 -13
- package/dist/lib/util/Inflector.d.ts +4 -1
- package/dist/lib/util/Inflector.js +0 -3
- package/dist/lib/util/assertType.d.ts +24 -27
- package/dist/lib/util/assertType.js +28 -39
- package/dist/lib/util/async.js +19 -6
- package/dist/lib/util/asyncStore.js +1 -1
- package/dist/lib/util/bufferedPassThrough.d.ts +9 -0
- package/dist/lib/util/bufferedPassThrough.js +27 -13
- package/dist/lib/util/bytes.d.ts +1 -1
- package/dist/lib/util/bytes.js +6 -2
- package/dist/lib/util/debug.d.ts +3 -1
- package/dist/lib/util/debug.js +42 -10
- package/dist/lib/util/deprecate.d.ts +9 -1
- package/dist/lib/util/deprecate.js +10 -6
- package/dist/lib/util/didYouMean.d.ts +2 -1
- package/dist/lib/util/didYouMean.js +8 -4
- package/dist/lib/util/distributedLock.d.ts +56 -0
- package/dist/lib/util/distributedLock.js +166 -0
- package/dist/lib/util/dump-collection.d.ts +1 -1
- package/dist/lib/util/dump-collection.js +4 -5
- package/dist/lib/util/extractFields.d.ts +15 -11
- package/dist/lib/util/extractFields.js +8 -9
- package/dist/lib/util/koncordeCompat.d.ts +2 -2
- package/dist/lib/util/koncordeCompat.js +33 -0
- package/dist/lib/util/memoize.d.ts +7 -6
- package/dist/lib/util/memoize.js +3 -3
- package/dist/lib/util/mutex.d.ts +22 -2
- package/dist/lib/util/mutex.js +39 -1
- package/dist/lib/util/name-generator.js +14 -2
- package/dist/lib/util/promback.d.ts +20 -11
- package/dist/lib/util/promback.js +14 -7
- package/dist/lib/util/requestAssertions.d.ts +30 -10
- package/dist/lib/util/requestAssertions.js +125 -121
- package/dist/lib/util/safeObject.d.ts +3 -3
- package/dist/lib/util/safeObject.js +7 -3
- package/dist/lib/util/stackTrace.d.ts +13 -5
- package/dist/lib/util/stackTrace.js +17 -12
- package/dist/lib/util/thrown.d.ts +13 -0
- package/dist/lib/util/thrown.js +46 -0
- package/dist/package.json +26 -19
- package/package.json +26 -19
- package/dist/lib/util/wildcard.d.ts +0 -1
- package/dist/lib/util/wildcard.js +0 -46
- /package/dist/lib/types/controllers/{adminControlller.type.d.ts → adminController.type.d.ts} +0 -0
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { PluginContext } from "./pluginContext";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* The context handed to a plugin declared `privileged` in its manifest: the
|
|
4
|
+
* same surface as a regular plugin's, plus the Kuzzle instance itself.
|
|
5
5
|
*/
|
|
6
6
|
declare class PrivilegedPluginContext extends PluginContext {
|
|
7
|
-
/**
|
|
8
|
-
* @param {Kuzzle} kuzzle
|
|
9
|
-
* @param {string} pluginName
|
|
10
|
-
* @constructor
|
|
11
|
-
*/
|
|
12
7
|
constructor(pluginName: string);
|
|
13
8
|
}
|
|
14
|
-
|
|
9
|
+
export = PrivilegedPluginContext;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
4
|
* to power modern apps
|
|
@@ -18,18 +19,12 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
const { PluginContext } = require("./pluginContext");
|
|
22
|
+
const pluginContext_1 = require("./pluginContext");
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* The context handed to a plugin declared `privileged` in its manifest: the
|
|
25
|
+
* same surface as a regular plugin's, plus the Kuzzle instance itself.
|
|
26
26
|
*/
|
|
27
|
-
class PrivilegedPluginContext extends PluginContext {
|
|
28
|
-
/**
|
|
29
|
-
* @param {Kuzzle} kuzzle
|
|
30
|
-
* @param {string} pluginName
|
|
31
|
-
* @constructor
|
|
32
|
-
*/
|
|
27
|
+
class PrivilegedPluginContext extends pluginContext_1.PluginContext {
|
|
33
28
|
constructor(pluginName) {
|
|
34
29
|
super(pluginName);
|
|
35
30
|
this.accessors.kuzzle = global.kuzzle;
|
|
@@ -1,25 +1,16 @@
|
|
|
1
|
-
export = actionEnum;
|
|
2
|
-
/**
|
|
3
|
-
* Enum for the document's notification "action" option
|
|
4
|
-
*/
|
|
5
|
-
type actionEnum = notifyActionEnum;
|
|
6
1
|
/**
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @enum {notifyActionEnum}
|
|
2
|
+
* Enum for the document's notification "action" option.
|
|
3
|
+
*
|
|
4
|
+
* `as const` is type-only (no runtime change) and is what gives the members
|
|
5
|
+
* literal types, so `NotifyActionEnum` below is a real union instead of
|
|
6
|
+
* widening to `number`.
|
|
13
7
|
*/
|
|
14
8
|
declare const actionEnum: Readonly<{
|
|
15
|
-
CREATE: 1;
|
|
16
|
-
DELETE: 2;
|
|
17
|
-
REPLACE: 3;
|
|
18
|
-
UPDATE: 4;
|
|
19
|
-
UPSERT: 5;
|
|
20
|
-
WRITE: 6;
|
|
9
|
+
readonly CREATE: 1;
|
|
10
|
+
readonly DELETE: 2;
|
|
11
|
+
readonly REPLACE: 3;
|
|
12
|
+
readonly UPDATE: 4;
|
|
13
|
+
readonly UPSERT: 5;
|
|
14
|
+
readonly WRITE: 6;
|
|
21
15
|
}>;
|
|
22
|
-
|
|
23
|
-
export { notifyActionEnum };
|
|
24
|
-
}
|
|
25
|
-
type notifyActionEnum = number;
|
|
16
|
+
export = actionEnum;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
4
|
* to power modern apps
|
|
@@ -18,14 +19,12 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
"use strict";
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* @enum {notifyActionEnum}
|
|
23
|
+
* Enum for the document's notification "action" option.
|
|
24
|
+
*
|
|
25
|
+
* `as const` is type-only (no runtime change) and is what gives the members
|
|
26
|
+
* literal types, so `NotifyActionEnum` below is a real union instead of
|
|
27
|
+
* widening to `number`.
|
|
29
28
|
*/
|
|
30
29
|
const actionEnum = Object.freeze({
|
|
31
30
|
CREATE: 1,
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import { RealtimeScope, RealtimeUsers } from "../../types";
|
|
1
|
+
import type { RealtimeScope, RealtimeUsers } from "../../types";
|
|
2
|
+
/**
|
|
3
|
+
* A channel's document scope. Wider than `RealtimeScope`, which also types a
|
|
4
|
+
* document *notification* and so cannot hold `"none"`: a `"none"`-scoped
|
|
5
|
+
* channel takes user events and no document event (TD-74).
|
|
6
|
+
*/
|
|
7
|
+
export type ChannelScope = RealtimeScope | "none";
|
|
2
8
|
/**
|
|
3
9
|
* A channel define how notifications should be send for a particular realtime
|
|
4
10
|
* room.
|
|
@@ -27,8 +33,8 @@ export declare class Channel {
|
|
|
27
33
|
* This is 10x faster than murmur.
|
|
28
34
|
*/
|
|
29
35
|
static hash(channel: Channel): string;
|
|
30
|
-
static USERS_ALLOWED_VALUES: string[];
|
|
31
|
-
static SCOPE_ALLOWED_VALUES: string[];
|
|
36
|
+
static readonly USERS_ALLOWED_VALUES: string[];
|
|
37
|
+
static readonly SCOPE_ALLOWED_VALUES: readonly string[];
|
|
32
38
|
/**
|
|
33
39
|
* Identifier of the channel.
|
|
34
40
|
*
|
|
@@ -41,7 +47,7 @@ export declare class Channel {
|
|
|
41
47
|
*
|
|
42
48
|
* @default "all"
|
|
43
49
|
*/
|
|
44
|
-
scope:
|
|
50
|
+
scope: ChannelScope;
|
|
45
51
|
/**
|
|
46
52
|
* Define if notification should be send when users join or leave the channel.
|
|
47
53
|
*
|
|
@@ -57,7 +63,7 @@ export declare class Channel {
|
|
|
57
63
|
*/
|
|
58
64
|
cluster: boolean;
|
|
59
65
|
constructor(roomId: string, { scope, users, propagate, }?: {
|
|
60
|
-
scope?:
|
|
66
|
+
scope?: ChannelScope;
|
|
61
67
|
users?: RealtimeUsers;
|
|
62
68
|
propagate?: boolean;
|
|
63
69
|
});
|
|
@@ -82,8 +82,13 @@ class Channel {
|
|
|
82
82
|
case "in":
|
|
83
83
|
str += "2";
|
|
84
84
|
break;
|
|
85
|
+
// "out" and "none" both hashed to "3", so two subscriptions to one room
|
|
86
|
+
// that differed only there shared a channel, and the second got the
|
|
87
|
+
// first one's configuration (`Room.createChannel` keeps the first).
|
|
88
|
+
// "none" keeps "3" — it is the default, and every default channel keeps
|
|
89
|
+
// its name — and "out" takes the next free digit (TD-74).
|
|
85
90
|
case "out":
|
|
86
|
-
str += "
|
|
91
|
+
str += "4";
|
|
87
92
|
break;
|
|
88
93
|
case "none":
|
|
89
94
|
str += "3";
|
|
@@ -107,6 +112,9 @@ class Channel {
|
|
|
107
112
|
case "out":
|
|
108
113
|
str += "3";
|
|
109
114
|
break;
|
|
115
|
+
// No case for "none", on purpose: it adds no digit, and since every
|
|
116
|
+
// other field always adds exactly one, a two-digit suffix is already
|
|
117
|
+
// unique to it. A case would only rename those channels (TD-74).
|
|
110
118
|
}
|
|
111
119
|
return str;
|
|
112
120
|
}
|
|
@@ -125,5 +133,12 @@ class Channel {
|
|
|
125
133
|
}
|
|
126
134
|
exports.Channel = Channel;
|
|
127
135
|
Channel.USERS_ALLOWED_VALUES = ["all", "in", "out", "none"];
|
|
128
|
-
|
|
136
|
+
// Its own array: it used to be `USERS_ALLOWED_VALUES` itself, which is how
|
|
137
|
+
// `"none"` became a valid scope without the type or the hash knowing.
|
|
138
|
+
Channel.SCOPE_ALLOWED_VALUES = [
|
|
139
|
+
"all",
|
|
140
|
+
"in",
|
|
141
|
+
"out",
|
|
142
|
+
"none",
|
|
143
|
+
];
|
|
129
144
|
//# sourceMappingURL=channel.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { JSONObject } from "
|
|
1
|
+
import type { JSONObject } from "../../types/JSONObject";
|
|
2
2
|
/**
|
|
3
3
|
* Each connection can subscribe to many rooms with different sets of volatile
|
|
4
4
|
* data.
|
|
@@ -24,5 +24,5 @@ export declare class ConnectionRooms {
|
|
|
24
24
|
/**
|
|
25
25
|
* Returns the volatile data for this room subscription
|
|
26
26
|
*/
|
|
27
|
-
getVolatile(roomId: string): JSONObject;
|
|
27
|
+
getVolatile(roomId: string): JSONObject | undefined;
|
|
28
28
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { KuzzleRequest } from "../../api/request";
|
|
2
|
-
import { RoomList } from "../../types";
|
|
3
|
-
import {
|
|
2
|
+
import type { RoomList } from "../../types";
|
|
3
|
+
import { Room } from "./room";
|
|
4
|
+
import type { User } from "../../model/security/user";
|
|
4
5
|
/**
|
|
5
6
|
* The HotelClerk is responsible of keeping the list of rooms and subscriptions
|
|
6
7
|
* made to those rooms.
|
|
@@ -31,7 +32,12 @@ export declare class HotelClerk {
|
|
|
31
32
|
*
|
|
32
33
|
* Map<roomId, Room>
|
|
33
34
|
*/
|
|
34
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Not `private`: `core/realtime/notifier` reads it directly
|
|
37
|
+
* (`this.module.hotelClerk.rooms.get(room)`) to resolve a room's channels.
|
|
38
|
+
* The modifier never matched that long-standing cross-class access.
|
|
39
|
+
*/
|
|
40
|
+
rooms: Map<string, Room>;
|
|
35
41
|
/**
|
|
36
42
|
* Current subscribing connections handled by the HotelClerk.
|
|
37
43
|
*
|
|
@@ -68,7 +74,7 @@ export declare class HotelClerk {
|
|
|
68
74
|
subscribe(request: KuzzleRequest): Promise<{
|
|
69
75
|
channel: string;
|
|
70
76
|
roomId: string;
|
|
71
|
-
}>;
|
|
77
|
+
} | null>;
|
|
72
78
|
/**
|
|
73
79
|
* Returns the list of collections of an index with realtime rooms.
|
|
74
80
|
*/
|
|
@@ -80,8 +86,8 @@ export declare class HotelClerk {
|
|
|
80
86
|
* filters will be fetched from the cluster.
|
|
81
87
|
*/
|
|
82
88
|
join(request: KuzzleRequest): Promise<{
|
|
83
|
-
channel:
|
|
84
|
-
roomId:
|
|
89
|
+
channel: string;
|
|
90
|
+
roomId: string;
|
|
85
91
|
}>;
|
|
86
92
|
/**
|
|
87
93
|
* Return the list of index, collection, rooms and subscribing connections
|
|
@@ -88,6 +88,11 @@ class HotelClerk {
|
|
|
88
88
|
*
|
|
89
89
|
* Map<roomId, Room>
|
|
90
90
|
*/
|
|
91
|
+
/**
|
|
92
|
+
* Not `private`: `core/realtime/notifier` reads it directly
|
|
93
|
+
* (`this.module.hotelClerk.rooms.get(room)`) to resolve a room's channels.
|
|
94
|
+
* The modifier never matched that long-standing cross-class access.
|
|
95
|
+
*/
|
|
91
96
|
this.rooms = new Map();
|
|
92
97
|
/**
|
|
93
98
|
* Current subscribing connections handled by the HotelClerk.
|
|
@@ -207,15 +212,19 @@ class HotelClerk {
|
|
|
207
212
|
* is made on the very last moment and is essential to ensure
|
|
208
213
|
* that no zombie subscription can be performed
|
|
209
214
|
*/
|
|
210
|
-
|
|
215
|
+
const connectionId = request.context.connection.id;
|
|
216
|
+
// A subscription is keyed by the connection that made it, so no connection
|
|
217
|
+
// id is the same dead connection this check is here to catch.
|
|
218
|
+
if (connectionId === null ||
|
|
219
|
+
!global.kuzzle.router.isConnectionAlive(request.context)) {
|
|
211
220
|
return null;
|
|
212
221
|
}
|
|
213
222
|
let normalized;
|
|
214
223
|
try {
|
|
215
|
-
normalized = this.koncorde.normalize(request.input.body, (0, koncordeCompat_1.toKoncordeIndex)(index, collection));
|
|
224
|
+
normalized = this.koncorde.normalize(request.input.body ?? {}, (0, koncordeCompat_1.toKoncordeIndex)(index, collection));
|
|
216
225
|
}
|
|
217
226
|
catch (e) {
|
|
218
|
-
throw kerror.get("api", "assert", "koncorde_dsl_error", e.message);
|
|
227
|
+
throw kerror.get("api", "assert", "koncorde_dsl_error", e instanceof Error ? e.message : String(e));
|
|
219
228
|
}
|
|
220
229
|
this.createRoom(normalized);
|
|
221
230
|
/**
|
|
@@ -249,7 +258,7 @@ class HotelClerk {
|
|
|
249
258
|
}
|
|
250
259
|
};
|
|
251
260
|
const { channel } = await this.subscribeToRoom(normalized.id, request, afterSubscribeCallback);
|
|
252
|
-
const subscription = new subscription_1.Subscription(index, collection, request.input.body, normalized.id,
|
|
261
|
+
const subscription = new subscription_1.Subscription(index, collection, request.input.body ?? {}, normalized.id, connectionId, request.context.user);
|
|
253
262
|
global.kuzzle.emit("core:realtime:user:subscribe:after", subscription);
|
|
254
263
|
return {
|
|
255
264
|
channel,
|
|
@@ -269,7 +278,7 @@ class HotelClerk {
|
|
|
269
278
|
* filters will be fetched from the cluster.
|
|
270
279
|
*/
|
|
271
280
|
async join(request) {
|
|
272
|
-
const roomId = request.input.body
|
|
281
|
+
const roomId = request.input.body?.roomId;
|
|
273
282
|
if (!this.rooms.has(roomId)) {
|
|
274
283
|
const normalized = await global.kuzzle.ask("cluster:realtime:filters:get", roomId);
|
|
275
284
|
if (!normalized) {
|
|
@@ -322,15 +331,16 @@ class HotelClerk {
|
|
|
322
331
|
const toRemove = [];
|
|
323
332
|
const collectionNames = Object.keys(collections);
|
|
324
333
|
// Iterate from the end so we process the most recently added collections first
|
|
325
|
-
|
|
326
|
-
|
|
334
|
+
// Reversed copy rather than a backwards index loop: same order, and the
|
|
335
|
+
// entries come out of it already narrowed.
|
|
336
|
+
for (const collection of [...collectionNames].reverse()) {
|
|
327
337
|
isAllowedRequest.input.resource.collection = collection;
|
|
328
338
|
if (!(await user.isActionAllowed(isAllowedRequest))) {
|
|
329
339
|
toRemove.push(collection);
|
|
330
340
|
}
|
|
331
341
|
}
|
|
332
342
|
for (const collection of toRemove) {
|
|
333
|
-
delete fullStateRooms[index][collection];
|
|
343
|
+
delete fullStateRooms[index]?.[collection];
|
|
334
344
|
}
|
|
335
345
|
}
|
|
336
346
|
return fullStateRooms;
|
|
@@ -369,7 +379,7 @@ class HotelClerk {
|
|
|
369
379
|
this.subscriptions.set(connectionId, connectionRooms);
|
|
370
380
|
}
|
|
371
381
|
connectionRooms.addRoom(roomId, volatile);
|
|
372
|
-
this.rooms.get(roomId)
|
|
382
|
+
this.rooms.get(roomId)?.addConnection(connectionId);
|
|
373
383
|
}
|
|
374
384
|
/**
|
|
375
385
|
* Create new room if needed
|
|
@@ -512,7 +522,7 @@ class HotelClerk {
|
|
|
512
522
|
try {
|
|
513
523
|
await global.kuzzle.pipe("room:remove", roomId);
|
|
514
524
|
}
|
|
515
|
-
catch
|
|
525
|
+
catch {
|
|
516
526
|
return;
|
|
517
527
|
}
|
|
518
528
|
}
|
|
@@ -528,12 +538,20 @@ class HotelClerk {
|
|
|
528
538
|
let notifyPromise;
|
|
529
539
|
const { scope, users, propagate } = request.input.args;
|
|
530
540
|
const connectionId = request.context.connection.id;
|
|
541
|
+
// Same as `subscribe`: a room is joined by a connection, and there is none.
|
|
542
|
+
if (connectionId === null) {
|
|
543
|
+
throw kerror.get("core", "realtime", "not_subscribed", "", roomId);
|
|
544
|
+
}
|
|
531
545
|
const channel = new channel_1.Channel(roomId, { propagate, scope, users });
|
|
532
546
|
const connectionRooms = this.subscriptions.get(connectionId);
|
|
533
547
|
const room = this.rooms.get(roomId);
|
|
548
|
+
// Every caller creates or fetches the room before subscribing to it.
|
|
549
|
+
if (room === undefined) {
|
|
550
|
+
throw kerror.get("core", "realtime", "room_not_found", roomId);
|
|
551
|
+
}
|
|
534
552
|
if (!connectionRooms || !connectionRooms.hasRoom(roomId)) {
|
|
535
553
|
subscribed = true;
|
|
536
|
-
this.registerSubscription(connectionId, roomId, request.input.volatile);
|
|
554
|
+
this.registerSubscription(connectionId, roomId, request.input.volatile ?? {});
|
|
537
555
|
notifyPromise = this.module.notifier.notifyUser(roomId, request, "in", {
|
|
538
556
|
count: room.size,
|
|
539
557
|
});
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import Notifier from "./notifier";
|
|
2
|
+
import { HotelClerk } from "./hotelClerk";
|
|
3
|
+
/**
|
|
4
|
+
* Wires the realtime components together. Both receive this module: the
|
|
5
|
+
* notifier reads `module.hotelClerk.rooms` to resolve a room's channels.
|
|
6
|
+
*/
|
|
2
7
|
declare class RealtimeModule {
|
|
3
8
|
notifier: Notifier;
|
|
4
9
|
hotelClerk: HotelClerk;
|
|
10
|
+
constructor();
|
|
5
11
|
init(): Promise<void>;
|
|
6
12
|
}
|
|
7
|
-
|
|
8
|
-
import { HotelClerk } from "./hotelClerk";
|
|
13
|
+
export = RealtimeModule;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
4
|
* to power modern apps
|
|
@@ -18,13 +19,19 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
const notifier_1 = __importDefault(require("./notifier"));
|
|
26
|
+
const hotelClerk_1 = require("./hotelClerk");
|
|
27
|
+
/**
|
|
28
|
+
* Wires the realtime components together. Both receive this module: the
|
|
29
|
+
* notifier reads `module.hotelClerk.rooms` to resolve a room's channels.
|
|
30
|
+
*/
|
|
24
31
|
class RealtimeModule {
|
|
25
32
|
constructor() {
|
|
26
|
-
this.notifier = new
|
|
27
|
-
this.hotelClerk = new HotelClerk(this);
|
|
33
|
+
this.notifier = new notifier_1.default(this);
|
|
34
|
+
this.hotelClerk = new hotelClerk_1.HotelClerk(this);
|
|
28
35
|
}
|
|
29
36
|
async init() {
|
|
30
37
|
await this.notifier.init();
|
|
@@ -1,34 +1,63 @@
|
|
|
1
|
-
|
|
1
|
+
import type { JSONObject } from "../../../types/JSONObject";
|
|
2
|
+
import type { KuzzleRequest } from "../../../api/request";
|
|
3
|
+
import type { RealtimeScope } from "../../../types";
|
|
4
|
+
import "../../../types/Global";
|
|
5
|
+
/**
|
|
6
|
+
* Coarse event a document action belongs to. Subscribers filter on it, so the
|
|
7
|
+
* mapping below is part of the realtime contract.
|
|
8
|
+
*/
|
|
9
|
+
type DocumentNotificationEvent = "write" | "delete" | "publish";
|
|
10
|
+
/**
|
|
11
|
+
* Constructor payload. Two producers fill it: `fromRequest` below, and
|
|
12
|
+
* `cluster/subscriber` when it rebuilds a notification from a decoded protobuf
|
|
13
|
+
* message — hence the wide `result` and `volatile`.
|
|
14
|
+
*/
|
|
15
|
+
interface DocumentNotificationOptions {
|
|
16
|
+
status: number;
|
|
17
|
+
action: string;
|
|
18
|
+
scope: RealtimeScope;
|
|
19
|
+
result: JSONObject;
|
|
20
|
+
node: string;
|
|
21
|
+
requestId?: string;
|
|
22
|
+
timestamp: number;
|
|
23
|
+
/**
|
|
24
|
+
* Nullable, like the other four below: they come straight off the request,
|
|
25
|
+
* where each is nullable, and a notification built from a request without one
|
|
26
|
+
* has always been emitted — and received — with `null` in that field.
|
|
27
|
+
*/
|
|
28
|
+
volatile: JSONObject | null;
|
|
29
|
+
index: string;
|
|
30
|
+
collection: string;
|
|
31
|
+
controller: string | null;
|
|
32
|
+
protocol: string | null;
|
|
33
|
+
}
|
|
2
34
|
/**
|
|
3
35
|
* Document notification document
|
|
4
|
-
*
|
|
5
|
-
* @class DocumentNotification
|
|
6
36
|
*/
|
|
7
37
|
declare class DocumentNotification {
|
|
38
|
+
type: string;
|
|
39
|
+
status: number;
|
|
40
|
+
action: string;
|
|
41
|
+
scope: RealtimeScope;
|
|
42
|
+
result: JSONObject;
|
|
43
|
+
node: string;
|
|
44
|
+
event: DocumentNotificationEvent;
|
|
45
|
+
requestId?: string;
|
|
46
|
+
timestamp: number;
|
|
47
|
+
volatile: JSONObject | null;
|
|
48
|
+
index: string;
|
|
49
|
+
collection: string;
|
|
50
|
+
controller: string | null;
|
|
51
|
+
protocol: string | null;
|
|
52
|
+
constructor(opts: DocumentNotificationOptions);
|
|
8
53
|
/**
|
|
9
54
|
* Instantiates a DocumentNotification object from a KuzzleRequest
|
|
10
55
|
*
|
|
11
|
-
* @param
|
|
12
|
-
* @param
|
|
13
|
-
* @param
|
|
14
|
-
* @param
|
|
15
|
-
* @param {result} content - Notification content
|
|
16
|
-
* @returns {DocumentNotification}
|
|
56
|
+
* @param request - the request object from which the notification is issued
|
|
57
|
+
* @param scope - The scope of the notification (in or out)
|
|
58
|
+
* @param action - Action performed on the document
|
|
59
|
+
* @param result - Notification content
|
|
17
60
|
*/
|
|
18
|
-
static fromRequest(request:
|
|
19
|
-
constructor(opts: any);
|
|
20
|
-
type: string;
|
|
21
|
-
status: any;
|
|
22
|
-
action: any;
|
|
23
|
-
scope: any;
|
|
24
|
-
result: any;
|
|
25
|
-
node: any;
|
|
26
|
-
event: string;
|
|
27
|
-
requestId: any;
|
|
28
|
-
timestamp: any;
|
|
29
|
-
volatile: any;
|
|
30
|
-
index: any;
|
|
31
|
-
collection: any;
|
|
32
|
-
controller: any;
|
|
33
|
-
protocol: any;
|
|
61
|
+
static fromRequest(request: KuzzleRequest, scope: RealtimeScope, action: string, result: JSONObject): DocumentNotification;
|
|
34
62
|
}
|
|
63
|
+
export = DocumentNotification;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
4
|
* to power modern apps
|
|
@@ -18,8 +19,8 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
const errors_1 = require("../../../kerror/errors");
|
|
23
|
+
require("../../../types/Global");
|
|
23
24
|
function getEvent(action) {
|
|
24
25
|
switch (action) {
|
|
25
26
|
case "create":
|
|
@@ -42,13 +43,11 @@ function getEvent(action) {
|
|
|
42
43
|
case "publish":
|
|
43
44
|
return "publish";
|
|
44
45
|
default:
|
|
45
|
-
throw new InternalError(`Unknown event type for action "${action}"`);
|
|
46
|
+
throw new errors_1.InternalError(`Unknown event type for action "${action}"`);
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* Document notification document
|
|
50
|
-
*
|
|
51
|
-
* @class DocumentNotification
|
|
52
51
|
*/
|
|
53
52
|
class DocumentNotification {
|
|
54
53
|
constructor(opts) {
|
|
@@ -70,19 +69,17 @@ class DocumentNotification {
|
|
|
70
69
|
/**
|
|
71
70
|
* Instantiates a DocumentNotification object from a KuzzleRequest
|
|
72
71
|
*
|
|
73
|
-
* @param
|
|
74
|
-
* @param
|
|
75
|
-
* @param
|
|
76
|
-
* @param
|
|
77
|
-
* @param {result} content - Notification content
|
|
78
|
-
* @returns {DocumentNotification}
|
|
72
|
+
* @param request - the request object from which the notification is issued
|
|
73
|
+
* @param scope - The scope of the notification (in or out)
|
|
74
|
+
* @param action - Action performed on the document
|
|
75
|
+
* @param result - Notification content
|
|
79
76
|
*/
|
|
80
77
|
static fromRequest(request, scope, action, result) {
|
|
81
78
|
return new DocumentNotification({
|
|
82
79
|
action,
|
|
83
|
-
collection: request.input.
|
|
80
|
+
collection: request.input.args.collection,
|
|
84
81
|
controller: request.input.controller,
|
|
85
|
-
index: request.input.
|
|
82
|
+
index: request.input.args.index,
|
|
86
83
|
node: global.kuzzle.id,
|
|
87
84
|
protocol: request.context.connection.protocol,
|
|
88
85
|
requestId: request.id,
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import DocumentNotification from "./document";
|
|
2
|
+
import ServerNotification from "./server";
|
|
3
|
+
import UserNotification from "./user";
|
|
4
|
+
declare const _default: {
|
|
5
|
+
DocumentNotification: typeof DocumentNotification;
|
|
6
|
+
ServerNotification: typeof ServerNotification;
|
|
7
|
+
UserNotification: typeof UserNotification;
|
|
8
|
+
};
|
|
9
|
+
export = _default;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
4
|
* to power modern apps
|
|
@@ -18,10 +19,15 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
const document_1 = __importDefault(require("./document"));
|
|
26
|
+
const server_1 = __importDefault(require("./server"));
|
|
27
|
+
const user_1 = __importDefault(require("./user"));
|
|
22
28
|
module.exports = {
|
|
23
|
-
DocumentNotification:
|
|
24
|
-
ServerNotification:
|
|
25
|
-
UserNotification:
|
|
29
|
+
DocumentNotification: document_1.default,
|
|
30
|
+
ServerNotification: server_1.default,
|
|
31
|
+
UserNotification: user_1.default,
|
|
26
32
|
};
|
|
27
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
import "../../../types/Global";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* @class ServerNotification
|
|
6
|
-
* @param {Request} request - the request object from which the notification is issued
|
|
7
|
-
* @param {string} type - Notification type
|
|
8
|
-
* @param {string} message - Notification message
|
|
3
|
+
* A notification issued by the server itself rather than by a request —
|
|
4
|
+
* currently only "TokenExpired".
|
|
9
5
|
*/
|
|
10
6
|
declare class ServerNotification {
|
|
11
|
-
constructor(type: any, message: any);
|
|
12
7
|
status: number;
|
|
13
8
|
info: string;
|
|
14
|
-
message:
|
|
15
|
-
type:
|
|
9
|
+
message: string;
|
|
10
|
+
type: string;
|
|
16
11
|
node: string;
|
|
12
|
+
constructor(type: string, message: string);
|
|
17
13
|
}
|
|
14
|
+
export = ServerNotification;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
4
|
* to power modern apps
|
|
@@ -18,14 +19,10 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
"
|
|
22
|
+
require("../../../types/Global");
|
|
22
23
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* @class ServerNotification
|
|
26
|
-
* @param {Request} request - the request object from which the notification is issued
|
|
27
|
-
* @param {string} type - Notification type
|
|
28
|
-
* @param {string} message - Notification message
|
|
24
|
+
* A notification issued by the server itself rather than by a request —
|
|
25
|
+
* currently only "TokenExpired".
|
|
29
26
|
*/
|
|
30
27
|
class ServerNotification {
|
|
31
28
|
constructor(type, message) {
|