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
|
@@ -19,34 +19,34 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
|
-
const os = require(
|
|
25
|
-
const jsonToYaml = require(
|
|
26
|
-
const packagejson = require(
|
|
24
|
+
const os = require("os");
|
|
25
|
+
const jsonToYaml = require("json2yaml");
|
|
26
|
+
const packagejson = require("../../../package.json");
|
|
27
27
|
|
|
28
|
-
const { NativeController } = require(
|
|
28
|
+
const { NativeController } = require("./baseController");
|
|
29
29
|
|
|
30
|
-
const kerror = require(
|
|
30
|
+
const kerror = require("../../kerror");
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* @class ServerController
|
|
34
34
|
*/
|
|
35
35
|
class ServerController extends NativeController {
|
|
36
|
-
constructor
|
|
36
|
+
constructor() {
|
|
37
37
|
super([
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
"adminExists",
|
|
39
|
+
"capabilities",
|
|
40
|
+
"getAllStats",
|
|
41
|
+
"getConfig",
|
|
42
|
+
"getLastStats",
|
|
43
|
+
"getStats",
|
|
44
|
+
"healthCheck",
|
|
45
|
+
"info",
|
|
46
|
+
"metrics",
|
|
47
|
+
"now",
|
|
48
|
+
"publicApi",
|
|
49
|
+
"openapi",
|
|
50
50
|
]);
|
|
51
51
|
|
|
52
52
|
this._info = {
|
|
@@ -61,11 +61,11 @@ class ServerController extends NativeController {
|
|
|
61
61
|
* for all controllers to be initialized before accepting requests.
|
|
62
62
|
*
|
|
63
63
|
* @returns {Promise}
|
|
64
|
-
|
|
65
|
-
async init
|
|
64
|
+
*/
|
|
65
|
+
async init() {
|
|
66
66
|
const [storageInfo, cacheInfo] = await Promise.all([
|
|
67
|
-
global.kuzzle.ask(
|
|
68
|
-
global.kuzzle.ask(
|
|
67
|
+
global.kuzzle.ask("core:storage:public:info:get"),
|
|
68
|
+
global.kuzzle.ask("core:cache:public:info:get"),
|
|
69
69
|
]);
|
|
70
70
|
this._info.elasticsearch = storageInfo;
|
|
71
71
|
this._info.redis = cacheInfo;
|
|
@@ -79,7 +79,7 @@ class ServerController extends NativeController {
|
|
|
79
79
|
*
|
|
80
80
|
* @deprecated
|
|
81
81
|
*/
|
|
82
|
-
getStats
|
|
82
|
+
getStats(request) {
|
|
83
83
|
return global.kuzzle.statistics.getStats(request);
|
|
84
84
|
}
|
|
85
85
|
|
|
@@ -90,7 +90,7 @@ class ServerController extends NativeController {
|
|
|
90
90
|
*
|
|
91
91
|
* @deprecated
|
|
92
92
|
*/
|
|
93
|
-
getLastStats
|
|
93
|
+
getLastStats() {
|
|
94
94
|
return global.kuzzle.statistics.getLastStats();
|
|
95
95
|
}
|
|
96
96
|
|
|
@@ -101,7 +101,7 @@ class ServerController extends NativeController {
|
|
|
101
101
|
*
|
|
102
102
|
* @deprecated
|
|
103
103
|
*/
|
|
104
|
-
getAllStats
|
|
104
|
+
getAllStats() {
|
|
105
105
|
return global.kuzzle.statistics.getAllStats();
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -110,7 +110,7 @@ class ServerController extends NativeController {
|
|
|
110
110
|
*
|
|
111
111
|
* @returns {Promise<Object>}
|
|
112
112
|
*/
|
|
113
|
-
async getConfig
|
|
113
|
+
async getConfig() {
|
|
114
114
|
const config = JSON.parse(JSON.stringify(global.kuzzle.config));
|
|
115
115
|
|
|
116
116
|
// Already and more appropriately returned by server:info
|
|
@@ -131,7 +131,7 @@ class ServerController extends NativeController {
|
|
|
131
131
|
* Returns the Kuzzle capabilities
|
|
132
132
|
* @returns {Promise<Object>}
|
|
133
133
|
*/
|
|
134
|
-
async capabilities
|
|
134
|
+
async capabilities() {
|
|
135
135
|
const config = JSON.parse(JSON.stringify(global.kuzzle.config));
|
|
136
136
|
const publicApi = await this.publicApi();
|
|
137
137
|
const services = {};
|
|
@@ -139,7 +139,7 @@ class ServerController extends NativeController {
|
|
|
139
139
|
|
|
140
140
|
for (const plugin of config.plugins.common.include) {
|
|
141
141
|
plugins[plugin] = {
|
|
142
|
-
version: packagejson.dependencies[plugin]
|
|
142
|
+
version: packagejson.dependencies[plugin],
|
|
143
143
|
};
|
|
144
144
|
}
|
|
145
145
|
|
|
@@ -165,8 +165,8 @@ class ServerController extends NativeController {
|
|
|
165
165
|
*
|
|
166
166
|
* @returns {Promise<Object>}
|
|
167
167
|
*/
|
|
168
|
-
async adminExists
|
|
169
|
-
const exists = await global.kuzzle.ask(
|
|
168
|
+
async adminExists() {
|
|
169
|
+
const exists = await global.kuzzle.ask("core:security:user:admin:exist");
|
|
170
170
|
|
|
171
171
|
return { exists };
|
|
172
172
|
}
|
|
@@ -174,59 +174,58 @@ class ServerController extends NativeController {
|
|
|
174
174
|
/**
|
|
175
175
|
* @returns {Promise<Object>}
|
|
176
176
|
*/
|
|
177
|
-
async now
|
|
177
|
+
async now() {
|
|
178
178
|
return { now: Date.now() };
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
/**
|
|
182
182
|
* @returns {Promise<Object>}
|
|
183
183
|
*/
|
|
184
|
-
async healthCheck
|
|
185
|
-
const getServiceUnavailableError =
|
|
186
|
-
|
|
187
|
-
const result = { services: {}, status:
|
|
184
|
+
async healthCheck(request) {
|
|
185
|
+
const getServiceUnavailableError = (err) =>
|
|
186
|
+
kerror.get("core", "fatal", "service_unavailable", err);
|
|
187
|
+
const result = { services: {}, status: "green" };
|
|
188
188
|
|
|
189
189
|
let services;
|
|
190
|
-
if (typeof request.input.args.services ===
|
|
190
|
+
if (typeof request.input.args.services === "string") {
|
|
191
191
|
// @deprecated Should be replaced with request.getArray('services')
|
|
192
|
-
services = request.getArrayLegacy(
|
|
192
|
+
services = request.getArrayLegacy("services");
|
|
193
193
|
}
|
|
194
|
-
if (!
|
|
194
|
+
if (!services || services.includes("internalCache")) {
|
|
195
195
|
try {
|
|
196
|
-
await global.kuzzle.ask(
|
|
197
|
-
result.services.internalCache =
|
|
198
|
-
}
|
|
199
|
-
catch (error) {
|
|
196
|
+
await global.kuzzle.ask("core:cache:internal:info:get");
|
|
197
|
+
result.services.internalCache = "green";
|
|
198
|
+
} catch (error) {
|
|
200
199
|
request.setError(getServiceUnavailableError(error));
|
|
201
|
-
result.services.internalCache =
|
|
202
|
-
result.status =
|
|
200
|
+
result.services.internalCache = "red";
|
|
201
|
+
result.status = "red";
|
|
203
202
|
}
|
|
204
203
|
}
|
|
205
|
-
if (!
|
|
204
|
+
if (!services || services.includes("memoryStorage")) {
|
|
206
205
|
try {
|
|
207
|
-
await global.kuzzle.ask(
|
|
208
|
-
result.services.memoryStorage =
|
|
209
|
-
}
|
|
210
|
-
catch (error) {
|
|
206
|
+
await global.kuzzle.ask("core:cache:public:info:get");
|
|
207
|
+
result.services.memoryStorage = "green";
|
|
208
|
+
} catch (error) {
|
|
211
209
|
request.setError(getServiceUnavailableError(error));
|
|
212
|
-
result.services.memoryStorage =
|
|
213
|
-
result.status =
|
|
210
|
+
result.services.memoryStorage = "red";
|
|
211
|
+
result.status = "red";
|
|
214
212
|
}
|
|
215
213
|
}
|
|
216
|
-
if (!
|
|
214
|
+
if (!services || services.includes("storageEngine")) {
|
|
217
215
|
try {
|
|
218
|
-
const response = await global.kuzzle.ask(
|
|
216
|
+
const response = await global.kuzzle.ask(
|
|
217
|
+
"core:storage:public:info:get"
|
|
218
|
+
);
|
|
219
219
|
|
|
220
|
-
if (response.status !==
|
|
220
|
+
if (response.status !== "yellow" && response.status !== "green") {
|
|
221
221
|
throw new Error(`ElasticSearch is down: ${JSON.stringify(response)}`);
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
result.services.storageEngine =
|
|
225
|
-
}
|
|
226
|
-
catch (error) {
|
|
224
|
+
result.services.storageEngine = "green";
|
|
225
|
+
} catch (error) {
|
|
227
226
|
request.setError(getServiceUnavailableError(error));
|
|
228
|
-
result.services.storageEngine =
|
|
229
|
-
result.status =
|
|
227
|
+
result.services.storageEngine = "red";
|
|
228
|
+
result.status = "red";
|
|
230
229
|
}
|
|
231
230
|
}
|
|
232
231
|
return result;
|
|
@@ -235,11 +234,11 @@ class ServerController extends NativeController {
|
|
|
235
234
|
/**
|
|
236
235
|
* @returns {Promise<Object>}
|
|
237
236
|
*/
|
|
238
|
-
async info
|
|
237
|
+
async info() {
|
|
239
238
|
const response = {
|
|
240
239
|
kuzzle: {
|
|
241
240
|
api: {
|
|
242
|
-
routes: {}
|
|
241
|
+
routes: {},
|
|
243
242
|
},
|
|
244
243
|
application: {},
|
|
245
244
|
memoryUsed: process.memoryUsage().rss,
|
|
@@ -249,115 +248,123 @@ class ServerController extends NativeController {
|
|
|
249
248
|
cpus: os.cpus(),
|
|
250
249
|
memory: {
|
|
251
250
|
free: os.freemem(),
|
|
252
|
-
total: os.totalmem()
|
|
253
|
-
}
|
|
251
|
+
total: os.totalmem(),
|
|
252
|
+
},
|
|
254
253
|
},
|
|
255
254
|
uptime: `${process.uptime()}s`,
|
|
256
|
-
version: global.kuzzle.config.version
|
|
255
|
+
version: global.kuzzle.config.version,
|
|
257
256
|
},
|
|
258
|
-
services: {}
|
|
257
|
+
services: {},
|
|
259
258
|
};
|
|
260
259
|
|
|
261
260
|
const kuzzleApi = this._buildApiDefinition(
|
|
262
261
|
global.kuzzle.funnel.controllers,
|
|
263
|
-
global.kuzzle.config.http.routes
|
|
262
|
+
global.kuzzle.config.http.routes
|
|
263
|
+
);
|
|
264
264
|
const pluginsApi = this._buildApiDefinition(
|
|
265
265
|
global.kuzzle.pluginsManager.controllers,
|
|
266
|
-
global.kuzzle.pluginsManager.routes
|
|
266
|
+
global.kuzzle.pluginsManager.routes
|
|
267
|
+
);
|
|
267
268
|
const apiDefinition = Object.assign({}, kuzzleApi, pluginsApi);
|
|
268
269
|
|
|
269
270
|
// @todo kuzzle.api should contain the apiDefinition directly
|
|
270
271
|
response.kuzzle.api.routes = apiDefinition;
|
|
271
272
|
|
|
272
|
-
response.kuzzle.plugins =
|
|
273
|
+
response.kuzzle.plugins =
|
|
274
|
+
global.kuzzle.pluginsManager.getPluginsDescription();
|
|
273
275
|
|
|
274
|
-
response.kuzzle.application =
|
|
276
|
+
response.kuzzle.application =
|
|
277
|
+
global.kuzzle.pluginsManager.application.info();
|
|
275
278
|
|
|
276
279
|
response.services = {
|
|
277
|
-
internalCache: await global.kuzzle.ask(
|
|
278
|
-
internalStorage: await global.kuzzle.ask(
|
|
279
|
-
memoryStorage: await global.kuzzle.ask(
|
|
280
|
-
publicStorage: await global.kuzzle.ask(
|
|
280
|
+
internalCache: await global.kuzzle.ask("core:cache:internal:info:get"),
|
|
281
|
+
internalStorage: await global.kuzzle.ask("core:storage:private:info:get"),
|
|
282
|
+
memoryStorage: await global.kuzzle.ask("core:cache:public:info:get"),
|
|
283
|
+
publicStorage: await global.kuzzle.ask("core:storage:public:info:get"),
|
|
281
284
|
};
|
|
282
285
|
|
|
283
286
|
return {
|
|
284
|
-
serverInfo: response
|
|
287
|
+
serverInfo: response,
|
|
285
288
|
};
|
|
286
289
|
}
|
|
287
290
|
|
|
288
|
-
async publicApi
|
|
291
|
+
async publicApi() {
|
|
289
292
|
const kuzzleApi = this._buildApiDefinition(
|
|
290
293
|
global.kuzzle.funnel.controllers,
|
|
291
|
-
global.kuzzle.config.http.routes
|
|
294
|
+
global.kuzzle.config.http.routes
|
|
295
|
+
);
|
|
292
296
|
const pluginsApi = this._buildApiDefinition(
|
|
293
297
|
global.kuzzle.pluginsManager.controllers,
|
|
294
|
-
global.kuzzle.pluginsManager.routes
|
|
298
|
+
global.kuzzle.pluginsManager.routes
|
|
299
|
+
);
|
|
295
300
|
|
|
296
301
|
return { ...kuzzleApi, ...pluginsApi };
|
|
297
302
|
}
|
|
298
303
|
|
|
299
|
-
async openapi
|
|
300
|
-
const format = request.getString(
|
|
301
|
-
const scope = request.getString(
|
|
304
|
+
async openapi(request) {
|
|
305
|
+
const format = request.getString("format", "json");
|
|
306
|
+
const scope = request.getString("scope", "kuzzle");
|
|
302
307
|
|
|
303
308
|
let definition;
|
|
304
309
|
|
|
305
|
-
if (scope ===
|
|
306
|
-
definition = await global.kuzzle.ask(
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
310
|
+
if (scope === "kuzzle") {
|
|
311
|
+
definition = await global.kuzzle.ask("core:api:openapi:kuzzle");
|
|
312
|
+
} else if (scope === "app") {
|
|
313
|
+
definition = await global.kuzzle.ask("core:api:openapi:app");
|
|
314
|
+
} else {
|
|
315
|
+
throw kerror.get("api", "assert", "unexpected_argument", scope, [
|
|
316
|
+
"kuzzle",
|
|
317
|
+
"app",
|
|
318
|
+
]);
|
|
313
319
|
}
|
|
314
320
|
|
|
315
321
|
request.response.configure({
|
|
316
|
-
format:
|
|
317
|
-
headers: {
|
|
322
|
+
format: "raw",
|
|
323
|
+
headers: { "Content-Type": `application/${format}` },
|
|
318
324
|
});
|
|
319
325
|
|
|
320
|
-
return format ===
|
|
326
|
+
return format === "json" ? definition : jsonToYaml.stringify(definition);
|
|
321
327
|
}
|
|
322
328
|
|
|
323
329
|
/**
|
|
324
330
|
* Fetches and returns Kuzzle core metrics
|
|
325
331
|
* @returns {Promise<Object>}
|
|
326
332
|
*/
|
|
327
|
-
async metrics
|
|
333
|
+
async metrics() {
|
|
328
334
|
return {
|
|
329
|
-
api: await global.kuzzle.ask(
|
|
330
|
-
network: await global.kuzzle.ask(
|
|
331
|
-
realtime: await global.kuzzle.ask(
|
|
335
|
+
api: await global.kuzzle.ask("kuzzle:api:funnel:metrics"),
|
|
336
|
+
network: await global.kuzzle.ask("core:network:router:metrics"),
|
|
337
|
+
realtime: await global.kuzzle.ask("core:realtime:hotelClerk:metrics"),
|
|
332
338
|
};
|
|
333
339
|
}
|
|
334
340
|
|
|
335
|
-
_buildApiDefinition
|
|
341
|
+
_buildApiDefinition(controllers, httpRoutes) {
|
|
336
342
|
const apiDefinition = {};
|
|
337
343
|
|
|
338
|
-
for (const [
|
|
344
|
+
for (const [name, controller] of controllers.entries()) {
|
|
339
345
|
const actionList = {};
|
|
340
346
|
|
|
341
347
|
for (const action of controller._actions) {
|
|
342
348
|
actionList[action] = { action, controller: name };
|
|
343
349
|
|
|
344
350
|
// resolve associated http route for each actions
|
|
345
|
-
const routes = httpRoutes.filter(route => {
|
|
351
|
+
const routes = httpRoutes.filter((route) => {
|
|
346
352
|
return (
|
|
347
|
-
(route.controller === name
|
|
348
|
-
|
|
349
|
-
|
|
353
|
+
(route.controller === name ||
|
|
354
|
+
(name === "memoryStorage" && route.controller === "ms")) &&
|
|
355
|
+
route.action === action
|
|
356
|
+
);
|
|
350
357
|
});
|
|
351
358
|
|
|
352
359
|
for (const route of routes) {
|
|
353
|
-
if (!
|
|
360
|
+
if (!actionList[action].http) {
|
|
354
361
|
actionList[action].http = [];
|
|
355
362
|
}
|
|
356
363
|
|
|
357
364
|
actionList[action].http.push({
|
|
358
365
|
path: route.path,
|
|
359
366
|
url: route.path,
|
|
360
|
-
verb: route.verb.toUpperCase()
|
|
367
|
+
verb: route.verb.toUpperCase(),
|
|
361
368
|
});
|
|
362
369
|
}
|
|
363
370
|
}
|