kuzzle 2.19.2 → 2.19.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/controllers/adminController.js +94 -80
- package/lib/api/controllers/authController.js +239 -212
- package/lib/api/controllers/baseController.js +89 -51
- package/lib/api/controllers/bulkController.js +62 -49
- package/lib/api/controllers/clusterController.js +6 -8
- package/lib/api/controllers/collectionController.js +140 -129
- package/lib/api/controllers/debugController.d.ts +2 -2
- package/lib/api/controllers/debugController.js +33 -31
- package/lib/api/controllers/documentController.js +365 -274
- package/lib/api/controllers/index.js +13 -13
- package/lib/api/controllers/indexController.js +46 -50
- package/lib/api/controllers/memoryStorageController.js +410 -360
- package/lib/api/controllers/realtimeController.js +37 -36
- package/lib/api/controllers/securityController.js +553 -412
- package/lib/api/controllers/serverController.js +111 -104
- package/lib/api/documentExtractor.js +75 -68
- package/lib/api/funnel.js +411 -312
- package/lib/api/httpRoutes.js +1493 -324
- package/lib/api/openapi/OpenApiManager.d.ts +1 -1
- package/lib/api/openapi/OpenApiManager.js +22 -22
- package/lib/api/openapi/components/document/count.yaml +1 -1
- package/lib/api/openapi/components/document/create.yaml +2 -2
- package/lib/api/openapi/components/document/delete.yaml +1 -1
- package/lib/api/openapi/components/document/deleteByQuery.yaml +1 -1
- package/lib/api/openapi/components/document/exists.yaml +1 -1
- package/lib/api/openapi/components/document/get.yaml +2 -2
- package/lib/api/openapi/components/document/index.js +12 -12
- package/lib/api/openapi/components/document/replace.yaml +1 -1
- package/lib/api/openapi/components/document/scroll.yaml +1 -1
- package/lib/api/openapi/components/document/validate.yaml +1 -1
- package/lib/api/openapi/components/index.d.ts +2 -2
- package/lib/api/openapi/components/index.js +1 -1
- package/lib/api/openapi/components/security/index.js +1 -1
- package/lib/api/openapi/components/security/upsertUser.yaml +2 -3
- package/lib/api/openapi/index.d.ts +1 -1
- package/lib/api/openapi/openApiGenerator.d.ts +1 -1
- package/lib/api/openapi/openApiGenerator.js +7 -7
- package/lib/api/rateLimiter.js +12 -13
- package/lib/api/request/index.d.ts +4 -4
- package/lib/api/request/kuzzleRequest.d.ts +9 -9
- package/lib/api/request/kuzzleRequest.js +89 -87
- package/lib/api/request/requestContext.d.ts +2 -2
- package/lib/api/request/requestContext.js +17 -17
- package/lib/api/request/requestInput.d.ts +1 -1
- package/lib/api/request/requestInput.js +19 -19
- package/lib/api/request/requestResponse.d.ts +4 -4
- package/lib/api/request/requestResponse.js +31 -33
- package/lib/cluster/command.js +48 -44
- package/lib/cluster/idCardHandler.d.ts +1 -1
- package/lib/cluster/idCardHandler.js +15 -15
- package/lib/cluster/index.js +2 -2
- package/lib/cluster/node.js +301 -269
- package/lib/cluster/publisher.js +45 -46
- package/lib/cluster/state.d.ts +5 -5
- package/lib/cluster/state.js +8 -8
- package/lib/cluster/subscriber.js +163 -113
- package/lib/cluster/workers/IDCardRenewer.js +33 -32
- package/lib/config/default.config.d.ts +1 -1
- package/lib/config/default.config.js +212 -171
- package/lib/config/documentEventAliases.js +6 -6
- package/lib/config/index.js +161 -98
- package/lib/config/sdkCompatibility.json +8 -8
- package/lib/core/auth/formatProcessing.js +7 -7
- package/lib/core/auth/passportResponse.js +7 -7
- package/lib/core/auth/passportWrapper.js +34 -30
- package/lib/core/auth/tokenManager.d.ts +2 -2
- package/lib/core/auth/tokenManager.js +11 -10
- package/lib/core/backend/applicationManager.d.ts +1 -1
- package/lib/core/backend/applicationManager.js +2 -2
- package/lib/core/backend/backend.d.ts +3 -3
- package/lib/core/backend/backend.js +34 -31
- package/lib/core/backend/backendCluster.d.ts +2 -2
- package/lib/core/backend/backendCluster.js +5 -5
- package/lib/core/backend/backendConfig.d.ts +2 -2
- package/lib/core/backend/backendConfig.js +3 -3
- package/lib/core/backend/backendController.d.ts +2 -2
- package/lib/core/backend/backendController.js +9 -10
- package/lib/core/backend/backendErrors.d.ts +3 -3
- package/lib/core/backend/backendErrors.js +2 -1
- package/lib/core/backend/backendHook.d.ts +2 -2
- package/lib/core/backend/backendHook.js +5 -5
- package/lib/core/backend/backendImport.d.ts +3 -3
- package/lib/core/backend/backendImport.js +23 -23
- package/lib/core/backend/backendOpenApi.d.ts +2 -2
- package/lib/core/backend/backendOpenApi.js +16 -16
- package/lib/core/backend/backendPipe.d.ts +2 -2
- package/lib/core/backend/backendPipe.js +6 -6
- package/lib/core/backend/backendPlugin.d.ts +4 -4
- package/lib/core/backend/backendPlugin.js +14 -14
- package/lib/core/backend/backendStorage.d.ts +2 -2
- package/lib/core/backend/backendStorage.js +1 -2
- package/lib/core/backend/backendVault.d.ts +2 -2
- package/lib/core/backend/backendVault.js +3 -3
- package/lib/core/backend/index.d.ts +14 -14
- package/lib/core/backend/internalLogger.d.ts +1 -1
- package/lib/core/backend/internalLogger.js +5 -5
- package/lib/core/cache/cacheDbEnum.js +4 -4
- package/lib/core/cache/cacheEngine.js +79 -85
- package/lib/core/network/accessLogger.js +126 -120
- package/lib/core/network/clientConnection.js +5 -5
- package/lib/core/network/context.js +8 -8
- package/lib/core/network/entryPoint.js +100 -85
- package/lib/core/network/httpRouter/index.js +63 -60
- package/lib/core/network/httpRouter/routeHandler.js +18 -19
- package/lib/core/network/httpRouter/routePart.js +23 -19
- package/lib/core/network/protocolManifest.js +3 -3
- package/lib/core/network/protocols/httpMessage.js +8 -10
- package/lib/core/network/protocols/httpwsProtocol.js +305 -250
- package/lib/core/network/protocols/internalProtocol.js +27 -24
- package/lib/core/network/protocols/mqttProtocol.js +106 -96
- package/lib/core/network/protocols/protocol.js +20 -17
- package/lib/core/network/router.js +56 -46
- package/lib/core/plugin/plugin.js +151 -120
- package/lib/core/plugin/pluginContext.d.ts +7 -7
- package/lib/core/plugin/pluginContext.js +48 -44
- package/lib/core/plugin/pluginManifest.js +13 -12
- package/lib/core/plugin/pluginRepository.js +26 -27
- package/lib/core/plugin/pluginsManager.js +425 -304
- package/lib/core/plugin/privilegedContext.js +3 -3
- package/lib/core/realtime/actionEnum.js +1 -1
- package/lib/core/realtime/channel.d.ts +1 -1
- package/lib/core/realtime/channel.js +22 -22
- package/lib/core/realtime/connectionRooms.d.ts +1 -1
- package/lib/core/realtime/hotelClerk.d.ts +2 -2
- package/lib/core/realtime/hotelClerk.js +53 -50
- package/lib/core/realtime/index.js +5 -5
- package/lib/core/realtime/notification/document.js +25 -25
- package/lib/core/realtime/notification/index.js +4 -4
- package/lib/core/realtime/notification/server.js +3 -3
- package/lib/core/realtime/notification/user.js +4 -4
- package/lib/core/realtime/notifier.js +113 -75
- package/lib/core/realtime/room.d.ts +1 -1
- package/lib/core/realtime/subscription.d.ts +1 -1
- package/lib/core/realtime/subscription.js +1 -1
- package/lib/core/security/index.js +8 -8
- package/lib/core/security/profileRepository.d.ts +6 -6
- package/lib/core/security/profileRepository.js +48 -45
- package/lib/core/security/roleRepository.js +127 -115
- package/lib/core/security/securityLoader.js +70 -63
- package/lib/core/security/tokenRepository.js +132 -118
- package/lib/core/security/userRepository.js +104 -88
- package/lib/core/shared/KoncordeWrapper.d.ts +1 -1
- package/lib/core/shared/KoncordeWrapper.js +3 -1
- package/lib/core/shared/abstractManifest.js +22 -23
- package/lib/core/shared/repository.js +69 -67
- package/lib/core/shared/sdk/embeddedSdk.d.ts +2 -2
- package/lib/core/shared/sdk/embeddedSdk.js +36 -32
- package/lib/core/shared/sdk/funnelProtocol.d.ts +1 -1
- package/lib/core/shared/sdk/funnelProtocol.js +11 -11
- package/lib/core/shared/sdk/impersonatedSdk.js +19 -18
- package/lib/core/shared/store.js +127 -32
- package/lib/core/statistics/index.js +2 -2
- package/lib/core/statistics/statistics.js +99 -85
- package/lib/core/storage/clientAdapter.js +219 -136
- package/lib/core/storage/indexCache.js +3 -3
- package/lib/core/storage/storageEngine.js +10 -13
- package/lib/core/storage/storeScopeEnum.js +3 -3
- package/lib/core/validation/baseType.js +12 -10
- package/lib/core/validation/index.js +2 -2
- package/lib/core/validation/types/anything.js +4 -4
- package/lib/core/validation/types/boolean.js +7 -7
- package/lib/core/validation/types/date.js +165 -131
- package/lib/core/validation/types/email.js +18 -21
- package/lib/core/validation/types/enum.js +34 -21
- package/lib/core/validation/types/geoPoint.js +7 -7
- package/lib/core/validation/types/geoShape.js +148 -125
- package/lib/core/validation/types/integer.js +9 -9
- package/lib/core/validation/types/ipAddress.js +17 -19
- package/lib/core/validation/types/numeric.js +36 -29
- package/lib/core/validation/types/object.js +19 -19
- package/lib/core/validation/types/string.js +36 -29
- package/lib/core/validation/types/url.js +17 -19
- package/lib/core/validation/validation.js +422 -378
- package/lib/kerror/codes/1-services.json +7 -1
- package/lib/kerror/codes/4-plugin.json +2 -2
- package/lib/kerror/codes/index.js +85 -63
- package/lib/kerror/errors/badRequestError.d.ts +1 -1
- package/lib/kerror/errors/externalServiceError.d.ts +1 -1
- package/lib/kerror/errors/forbiddenError.d.ts +1 -1
- package/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
- package/lib/kerror/errors/index.d.ts +15 -15
- package/lib/kerror/errors/internalError.d.ts +1 -1
- package/lib/kerror/errors/kuzzleError.d.ts +1 -1
- package/lib/kerror/errors/multipleErrorsError.d.ts +1 -1
- package/lib/kerror/errors/multipleErrorsError.js +1 -1
- package/lib/kerror/errors/notFoundError.d.ts +1 -1
- package/lib/kerror/errors/partialError.d.ts +1 -1
- package/lib/kerror/errors/partialError.js +1 -1
- package/lib/kerror/errors/pluginImplementationError.d.ts +1 -1
- package/lib/kerror/errors/pluginImplementationError.js +2 -1
- package/lib/kerror/errors/preconditionError.d.ts +1 -1
- package/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
- package/lib/kerror/errors/sizeLimitError.d.ts +1 -1
- package/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
- package/lib/kerror/errors/unauthorizedError.d.ts +1 -1
- package/lib/kerror/index.d.ts +3 -3
- package/lib/kerror/index.js +17 -16
- package/lib/kuzzle/dumpGenerator.js +130 -114
- package/lib/kuzzle/event/kuzzleEventEmitter.js +96 -70
- package/lib/kuzzle/event/pipeRunner.js +25 -24
- package/lib/kuzzle/event/waterfall.js +13 -15
- package/lib/kuzzle/index.js +2 -2
- package/lib/kuzzle/internalIndexHandler.js +80 -59
- package/lib/kuzzle/kuzzle.js +99 -99
- package/lib/kuzzle/kuzzleStateEnum.js +1 -1
- package/lib/kuzzle/log.js +23 -18
- package/lib/kuzzle/vault.js +34 -19
- package/lib/model/security/profile.d.ts +3 -3
- package/lib/model/security/profile.js +38 -37
- package/lib/model/security/rights.js +5 -5
- package/lib/model/security/role.d.ts +3 -3
- package/lib/model/security/role.js +25 -26
- package/lib/model/security/token.d.ts +1 -1
- package/lib/model/security/token.js +4 -4
- package/lib/model/security/user.d.ts +2 -2
- package/lib/model/security/user.js +9 -9
- package/lib/model/storage/apiKey.js +43 -33
- package/lib/model/storage/baseModel.js +49 -45
- package/lib/service/cache/redis.js +60 -55
- package/lib/service/service.js +17 -17
- package/lib/service/storage/elasticsearch.js +839 -755
- package/lib/service/storage/esWrapper.js +103 -86
- package/lib/service/storage/queryTranslator.js +52 -59
- package/lib/types/Controller.d.ts +3 -3
- package/lib/types/ControllerDefinition.d.ts +3 -3
- package/lib/types/DebugModule.d.ts +2 -2
- package/lib/types/DebugModule.js +1 -1
- package/lib/types/Global.d.ts +1 -1
- package/lib/types/HttpStream.d.ts +2 -1
- package/lib/types/HttpStream.js +7 -5
- package/lib/types/Kuzzle.d.ts +1 -1
- package/lib/types/KuzzleDocument.d.ts +1 -1
- package/lib/types/OpenApiDefinition.d.ts +1 -1
- package/lib/types/PasswordPolicy.d.ts +1 -1
- package/lib/types/Plugin.d.ts +6 -6
- package/lib/types/Plugin.js +2 -2
- package/lib/types/Policy.d.ts +1 -1
- package/lib/types/RequestPayload.d.ts +1 -1
- package/lib/types/ResponsePayload.d.ts +1 -1
- package/lib/types/Token.d.ts +1 -1
- package/lib/types/User.d.ts +1 -1
- package/lib/types/config/DumpConfiguration.d.ts +8 -8
- package/lib/types/config/HttpConfiguration.d.ts +1 -1
- package/lib/types/config/KuzzleConfiguration.d.ts +1 -1
- package/lib/types/config/LimitsConfiguration.d.ts +8 -8
- package/lib/types/config/PluginsConfiguration.d.ts +4 -4
- package/lib/types/config/SecurityConfiguration.d.ts +62 -62
- package/lib/types/config/ServerConfiguration.d.ts +55 -55
- package/lib/types/config/ServicesConfiguration.d.ts +2 -2
- package/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +10 -10
- package/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +3 -3
- package/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +194 -110
- package/lib/types/errors/ErrorDefinition.d.ts +1 -1
- package/lib/types/errors/ErrorDomains.d.ts +1 -1
- package/lib/types/index.d.ts +38 -38
- package/lib/types/realtime/RealtimeScope.d.ts +1 -1
- package/lib/types/realtime/RealtimeUsers.d.ts +1 -1
- package/lib/util/assertType.js +13 -11
- package/lib/util/async.d.ts +1 -0
- package/lib/util/async.js +61 -0
- package/lib/util/asyncStore.js +19 -21
- package/lib/util/bufferedPassThrough.d.ts +2 -2
- package/lib/util/bufferedPassThrough.js +4 -4
- package/lib/util/bytes.js +9 -13
- package/lib/util/crypto.js +1 -1
- package/lib/util/debug.js +5 -5
- package/lib/util/deprecate.js +24 -21
- package/lib/util/didYouMean.js +7 -7
- package/lib/util/dump-collection.d.ts +2 -2
- package/lib/util/dump-collection.js +26 -26
- package/lib/util/esRequest.d.ts +1 -0
- package/lib/util/esRequest.js +62 -0
- package/lib/util/extractFields.js +24 -25
- package/lib/util/inflector.js +5 -5
- package/lib/util/koncordeCompat.d.ts +2 -2
- package/lib/util/koncordeCompat.js +5 -5
- package/lib/util/memoize.js +3 -5
- package/lib/util/mutex.d.ts +19 -1
- package/lib/util/mutex.js +39 -12
- package/lib/util/name-generator.js +1331 -1331
- package/lib/util/promback.js +8 -10
- package/lib/util/readYamlFile.d.ts +1 -1
- package/lib/util/readYamlFile.js +1 -1
- package/lib/util/requestAssertions.js +34 -34
- package/lib/util/safeObject.js +5 -5
- package/lib/util/stackTrace.js +20 -22
- package/lib/util/wildcard.js +15 -15
- package/package.json +6 -6
- package/npm-shrinkwrap.json +0 -19422
|
@@ -27,40 +27,40 @@ class BackendOpenApi extends index_1.ApplicationManager {
|
|
|
27
27
|
super(application);
|
|
28
28
|
/* eslint-disable sort-keys */
|
|
29
29
|
this.definition = {
|
|
30
|
-
openapi:
|
|
30
|
+
openapi: "3.0.0",
|
|
31
31
|
info: {
|
|
32
32
|
title: `${application.name} API`,
|
|
33
33
|
description: `${application.name} HTTP API definition`,
|
|
34
34
|
contact: {
|
|
35
|
-
name:
|
|
36
|
-
url:
|
|
37
|
-
email:
|
|
38
|
-
discord:
|
|
35
|
+
name: "Kuzzle team",
|
|
36
|
+
url: "https://kuzzle.io",
|
|
37
|
+
email: "support@kuzzle.io",
|
|
38
|
+
discord: "http://join.discord.kuzzle.io",
|
|
39
39
|
},
|
|
40
40
|
license: {
|
|
41
|
-
name:
|
|
42
|
-
url:
|
|
41
|
+
name: "Apache 2",
|
|
42
|
+
url: "http://opensource.org/licenses/apache2.0",
|
|
43
43
|
},
|
|
44
|
-
version: application.version
|
|
44
|
+
version: application.version,
|
|
45
45
|
},
|
|
46
46
|
externalDocs: {
|
|
47
|
-
description:
|
|
48
|
-
url:
|
|
47
|
+
description: "Kuzzle API Documentation",
|
|
48
|
+
url: "https://docs.kuzzle.io/core/2/api/",
|
|
49
49
|
},
|
|
50
50
|
servers: [
|
|
51
51
|
{
|
|
52
|
-
url:
|
|
52
|
+
url: "https://{baseUrl}:{port}",
|
|
53
53
|
description: `${application.name} Base Url`,
|
|
54
54
|
variables: {
|
|
55
|
-
baseUrl: { default:
|
|
55
|
+
baseUrl: { default: "localhost" },
|
|
56
56
|
port: { default: 7512 },
|
|
57
|
-
}
|
|
58
|
-
}
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
59
|
],
|
|
60
60
|
tags: [],
|
|
61
|
-
schemes: [
|
|
61
|
+
schemes: ["https", "http"],
|
|
62
62
|
paths: {},
|
|
63
|
-
components: {}
|
|
63
|
+
components: {},
|
|
64
64
|
};
|
|
65
65
|
/* eslint-enable sort-keys */
|
|
66
66
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventHandler } from
|
|
2
|
-
import { ApplicationManager } from
|
|
1
|
+
import { EventHandler } from "../../types";
|
|
2
|
+
import { ApplicationManager } from "./index";
|
|
3
3
|
export declare class BackendPipe extends ApplicationManager {
|
|
4
4
|
/**
|
|
5
5
|
* Registers a new pipe on an event
|
|
@@ -46,8 +46,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
46
46
|
exports.BackendPipe = void 0;
|
|
47
47
|
const kerror = __importStar(require("../../kerror"));
|
|
48
48
|
const index_1 = require("./index");
|
|
49
|
-
const assertionError = kerror.wrap(
|
|
50
|
-
const runtimeError = kerror.wrap(
|
|
49
|
+
const assertionError = kerror.wrap("plugin", "assert");
|
|
50
|
+
const runtimeError = kerror.wrap("plugin", "runtime");
|
|
51
51
|
class BackendPipe extends index_1.ApplicationManager {
|
|
52
52
|
/**
|
|
53
53
|
* Registers a new pipe on an event
|
|
@@ -57,10 +57,10 @@ class BackendPipe extends index_1.ApplicationManager {
|
|
|
57
57
|
*/
|
|
58
58
|
register(event, handler, options = {}) {
|
|
59
59
|
if (this._application.started && options.dynamic !== true) {
|
|
60
|
-
throw runtimeError.get(
|
|
60
|
+
throw runtimeError.get("already_started", "pipe.register");
|
|
61
61
|
}
|
|
62
|
-
if (typeof handler !==
|
|
63
|
-
throw assertionError.get(
|
|
62
|
+
if (typeof handler !== "function") {
|
|
63
|
+
throw assertionError.get("invalid_pipe", event);
|
|
64
64
|
}
|
|
65
65
|
if (this._application.started) {
|
|
66
66
|
return global.kuzzle.pluginsManager.registerPipe(global.kuzzle.pluginsManager.application, event, handler);
|
|
@@ -72,7 +72,7 @@ class BackendPipe extends index_1.ApplicationManager {
|
|
|
72
72
|
}
|
|
73
73
|
unregister(pipeId) {
|
|
74
74
|
if (!this._application.started) {
|
|
75
|
-
throw runtimeError.get(
|
|
75
|
+
throw runtimeError.get("unavailable_before_start", "pipe.unregister");
|
|
76
76
|
}
|
|
77
77
|
global.kuzzle.pluginsManager.unregisterPipe(pipeId);
|
|
78
78
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { JSONObject } from
|
|
2
|
-
import { Plugin } from
|
|
3
|
-
import { ApplicationManager } from
|
|
1
|
+
import { JSONObject } from "../../../index";
|
|
2
|
+
import { Plugin } from "../../types";
|
|
3
|
+
import { ApplicationManager } from "./index";
|
|
4
4
|
export declare class BackendPlugin extends ApplicationManager {
|
|
5
5
|
/**
|
|
6
6
|
* Uses a plugin in this application.
|
|
@@ -24,7 +24,7 @@ export declare class BackendPlugin extends ApplicationManager {
|
|
|
24
24
|
*
|
|
25
25
|
* @param name Plugin name
|
|
26
26
|
*/
|
|
27
|
-
get(name: string):
|
|
27
|
+
get<TPlugin extends Plugin>(name: string): TPlugin;
|
|
28
28
|
/**
|
|
29
29
|
* Lists loaded plugins
|
|
30
30
|
*/
|
|
@@ -51,8 +51,8 @@ const inflector_1 = require("../../util/inflector");
|
|
|
51
51
|
const kerror = __importStar(require("../../kerror"));
|
|
52
52
|
const index_1 = require("./index");
|
|
53
53
|
const didYouMean_1 = __importDefault(require("../../util/didYouMean"));
|
|
54
|
-
const assertionError = kerror.wrap(
|
|
55
|
-
const runtimeError = kerror.wrap(
|
|
54
|
+
const assertionError = kerror.wrap("plugin", "assert");
|
|
55
|
+
const runtimeError = kerror.wrap("plugin", "runtime");
|
|
56
56
|
class BackendPlugin extends index_1.ApplicationManager {
|
|
57
57
|
/**
|
|
58
58
|
* Uses a plugin in this application.
|
|
@@ -68,24 +68,24 @@ class BackendPlugin extends index_1.ApplicationManager {
|
|
|
68
68
|
*/
|
|
69
69
|
use(plugin, options = {}) {
|
|
70
70
|
if (this._application.started) {
|
|
71
|
-
throw runtimeError.get(
|
|
71
|
+
throw runtimeError.get("already_started", "plugin");
|
|
72
72
|
}
|
|
73
73
|
// Avoid plain objects
|
|
74
|
-
if ((typeof plugin.constructor !==
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
throw assertionError.get(
|
|
74
|
+
if ((typeof plugin.constructor !== "function" ||
|
|
75
|
+
plugin.constructor.name === "Object") &&
|
|
76
|
+
!options.name) {
|
|
77
|
+
throw assertionError.get("no_name_provided");
|
|
78
78
|
}
|
|
79
|
-
const name = options.name
|
|
80
|
-
|
|
79
|
+
const name = options.name ||
|
|
80
|
+
inflector_1.Inflector.kebabCase(plugin.constructor.name.replace("Plugin", ""));
|
|
81
81
|
if (!this._application.PluginObject.checkName(name)) {
|
|
82
|
-
throw assertionError.get(
|
|
82
|
+
throw assertionError.get("invalid_plugin_name", name);
|
|
83
83
|
}
|
|
84
84
|
if (this._application._plugins[name]) {
|
|
85
|
-
throw assertionError.get(
|
|
85
|
+
throw assertionError.get("name_already_exists", name);
|
|
86
86
|
}
|
|
87
|
-
if (typeof plugin.init !==
|
|
88
|
-
throw assertionError.get(
|
|
87
|
+
if (typeof plugin.init !== "function") {
|
|
88
|
+
throw assertionError.get("init_not_found", name);
|
|
89
89
|
}
|
|
90
90
|
this._application._plugins[name] = { options, plugin };
|
|
91
91
|
}
|
|
@@ -96,7 +96,7 @@ class BackendPlugin extends index_1.ApplicationManager {
|
|
|
96
96
|
*/
|
|
97
97
|
get(name) {
|
|
98
98
|
if (!this._application._plugins[name]) {
|
|
99
|
-
throw assertionError.get(
|
|
99
|
+
throw assertionError.get("plugin_not_found", name, (0, didYouMean_1.default)(name, this.list()));
|
|
100
100
|
}
|
|
101
101
|
return this._application._plugins[name].plugin;
|
|
102
102
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Client } from
|
|
2
|
-
import { ApplicationManager, Backend } from
|
|
1
|
+
import { Client } from "@elastic/elasticsearch";
|
|
2
|
+
import { ApplicationManager, Backend } from "./index";
|
|
3
3
|
export declare class BackendStorage extends ApplicationManager {
|
|
4
4
|
private _client;
|
|
5
5
|
private _Client;
|
|
@@ -56,8 +56,7 @@ class BackendStorage extends index_1.ApplicationManager {
|
|
|
56
56
|
*/
|
|
57
57
|
get storageClient() {
|
|
58
58
|
if (!this._client) {
|
|
59
|
-
this._client = elasticsearch_1.default
|
|
60
|
-
.buildClient(this._kuzzle.config.services.storageEngine.client);
|
|
59
|
+
this._client = elasticsearch_1.default.buildClient(this._kuzzle.config.services.storageEngine.client);
|
|
61
60
|
}
|
|
62
61
|
return this._client;
|
|
63
62
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { JSONObject } from
|
|
2
|
-
import { ApplicationManager } from
|
|
1
|
+
import { JSONObject } from "../../../index";
|
|
2
|
+
import { ApplicationManager } from "./index";
|
|
3
3
|
export declare class BackendVault extends ApplicationManager {
|
|
4
4
|
private decrypted;
|
|
5
5
|
private _secrets;
|
|
@@ -50,7 +50,7 @@ exports.BackendVault = void 0;
|
|
|
50
50
|
const vault_1 = __importDefault(require("../../kuzzle/vault"));
|
|
51
51
|
const kerror = __importStar(require("../../kerror"));
|
|
52
52
|
const index_1 = require("./index");
|
|
53
|
-
const runtimeError = kerror.wrap(
|
|
53
|
+
const runtimeError = kerror.wrap("plugin", "runtime");
|
|
54
54
|
class BackendVault extends index_1.ApplicationManager {
|
|
55
55
|
constructor() {
|
|
56
56
|
super(...arguments);
|
|
@@ -61,7 +61,7 @@ class BackendVault extends index_1.ApplicationManager {
|
|
|
61
61
|
*/
|
|
62
62
|
set key(key) {
|
|
63
63
|
if (this._application.started) {
|
|
64
|
-
throw runtimeError.get(
|
|
64
|
+
throw runtimeError.get("already_started", "vault");
|
|
65
65
|
}
|
|
66
66
|
this._application._vaultKey = key;
|
|
67
67
|
}
|
|
@@ -70,7 +70,7 @@ class BackendVault extends index_1.ApplicationManager {
|
|
|
70
70
|
*/
|
|
71
71
|
set file(file) {
|
|
72
72
|
if (this._application.started) {
|
|
73
|
-
throw runtimeError.get(
|
|
73
|
+
throw runtimeError.get("already_started", "vault");
|
|
74
74
|
}
|
|
75
75
|
this._application._secretsFile = file;
|
|
76
76
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
10
|
-
export * from
|
|
11
|
-
export * from
|
|
12
|
-
export * from
|
|
13
|
-
export * from
|
|
14
|
-
export * from
|
|
1
|
+
export * from "./applicationManager";
|
|
2
|
+
export * from "./backend";
|
|
3
|
+
export * from "./backendCluster";
|
|
4
|
+
export * from "./backendConfig";
|
|
5
|
+
export * from "./backendController";
|
|
6
|
+
export * from "./backendHook";
|
|
7
|
+
export * from "./backendImport";
|
|
8
|
+
export * from "./backendPipe";
|
|
9
|
+
export * from "./backendPlugin";
|
|
10
|
+
export * from "./backendStorage";
|
|
11
|
+
export * from "./backendVault";
|
|
12
|
+
export * from "./backendOpenApi";
|
|
13
|
+
export * from "./internalLogger";
|
|
14
|
+
export * from "./backendErrors";
|
|
@@ -31,31 +31,31 @@ class InternalLogger extends index_1.ApplicationManager {
|
|
|
31
31
|
* Logs an debug message
|
|
32
32
|
*/
|
|
33
33
|
debug(message) {
|
|
34
|
-
this._log(
|
|
34
|
+
this._log("debug", message);
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Logs an info message
|
|
38
38
|
*/
|
|
39
39
|
info(message) {
|
|
40
|
-
this._log(
|
|
40
|
+
this._log("info", message);
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* Logs a warn message
|
|
44
44
|
*/
|
|
45
45
|
warn(message) {
|
|
46
|
-
this._log(
|
|
46
|
+
this._log("warn", message);
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* Logs an error message
|
|
50
50
|
*/
|
|
51
51
|
error(message) {
|
|
52
|
-
this._log(
|
|
52
|
+
this._log("error", message);
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
55
|
* Logs a verbose message
|
|
56
56
|
*/
|
|
57
57
|
verbose(message) {
|
|
58
|
-
this._log(
|
|
58
|
+
this._log("verbose", message);
|
|
59
59
|
}
|
|
60
60
|
_log(level, message) {
|
|
61
61
|
if (!this._application.started) {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* @typedef {string} cacheDbEnum
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
* @enum {cacheDbEnum}
|
|
33
33
|
*/
|
|
34
34
|
const cacheDbEnum = Object.freeze({
|
|
35
|
-
INTERNAL:
|
|
36
|
-
NONE:
|
|
37
|
-
PUBLIC:
|
|
35
|
+
INTERNAL: "internal",
|
|
36
|
+
NONE: "none",
|
|
37
|
+
PUBLIC: "public",
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
module.exports = cacheDbEnum;
|
|
@@ -19,18 +19,18 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
|
-
const Bluebird = require(
|
|
24
|
+
const Bluebird = require("bluebird");
|
|
25
25
|
|
|
26
|
-
const Redis = require(
|
|
26
|
+
const Redis = require("../../service/cache/redis");
|
|
27
27
|
|
|
28
28
|
class CacheEngine {
|
|
29
|
-
constructor
|
|
29
|
+
constructor() {
|
|
30
30
|
const config = global.kuzzle.config.services;
|
|
31
31
|
|
|
32
|
-
this.public = new Redis(config.memoryStorage,
|
|
33
|
-
this.internal = new Redis(config.internalCache,
|
|
32
|
+
this.public = new Redis(config.memoryStorage, "public_adapter");
|
|
33
|
+
this.internal = new Redis(config.internalCache, "internal_adapter");
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
/**
|
|
@@ -38,100 +38,95 @@ class CacheEngine {
|
|
|
38
38
|
*
|
|
39
39
|
* @returns {Promise}
|
|
40
40
|
*/
|
|
41
|
-
async init
|
|
42
|
-
await Bluebird.all([
|
|
43
|
-
this.public.init(),
|
|
44
|
-
this.internal.init(),
|
|
45
|
-
]);
|
|
41
|
+
async init() {
|
|
42
|
+
await Bluebird.all([this.public.init(), this.internal.init()]);
|
|
46
43
|
|
|
47
44
|
this.registerInternalEvents();
|
|
48
45
|
this.registerPublicEvents();
|
|
49
46
|
|
|
50
|
-
global.kuzzle.log.info(
|
|
47
|
+
global.kuzzle.log.info("[✔] Cache initialized");
|
|
51
48
|
}
|
|
52
49
|
|
|
53
|
-
registerInternalEvents
|
|
50
|
+
registerInternalEvents() {
|
|
54
51
|
/**
|
|
55
52
|
* Deletes on or multiple keys
|
|
56
53
|
* @param {string|Array.<string>} keys
|
|
57
54
|
*/
|
|
58
|
-
global.kuzzle.onAsk(
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
global.kuzzle.onAsk("core:cache:internal:del", (keys) =>
|
|
56
|
+
this.internal.commands.del(keys)
|
|
57
|
+
);
|
|
61
58
|
|
|
62
59
|
/**
|
|
63
60
|
* Asks a key to expire in the provided delay
|
|
64
61
|
* @param {string} key
|
|
65
62
|
* @param {number} ttl (in seconds)
|
|
66
63
|
*/
|
|
67
|
-
global.kuzzle.onAsk(
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
global.kuzzle.onAsk("core:cache:internal:expire", (key, ttl) =>
|
|
65
|
+
this.internal.commands.expire(key, ttl)
|
|
66
|
+
);
|
|
70
67
|
|
|
71
68
|
/**
|
|
72
69
|
* Wipes the database clean
|
|
73
70
|
*/
|
|
74
|
-
global.kuzzle.onAsk(
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
global.kuzzle.onAsk("core:cache:internal:flushdb", () =>
|
|
72
|
+
this.internal.commands.flushdb()
|
|
73
|
+
);
|
|
77
74
|
|
|
78
75
|
/**
|
|
79
76
|
* Returns basic information about the internal cache service
|
|
80
77
|
* @returns {Promise.<Object>}
|
|
81
78
|
*/
|
|
82
|
-
global.kuzzle.onAsk(
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
global.kuzzle.onAsk("core:cache:internal:info:get", () =>
|
|
80
|
+
this.internal.info()
|
|
81
|
+
);
|
|
85
82
|
|
|
86
83
|
/**
|
|
87
84
|
* Fetches a single value
|
|
88
85
|
* @param {string} key
|
|
89
86
|
* @return {string}
|
|
90
87
|
*/
|
|
91
|
-
global.kuzzle.onAsk(
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
global.kuzzle.onAsk("core:cache:internal:get", (key) =>
|
|
89
|
+
this.internal.commands.get(key)
|
|
90
|
+
);
|
|
94
91
|
|
|
95
92
|
/**
|
|
96
93
|
* Fetches multiple values in one go
|
|
97
94
|
* @param {Array.<string>} ids
|
|
98
95
|
* @return {Array.<string|null>}
|
|
99
96
|
*/
|
|
100
|
-
global.kuzzle.onAsk(
|
|
101
|
-
|
|
102
|
-
keys
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return [];
|
|
106
|
-
}
|
|
97
|
+
global.kuzzle.onAsk("core:cache:internal:mget", (keys) => {
|
|
98
|
+
// redis throws an error if trying to mget without arguments
|
|
99
|
+
if (keys.length === 0) {
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
107
102
|
|
|
108
|
-
|
|
109
|
-
|
|
103
|
+
return this.internal.commands.mget(keys);
|
|
104
|
+
});
|
|
110
105
|
|
|
111
106
|
/**
|
|
112
107
|
* Makes a key persistent (disable its expiration delay, if there is one)
|
|
113
108
|
* @param {string} key
|
|
114
109
|
*/
|
|
115
|
-
global.kuzzle.onAsk(
|
|
116
|
-
|
|
117
|
-
|
|
110
|
+
global.kuzzle.onAsk("core:cache:internal:persist", (key) =>
|
|
111
|
+
this.internal.commands.persist(key)
|
|
112
|
+
);
|
|
118
113
|
|
|
119
114
|
/**
|
|
120
115
|
* Asks a key to expire in the provided delay
|
|
121
116
|
* @param {string} key
|
|
122
117
|
* @param {number} ttl (in milliseconds)
|
|
123
118
|
*/
|
|
124
|
-
global.kuzzle.onAsk(
|
|
125
|
-
|
|
126
|
-
|
|
119
|
+
global.kuzzle.onAsk("core:cache:internal:pexpire", (key, ttl) =>
|
|
120
|
+
this.internal.commands.pexpire(key, ttl)
|
|
121
|
+
);
|
|
127
122
|
|
|
128
123
|
/**
|
|
129
124
|
* Fetches all keys matching the provided pattern
|
|
130
125
|
* @param {string} pattern
|
|
131
126
|
*/
|
|
132
|
-
global.kuzzle.onAsk(
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
global.kuzzle.onAsk("core:cache:internal:searchKeys", (pattern) =>
|
|
128
|
+
this.internal.searchKeys(pattern)
|
|
129
|
+
);
|
|
135
130
|
|
|
136
131
|
/**
|
|
137
132
|
* Add a custom LUA script to the internal client
|
|
@@ -143,13 +138,14 @@ class CacheEngine {
|
|
|
143
138
|
* @param {string} script
|
|
144
139
|
*/
|
|
145
140
|
global.kuzzle.onAsk(
|
|
146
|
-
|
|
141
|
+
"core:cache:internal:script:define",
|
|
147
142
|
(name, keys, script) => {
|
|
148
143
|
return this.internal.client.defineCommand(name, {
|
|
149
144
|
lua: script,
|
|
150
145
|
numberOfKeys: keys,
|
|
151
146
|
});
|
|
152
|
-
}
|
|
147
|
+
}
|
|
148
|
+
);
|
|
153
149
|
|
|
154
150
|
/**
|
|
155
151
|
* Execute a script previously defined with core:cache:internal:script:define
|
|
@@ -158,9 +154,9 @@ class CacheEngine {
|
|
|
158
154
|
* @param {...string} args -- script arguments
|
|
159
155
|
* @return {*} script result (if any)
|
|
160
156
|
*/
|
|
161
|
-
global.kuzzle.onAsk(
|
|
162
|
-
|
|
163
|
-
|
|
157
|
+
global.kuzzle.onAsk("core:cache:internal:script:execute", (name, ...args) =>
|
|
158
|
+
this.internal.client[name](...args)
|
|
159
|
+
);
|
|
164
160
|
|
|
165
161
|
/**
|
|
166
162
|
* Convenience method for easy access to options NX and PX of the "set"
|
|
@@ -177,86 +173,84 @@ class CacheEngine {
|
|
|
177
173
|
* @param {{ttl: number, onlyIfNew: boolean}} [opts]
|
|
178
174
|
* @returns {Promise.<boolean>} true if the key was set, false otherwise
|
|
179
175
|
*/
|
|
180
|
-
global.kuzzle.onAsk(
|
|
181
|
-
|
|
182
|
-
|
|
176
|
+
global.kuzzle.onAsk("core:cache:internal:store", (key, value, opts) =>
|
|
177
|
+
this.internal.store(key, value, opts)
|
|
178
|
+
);
|
|
183
179
|
|
|
184
180
|
/**
|
|
185
181
|
* Executes an arbitrary NATIVE cache command directly
|
|
186
182
|
* @param {string} command
|
|
187
183
|
* @param {Array} args -- command arguments
|
|
188
184
|
*/
|
|
189
|
-
global.kuzzle.onAsk(
|
|
190
|
-
|
|
191
|
-
|
|
185
|
+
global.kuzzle.onAsk("core:cache:internal:execute", (command, ...args) =>
|
|
186
|
+
this.internal.exec(command, ...args)
|
|
187
|
+
);
|
|
192
188
|
}
|
|
193
189
|
|
|
194
|
-
registerPublicEvents
|
|
190
|
+
registerPublicEvents() {
|
|
195
191
|
/**
|
|
196
192
|
* Deletes on or multiple keys
|
|
197
193
|
* @param {string|Array.<string>} keys
|
|
198
194
|
*/
|
|
199
|
-
global.kuzzle.onAsk(
|
|
200
|
-
|
|
201
|
-
|
|
195
|
+
global.kuzzle.onAsk("core:cache:public:del", (keys) =>
|
|
196
|
+
this.public.commands.del(keys)
|
|
197
|
+
);
|
|
202
198
|
|
|
203
199
|
/**
|
|
204
200
|
* Executes an arbitrary NATIVE cache command directly
|
|
205
201
|
* @param {string} command
|
|
206
202
|
* @param {Array} args -- command arguments
|
|
207
203
|
*/
|
|
208
|
-
global.kuzzle.onAsk(
|
|
209
|
-
|
|
210
|
-
|
|
204
|
+
global.kuzzle.onAsk("core:cache:public:execute", (command, ...args) =>
|
|
205
|
+
this.public.exec(command, ...args)
|
|
206
|
+
);
|
|
211
207
|
|
|
212
208
|
/**
|
|
213
209
|
* Asks a key to expire in the provided delay
|
|
214
210
|
* @param {string} key
|
|
215
211
|
* @param {number} ttl (in seconds)
|
|
216
212
|
*/
|
|
217
|
-
global.kuzzle.onAsk(
|
|
218
|
-
|
|
219
|
-
|
|
213
|
+
global.kuzzle.onAsk("core:cache:public:expire", (key, ttl) =>
|
|
214
|
+
this.public.commands.expire(key, ttl)
|
|
215
|
+
);
|
|
220
216
|
|
|
221
217
|
/**
|
|
222
218
|
* Wipes the database clean
|
|
223
219
|
*/
|
|
224
|
-
global.kuzzle.onAsk(
|
|
225
|
-
|
|
226
|
-
|
|
220
|
+
global.kuzzle.onAsk("core:cache:public:flushdb", () =>
|
|
221
|
+
this.public.commands.flushdb()
|
|
222
|
+
);
|
|
227
223
|
|
|
228
224
|
/**
|
|
229
225
|
* Returns basic information about the internal cache service
|
|
230
226
|
* @returns {Promise.<Object>}
|
|
231
227
|
*/
|
|
232
|
-
global.kuzzle.onAsk(
|
|
233
|
-
'core:cache:public:info:get',
|
|
234
|
-
() => this.public.info());
|
|
228
|
+
global.kuzzle.onAsk("core:cache:public:info:get", () => this.public.info());
|
|
235
229
|
|
|
236
230
|
/**
|
|
237
231
|
* Fetches a single value
|
|
238
232
|
* @param {string} key
|
|
239
233
|
* @return {string}
|
|
240
234
|
*/
|
|
241
|
-
global.kuzzle.onAsk(
|
|
242
|
-
|
|
243
|
-
|
|
235
|
+
global.kuzzle.onAsk("core:cache:public:get", (key) =>
|
|
236
|
+
this.public.commands.get(key)
|
|
237
|
+
);
|
|
244
238
|
|
|
245
239
|
/**
|
|
246
240
|
* Executes multiple cache commands in one go, as a single transaction
|
|
247
241
|
* @param {Array} commands to execute
|
|
248
242
|
*/
|
|
249
|
-
global.kuzzle.onAsk(
|
|
250
|
-
|
|
251
|
-
|
|
243
|
+
global.kuzzle.onAsk("core:cache:public:mExecute", (commands) =>
|
|
244
|
+
this.public.mExecute(commands)
|
|
245
|
+
);
|
|
252
246
|
|
|
253
247
|
/**
|
|
254
248
|
* Makes a key persistent (disable its expiration delay, if there is one)
|
|
255
249
|
* @param {string} key
|
|
256
250
|
*/
|
|
257
|
-
global.kuzzle.onAsk(
|
|
258
|
-
|
|
259
|
-
|
|
251
|
+
global.kuzzle.onAsk("core:cache:public:persist", (key) =>
|
|
252
|
+
this.public.commands.persist(key)
|
|
253
|
+
);
|
|
260
254
|
|
|
261
255
|
/**
|
|
262
256
|
* Convenience method for easy access to options NX and PX of the "set"
|
|
@@ -273,9 +267,9 @@ class CacheEngine {
|
|
|
273
267
|
* @param {{ttl: number, onlyIfNew: boolean}} [opts]
|
|
274
268
|
* @returns {Promise.<boolean>} true if the key was set, false otherwise
|
|
275
269
|
*/
|
|
276
|
-
global.kuzzle.onAsk(
|
|
277
|
-
|
|
278
|
-
|
|
270
|
+
global.kuzzle.onAsk("core:cache:public:store", (key, value, opts) =>
|
|
271
|
+
this.public.store(key, value, opts)
|
|
272
|
+
);
|
|
279
273
|
}
|
|
280
274
|
}
|
|
281
275
|
|