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
|
@@ -50,14 +50,15 @@ exports.PluginContext = void 0;
|
|
|
50
50
|
const bluebird_1 = __importDefault(require("bluebird"));
|
|
51
51
|
const lodash_1 = __importDefault(require("lodash"));
|
|
52
52
|
const KoncordeWrapper_1 = require("../shared/KoncordeWrapper");
|
|
53
|
-
const
|
|
53
|
+
const request_1 = require("../../api/request");
|
|
54
|
+
const baseType_1 = __importDefault(require("../validation/baseType"));
|
|
54
55
|
const kerror = __importStar(require("../../kerror"));
|
|
55
56
|
const errors_1 = require("../../kerror/errors");
|
|
56
57
|
const Elasticsearch_1 = require("../../service/storage/Elasticsearch");
|
|
57
58
|
const mutex_1 = require("../../util/mutex");
|
|
58
59
|
const promback_1 = __importDefault(require("../../util/promback"));
|
|
59
60
|
const safeObject_1 = require("../../util/safeObject");
|
|
60
|
-
const
|
|
61
|
+
const backendCluster_1 = require("../backend/backendCluster");
|
|
61
62
|
const embeddedSdk_1 = require("../shared/sdk/embeddedSdk");
|
|
62
63
|
const store_1 = require("../shared/store");
|
|
63
64
|
const storeScopeEnum_1 = require("../storage/storeScopeEnum");
|
|
@@ -116,14 +117,16 @@ class PluginContext {
|
|
|
116
117
|
return Elasticsearch_1.Elasticsearch.buildClient(global.kuzzle.config.services.storageEngine.client);
|
|
117
118
|
}
|
|
118
119
|
this.constructors = {
|
|
119
|
-
BaseValidationType:
|
|
120
|
+
BaseValidationType: baseType_1.default,
|
|
120
121
|
ESClient: PluginContextESClient,
|
|
121
122
|
Koncorde: KoncordeWrapper_1.Koncorde,
|
|
122
123
|
Mutex: mutex_1.Mutex,
|
|
123
124
|
Repository: PluginContextRepository,
|
|
125
|
+
// A plain function called with `new`: it returns an object, so `new`
|
|
126
|
+
// yields that object — which is what plugins have always relied on.
|
|
124
127
|
Request: instantiateRequest,
|
|
125
|
-
RequestContext:
|
|
126
|
-
RequestInput:
|
|
128
|
+
RequestContext: request_1.RequestContext,
|
|
129
|
+
RequestInput: request_1.RequestInput,
|
|
127
130
|
};
|
|
128
131
|
Object.freeze(this.constructors);
|
|
129
132
|
this.logger = globalThis.kuzzle.log.child(`${pluginName}`);
|
|
@@ -140,8 +143,8 @@ class PluginContext {
|
|
|
140
143
|
Object.freeze(this.log);
|
|
141
144
|
/* context.accessors ================================================== */
|
|
142
145
|
this.accessors = {
|
|
143
|
-
cluster: new
|
|
144
|
-
execute
|
|
146
|
+
cluster: new backendCluster_1.BackendCluster(),
|
|
147
|
+
execute,
|
|
145
148
|
nodeId: global.nodeId,
|
|
146
149
|
sdk: new embeddedSdk_1.EmbeddedSDK(),
|
|
147
150
|
storage: {
|
|
@@ -154,7 +157,7 @@ class PluginContext {
|
|
|
154
157
|
},
|
|
155
158
|
subscription: {
|
|
156
159
|
register: (connectionId, index, collection, filters) => {
|
|
157
|
-
const request = new
|
|
160
|
+
const request = new request_1.KuzzleRequest({
|
|
158
161
|
action: "subscribe",
|
|
159
162
|
body: filters,
|
|
160
163
|
collection,
|
|
@@ -179,91 +182,129 @@ class PluginContext {
|
|
|
179
182
|
}
|
|
180
183
|
exports.PluginContext = PluginContext;
|
|
181
184
|
/**
|
|
182
|
-
*
|
|
183
|
-
* @
|
|
185
|
+
* The implementation says what it really returns: `null` in callback mode.
|
|
186
|
+
* The signature above is the declared one — see {@link PluginExecute}.
|
|
184
187
|
*/
|
|
185
188
|
function execute(request, callback) {
|
|
186
|
-
|
|
189
|
+
// `null` means "no callback", as `undefined` does: plugins pass it to ask
|
|
190
|
+
// for a promise explicitly.
|
|
191
|
+
if (callback !== undefined &&
|
|
192
|
+
callback !== null &&
|
|
193
|
+
!isPrombackCallback(callback)) {
|
|
187
194
|
const error = contextError.get("invalid_callback", typeof callback);
|
|
188
195
|
global.kuzzle.log.error(error);
|
|
189
196
|
return bluebird_1.default.reject(error);
|
|
190
197
|
}
|
|
191
|
-
const promback = new promback_1.default(callback);
|
|
198
|
+
const promback = new promback_1.default(isPrombackCallback(callback) ? callback : null);
|
|
192
199
|
if (!request || lodash_1.default.isEmpty(request)) {
|
|
193
|
-
return promback.reject(contextError.get("missing_request"));
|
|
200
|
+
return asRequestPromise(promback.reject(contextError.get("missing_request")), request);
|
|
194
201
|
}
|
|
195
202
|
if (request.input.controller === "realtime" &&
|
|
203
|
+
request.input.action !== null &&
|
|
196
204
|
["subscribe", "unsubscribe"].includes(request.input.action)) {
|
|
197
|
-
return promback.reject(contextError.get("unavailable_realtime", request.input.action));
|
|
205
|
+
return asRequestPromise(promback.reject(contextError.get("unavailable_realtime", request.input.action)), request);
|
|
198
206
|
}
|
|
199
207
|
request.clearError();
|
|
200
208
|
request.status = 102;
|
|
201
209
|
global.kuzzle.funnel
|
|
202
210
|
.executePluginRequest(request)
|
|
203
211
|
.then((result) => {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
});
|
|
212
|
+
// No status: a pending 102 becomes 200, any other is kept.
|
|
213
|
+
request.response.configure({ result });
|
|
207
214
|
promback.resolve(request);
|
|
208
215
|
})
|
|
209
216
|
.catch((err) => {
|
|
210
217
|
promback.reject(err);
|
|
211
218
|
});
|
|
212
|
-
return promback.deferred;
|
|
219
|
+
return asRequestPromise(promback.deferred, request);
|
|
220
|
+
}
|
|
221
|
+
/** Whether a plugin handed `accessors.execute` something callable. */
|
|
222
|
+
function isPrombackCallback(value) {
|
|
223
|
+
return typeof value === "function";
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* What `execute` answers, from a `Promback`'s deferred.
|
|
227
|
+
*
|
|
228
|
+
* `deferred` is null in callback mode — the caller gets its answer that way,
|
|
229
|
+
* and the JavaScript returned that null — and otherwise settles on
|
|
230
|
+
* `KuzzleRequest | undefined`, because `Promback.resolve()` may be called
|
|
231
|
+
* with nothing. This one is always settled with the request it was handed,
|
|
232
|
+
* so mapping through it is what turns the union into the contract.
|
|
233
|
+
*/
|
|
234
|
+
function asRequestPromise(deferred, request) {
|
|
235
|
+
return deferred === null ? null : deferred.then(() => request);
|
|
213
236
|
}
|
|
214
237
|
/**
|
|
215
|
-
*
|
|
216
|
-
*
|
|
238
|
+
* Copies the three routing fields a plugin's request inherits from the one it
|
|
239
|
+
* was built from.
|
|
217
240
|
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
* @returns {Request}
|
|
241
|
+
* Through `input.args`, which is what `input.resource`'s own deprecation
|
|
242
|
+
* notice points at and what those accessors read and write anyway — the loop
|
|
243
|
+
* this replaces asked `RequestResource` for an index signature it does not
|
|
244
|
+
* have.
|
|
223
245
|
*/
|
|
246
|
+
function inheritResource(target, source) {
|
|
247
|
+
const to = target.input.args;
|
|
248
|
+
const from = source.input.args;
|
|
249
|
+
for (const field of ["_id", "index", "collection"]) {
|
|
250
|
+
if (!to[field] && from[field]) {
|
|
251
|
+
to[field] = from[field];
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
224
255
|
function instantiateRequest(request, data, options = {}) {
|
|
225
|
-
|
|
226
|
-
if (!_request) {
|
|
256
|
+
if (!request) {
|
|
227
257
|
throw contextError.get("missing_request_data");
|
|
228
258
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
259
|
+
// Two call shapes: `(request, data, options)` and `(data, options)`. The
|
|
260
|
+
// first argument is what tells them apart, and reassigning it — which is
|
|
261
|
+
// what the JavaScript did — throws away the narrowing that `instanceof`
|
|
262
|
+
// had just established.
|
|
263
|
+
let _request;
|
|
264
|
+
let _data;
|
|
265
|
+
let _options;
|
|
266
|
+
if (request instanceof request_1.KuzzleRequest) {
|
|
267
|
+
_request = request;
|
|
268
|
+
_data = data;
|
|
269
|
+
_options = options;
|
|
270
|
+
Object.assign(_options, _request.context.toJSON());
|
|
235
271
|
}
|
|
236
272
|
else {
|
|
237
|
-
|
|
273
|
+
_request = null;
|
|
274
|
+
_data = request;
|
|
275
|
+
_options = data ?? options;
|
|
238
276
|
}
|
|
239
|
-
const target = new
|
|
277
|
+
const target = new request_1.KuzzleRequest(_data, _options);
|
|
240
278
|
// forward informations if a request object was supplied
|
|
241
|
-
if (_request) {
|
|
242
|
-
|
|
243
|
-
if (!target.input.resource[resource]) {
|
|
244
|
-
target.input.resource[resource] = _request.input.resource[resource];
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
for (const arg of Object.keys(_request.input.args)) {
|
|
248
|
-
if (target.input.args[arg] === undefined) {
|
|
249
|
-
target.input.args[arg] = _request.input.args[arg];
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
if (!_data || _data.jwt === undefined) {
|
|
253
|
-
target.input.jwt = _request.input.jwt;
|
|
254
|
-
}
|
|
255
|
-
if (_data) {
|
|
256
|
-
target.input.volatile = {
|
|
257
|
-
..._request.input.volatile,
|
|
258
|
-
..._data.volatile,
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
else {
|
|
262
|
-
target.input.volatile = _request.input.volatile;
|
|
263
|
-
}
|
|
279
|
+
if (_request !== null) {
|
|
280
|
+
inheritInput(target, _request, _data);
|
|
264
281
|
}
|
|
265
282
|
return target;
|
|
266
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* Copies onto `target` what it did not receive of its own: the routing
|
|
286
|
+
* fields, the arguments, the token and the volatile data.
|
|
287
|
+
*/
|
|
288
|
+
function inheritInput(target, source, data) {
|
|
289
|
+
inheritResource(target, source);
|
|
290
|
+
for (const arg of Object.keys(source.input.args)) {
|
|
291
|
+
if (target.input.args[arg] === undefined) {
|
|
292
|
+
target.input.args[arg] = source.input.args[arg];
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (data?.jwt === undefined && source.input.jwt !== null) {
|
|
296
|
+
target.input.jwt = source.input.jwt;
|
|
297
|
+
}
|
|
298
|
+
if (data) {
|
|
299
|
+
target.input.volatile = {
|
|
300
|
+
...source.input.volatile,
|
|
301
|
+
...data.volatile,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
else if (source.input.volatile !== null) {
|
|
305
|
+
target.input.volatile = source.input.volatile;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
267
308
|
/**
|
|
268
309
|
* Returns a currified function of pluginsManager.registerStrategy
|
|
269
310
|
*
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import AbstractManifest from "../shared/abstractManifest";
|
|
2
2
|
declare class PluginManifest extends AbstractManifest {
|
|
3
3
|
privileged: boolean;
|
|
4
|
+
load(): {
|
|
5
|
+
kuzzleVersion: string;
|
|
6
|
+
name: string;
|
|
7
|
+
};
|
|
4
8
|
}
|
|
5
|
-
|
|
9
|
+
export = PluginManifest;
|
|
@@ -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,27 +19,33 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
const lodash_1 = require("lodash");
|
|
26
|
+
const kerror_1 = require("../../kerror");
|
|
27
|
+
const abstractManifest_1 = __importDefault(require("../shared/abstractManifest"));
|
|
28
|
+
const kerror = (0, kerror_1.wrap)("plugin", "manifest");
|
|
29
|
+
class PluginManifest extends abstractManifest_1.default {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
28
32
|
this.privileged = false;
|
|
29
33
|
}
|
|
30
34
|
load() {
|
|
31
|
-
super.load();
|
|
32
|
-
// Ensure ES will accept the plugin name as index
|
|
33
|
-
|
|
35
|
+
const loaded = super.load();
|
|
36
|
+
// Ensure ES will accept the plugin name as index. `super.load()` answers
|
|
37
|
+
// the name it established, which is what the `String()` here used to
|
|
38
|
+
// stand in for.
|
|
39
|
+
if (!/^[\w-]+$/.test(loaded.name)) {
|
|
34
40
|
throw kerror.get("invalid_name", this.path);
|
|
35
41
|
}
|
|
36
|
-
if (!
|
|
42
|
+
if (!(0, lodash_1.isNil)(this.raw) && !(0, lodash_1.isNil)(this.raw.privileged)) {
|
|
37
43
|
if (typeof this.raw.privileged !== "boolean") {
|
|
38
44
|
throw kerror.get("invalid_privileged", this.path, typeof this.raw.privileged);
|
|
39
45
|
}
|
|
40
46
|
this.privileged = this.raw.privileged;
|
|
41
47
|
}
|
|
48
|
+
return loaded;
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
module.exports = PluginManifest;
|
|
@@ -1,53 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import type { JSONObject } from "../../types/JSONObject";
|
|
2
|
+
import { ObjectRepository } from "../shared/ObjectRepository";
|
|
3
|
+
/**
|
|
4
|
+
* A plugin's private-storage document.
|
|
5
|
+
*
|
|
6
|
+
* `ObjectRepository` requires `_id` on its type parameter, but the plugin-facing
|
|
7
|
+
* `Repository` contract passes a bare `JSONObject` — a document being created
|
|
8
|
+
* legitimately has no id yet. The public methods below therefore take
|
|
9
|
+
* `JSONObject` and assert the shape at the one place the base needs it, which
|
|
10
|
+
* is also exactly where the runtime has always read `object._id`.
|
|
11
|
+
*/
|
|
12
|
+
type PluginDocument = JSONObject & {
|
|
13
|
+
_id: string;
|
|
14
|
+
};
|
|
15
|
+
interface PluginRepositoryOptions {
|
|
16
|
+
ObjectConstructor?: new () => unknown;
|
|
17
|
+
}
|
|
18
|
+
declare class PluginRepository extends ObjectRepository<PluginDocument> {
|
|
19
|
+
constructor(store: {
|
|
20
|
+
index: string;
|
|
21
|
+
}, collection: string);
|
|
22
|
+
init(options?: PluginRepositoryOptions): void;
|
|
7
23
|
/**
|
|
8
24
|
* Serializes the object before being persisted to database.
|
|
9
|
-
*
|
|
10
|
-
* @param {object} data - The object to serialize
|
|
11
|
-
* @returns {object}
|
|
12
|
-
*/
|
|
13
|
-
serializeToDatabase(data: object): object;
|
|
14
|
-
/**
|
|
15
|
-
* @param {object} object
|
|
16
|
-
* @param {object} [options]
|
|
17
|
-
* @returns {Promise}
|
|
18
|
-
*/
|
|
19
|
-
create(object: object, options?: object): Promise<any>;
|
|
20
|
-
/**
|
|
21
|
-
* @param {object} object
|
|
22
|
-
* @param {object} [options]
|
|
23
|
-
* @returns {Promise}
|
|
24
|
-
*/
|
|
25
|
-
createOrReplace(object: object, options?: object): Promise<any>;
|
|
26
|
-
/**
|
|
27
|
-
* @param {object} object
|
|
28
|
-
* @param {object} [options]
|
|
29
|
-
* @returns {Promise}
|
|
30
25
|
*/
|
|
31
|
-
|
|
26
|
+
serializeToDatabase(data: PluginDocument): JSONObject;
|
|
27
|
+
create(object: JSONObject, options?: JSONObject): any;
|
|
28
|
+
createOrReplace(object: JSONObject, options?: JSONObject): any;
|
|
29
|
+
replace(object: JSONObject, options?: JSONObject): any;
|
|
30
|
+
update(object: JSONObject, options?: JSONObject): any;
|
|
32
31
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* @returns {Promise}
|
|
36
|
-
*/
|
|
37
|
-
update(object: object, options?: object): Promise<any>;
|
|
38
|
-
/**
|
|
39
|
-
* If we load a user that does not exists, we have to resolve the promise with null
|
|
40
|
-
* instead of throwing NotFoundError
|
|
32
|
+
* If we load a user that does not exists, we have to resolve the promise with
|
|
33
|
+
* null instead of throwing NotFoundError.
|
|
41
34
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
35
|
+
* Declared `Promise<PluginDocument>` all the same, as the base's `load()`
|
|
36
|
+
* is — see there.
|
|
44
37
|
*/
|
|
45
|
-
load(documentId: string): Promise<
|
|
38
|
+
load(documentId: string): Promise<PluginDocument>;
|
|
46
39
|
/**
|
|
47
|
-
*
|
|
48
|
-
* @param {object} [options]
|
|
49
|
-
* @returns {Promise}
|
|
40
|
+
* Unlike its base, this one deletes by id — the shape a plugin holds.
|
|
50
41
|
*/
|
|
51
|
-
delete(documentId: string, options?:
|
|
42
|
+
delete(documentId: string | PluginDocument, options?: JSONObject): Promise<void>;
|
|
52
43
|
}
|
|
53
|
-
|
|
44
|
+
export = PluginRepository;
|
|
@@ -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,13 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
class PluginRepository extends ObjectRepository {
|
|
22
|
+
const lodash_1 = require("lodash");
|
|
23
|
+
const errors_1 = require("../../kerror/errors");
|
|
24
|
+
const cacheDbEnum_1 = require("../cache/cacheDbEnum");
|
|
25
|
+
const ObjectRepository_1 = require("../shared/ObjectRepository");
|
|
26
|
+
class PluginRepository extends ObjectRepository_1.ObjectRepository {
|
|
27
27
|
constructor(store, collection) {
|
|
28
|
-
super({ cache: cacheDbEnum.NONE, store });
|
|
28
|
+
super({ cache: cacheDbEnum_1.cacheDbEnum.NONE, store });
|
|
29
29
|
this.collection = collection;
|
|
30
30
|
this.ObjectConstructor = Object;
|
|
31
31
|
}
|
|
@@ -38,74 +38,59 @@ class PluginRepository extends ObjectRepository {
|
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Serializes the object before being persisted to database.
|
|
41
|
-
*
|
|
42
|
-
* @param {object} data - The object to serialize
|
|
43
|
-
* @returns {object}
|
|
44
41
|
*/
|
|
45
42
|
serializeToDatabase(data) {
|
|
46
|
-
// avoid the data var mutation
|
|
47
|
-
|
|
43
|
+
// avoid the data var mutation. Typed as JSONObject, not PluginDocument:
|
|
44
|
+
// dropping `_id` is the whole point, and `_id` is required on the latter.
|
|
45
|
+
const result = (0, lodash_1.merge)({}, data);
|
|
48
46
|
delete result._id;
|
|
49
47
|
return result;
|
|
50
48
|
}
|
|
51
|
-
/**
|
|
52
|
-
* @param {object} object
|
|
53
|
-
* @param {object} [options]
|
|
54
|
-
* @returns {Promise}
|
|
55
|
-
*/
|
|
56
49
|
create(object, options = {}) {
|
|
57
|
-
|
|
58
|
-
|
|
50
|
+
return this.persistToDatabase(object, {
|
|
51
|
+
method: "create",
|
|
52
|
+
...options,
|
|
53
|
+
});
|
|
59
54
|
}
|
|
60
|
-
/**
|
|
61
|
-
* @param {object} object
|
|
62
|
-
* @param {object} [options]
|
|
63
|
-
* @returns {Promise}
|
|
64
|
-
*/
|
|
65
55
|
createOrReplace(object, options = {}) {
|
|
66
|
-
|
|
67
|
-
|
|
56
|
+
return this.persistToDatabase(object, {
|
|
57
|
+
method: "createOrReplace",
|
|
58
|
+
...options,
|
|
59
|
+
});
|
|
68
60
|
}
|
|
69
|
-
/**
|
|
70
|
-
* @param {object} object
|
|
71
|
-
* @param {object} [options]
|
|
72
|
-
* @returns {Promise}
|
|
73
|
-
*/
|
|
74
61
|
replace(object, options = {}) {
|
|
75
|
-
|
|
76
|
-
|
|
62
|
+
return this.persistToDatabase(object, {
|
|
63
|
+
method: "replace",
|
|
64
|
+
...options,
|
|
65
|
+
});
|
|
77
66
|
}
|
|
78
|
-
/**
|
|
79
|
-
* @param {object} object
|
|
80
|
-
* @param {object} [options]
|
|
81
|
-
* @returns {Promise}
|
|
82
|
-
*/
|
|
83
67
|
update(object, options = {}) {
|
|
84
|
-
|
|
85
|
-
|
|
68
|
+
return this.persistToDatabase(object, {
|
|
69
|
+
method: "update",
|
|
70
|
+
...options,
|
|
71
|
+
});
|
|
86
72
|
}
|
|
87
73
|
/**
|
|
88
|
-
* If we load a user that does not exists, we have to resolve the promise with
|
|
89
|
-
* instead of throwing NotFoundError
|
|
74
|
+
* If we load a user that does not exists, we have to resolve the promise with
|
|
75
|
+
* null instead of throwing NotFoundError.
|
|
90
76
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
77
|
+
* Declared `Promise<PluginDocument>` all the same, as the base's `load()`
|
|
78
|
+
* is — see there.
|
|
93
79
|
*/
|
|
94
80
|
load(documentId) {
|
|
95
81
|
return super.load(documentId).catch((error) => {
|
|
96
|
-
if (this.collection === "users" && error instanceof NotFoundError) {
|
|
97
|
-
return
|
|
82
|
+
if (this.collection === "users" && error instanceof errors_1.NotFoundError) {
|
|
83
|
+
return null;
|
|
98
84
|
}
|
|
99
85
|
throw error;
|
|
100
86
|
});
|
|
101
87
|
}
|
|
102
88
|
/**
|
|
103
|
-
*
|
|
104
|
-
* @param {object} [options]
|
|
105
|
-
* @returns {Promise}
|
|
89
|
+
* Unlike its base, this one deletes by id — the shape a plugin holds.
|
|
106
90
|
*/
|
|
107
91
|
delete(documentId, options = {}) {
|
|
108
|
-
|
|
92
|
+
const _id = typeof documentId === "string" ? documentId : documentId._id;
|
|
93
|
+
return super.delete({ _id }, options);
|
|
109
94
|
}
|
|
110
95
|
}
|
|
111
96
|
module.exports = PluginRepository;
|