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.
Files changed (289) hide show
  1. package/lib/api/controllers/adminController.js +94 -80
  2. package/lib/api/controllers/authController.js +239 -212
  3. package/lib/api/controllers/baseController.js +89 -51
  4. package/lib/api/controllers/bulkController.js +62 -49
  5. package/lib/api/controllers/clusterController.js +6 -8
  6. package/lib/api/controllers/collectionController.js +140 -129
  7. package/lib/api/controllers/debugController.d.ts +2 -2
  8. package/lib/api/controllers/debugController.js +33 -31
  9. package/lib/api/controllers/documentController.js +365 -274
  10. package/lib/api/controllers/index.js +13 -13
  11. package/lib/api/controllers/indexController.js +46 -50
  12. package/lib/api/controllers/memoryStorageController.js +410 -360
  13. package/lib/api/controllers/realtimeController.js +37 -36
  14. package/lib/api/controllers/securityController.js +553 -412
  15. package/lib/api/controllers/serverController.js +111 -104
  16. package/lib/api/documentExtractor.js +75 -68
  17. package/lib/api/funnel.js +411 -312
  18. package/lib/api/httpRoutes.js +1493 -324
  19. package/lib/api/openapi/OpenApiManager.d.ts +1 -1
  20. package/lib/api/openapi/OpenApiManager.js +22 -22
  21. package/lib/api/openapi/components/document/count.yaml +1 -1
  22. package/lib/api/openapi/components/document/create.yaml +2 -2
  23. package/lib/api/openapi/components/document/delete.yaml +1 -1
  24. package/lib/api/openapi/components/document/deleteByQuery.yaml +1 -1
  25. package/lib/api/openapi/components/document/exists.yaml +1 -1
  26. package/lib/api/openapi/components/document/get.yaml +2 -2
  27. package/lib/api/openapi/components/document/index.js +12 -12
  28. package/lib/api/openapi/components/document/replace.yaml +1 -1
  29. package/lib/api/openapi/components/document/scroll.yaml +1 -1
  30. package/lib/api/openapi/components/document/validate.yaml +1 -1
  31. package/lib/api/openapi/components/index.d.ts +2 -2
  32. package/lib/api/openapi/components/index.js +1 -1
  33. package/lib/api/openapi/components/security/index.js +1 -1
  34. package/lib/api/openapi/components/security/upsertUser.yaml +2 -3
  35. package/lib/api/openapi/index.d.ts +1 -1
  36. package/lib/api/openapi/openApiGenerator.d.ts +1 -1
  37. package/lib/api/openapi/openApiGenerator.js +7 -7
  38. package/lib/api/rateLimiter.js +12 -13
  39. package/lib/api/request/index.d.ts +4 -4
  40. package/lib/api/request/kuzzleRequest.d.ts +9 -9
  41. package/lib/api/request/kuzzleRequest.js +89 -87
  42. package/lib/api/request/requestContext.d.ts +2 -2
  43. package/lib/api/request/requestContext.js +17 -17
  44. package/lib/api/request/requestInput.d.ts +1 -1
  45. package/lib/api/request/requestInput.js +19 -19
  46. package/lib/api/request/requestResponse.d.ts +4 -4
  47. package/lib/api/request/requestResponse.js +31 -33
  48. package/lib/cluster/command.js +48 -44
  49. package/lib/cluster/idCardHandler.d.ts +1 -1
  50. package/lib/cluster/idCardHandler.js +15 -15
  51. package/lib/cluster/index.js +2 -2
  52. package/lib/cluster/node.js +301 -269
  53. package/lib/cluster/publisher.js +45 -46
  54. package/lib/cluster/state.d.ts +5 -5
  55. package/lib/cluster/state.js +8 -8
  56. package/lib/cluster/subscriber.js +163 -113
  57. package/lib/cluster/workers/IDCardRenewer.js +33 -32
  58. package/lib/config/default.config.d.ts +1 -1
  59. package/lib/config/default.config.js +212 -171
  60. package/lib/config/documentEventAliases.js +6 -6
  61. package/lib/config/index.js +161 -98
  62. package/lib/config/sdkCompatibility.json +8 -8
  63. package/lib/core/auth/formatProcessing.js +7 -7
  64. package/lib/core/auth/passportResponse.js +7 -7
  65. package/lib/core/auth/passportWrapper.js +34 -30
  66. package/lib/core/auth/tokenManager.d.ts +2 -2
  67. package/lib/core/auth/tokenManager.js +11 -10
  68. package/lib/core/backend/applicationManager.d.ts +1 -1
  69. package/lib/core/backend/applicationManager.js +2 -2
  70. package/lib/core/backend/backend.d.ts +3 -3
  71. package/lib/core/backend/backend.js +34 -31
  72. package/lib/core/backend/backendCluster.d.ts +2 -2
  73. package/lib/core/backend/backendCluster.js +5 -5
  74. package/lib/core/backend/backendConfig.d.ts +2 -2
  75. package/lib/core/backend/backendConfig.js +3 -3
  76. package/lib/core/backend/backendController.d.ts +2 -2
  77. package/lib/core/backend/backendController.js +9 -10
  78. package/lib/core/backend/backendErrors.d.ts +3 -3
  79. package/lib/core/backend/backendErrors.js +2 -1
  80. package/lib/core/backend/backendHook.d.ts +2 -2
  81. package/lib/core/backend/backendHook.js +5 -5
  82. package/lib/core/backend/backendImport.d.ts +3 -3
  83. package/lib/core/backend/backendImport.js +23 -23
  84. package/lib/core/backend/backendOpenApi.d.ts +2 -2
  85. package/lib/core/backend/backendOpenApi.js +16 -16
  86. package/lib/core/backend/backendPipe.d.ts +2 -2
  87. package/lib/core/backend/backendPipe.js +6 -6
  88. package/lib/core/backend/backendPlugin.d.ts +4 -4
  89. package/lib/core/backend/backendPlugin.js +14 -14
  90. package/lib/core/backend/backendStorage.d.ts +2 -2
  91. package/lib/core/backend/backendStorage.js +1 -2
  92. package/lib/core/backend/backendVault.d.ts +2 -2
  93. package/lib/core/backend/backendVault.js +3 -3
  94. package/lib/core/backend/index.d.ts +14 -14
  95. package/lib/core/backend/internalLogger.d.ts +1 -1
  96. package/lib/core/backend/internalLogger.js +5 -5
  97. package/lib/core/cache/cacheDbEnum.js +4 -4
  98. package/lib/core/cache/cacheEngine.js +79 -85
  99. package/lib/core/network/accessLogger.js +126 -120
  100. package/lib/core/network/clientConnection.js +5 -5
  101. package/lib/core/network/context.js +8 -8
  102. package/lib/core/network/entryPoint.js +100 -85
  103. package/lib/core/network/httpRouter/index.js +63 -60
  104. package/lib/core/network/httpRouter/routeHandler.js +18 -19
  105. package/lib/core/network/httpRouter/routePart.js +23 -19
  106. package/lib/core/network/protocolManifest.js +3 -3
  107. package/lib/core/network/protocols/httpMessage.js +8 -10
  108. package/lib/core/network/protocols/httpwsProtocol.js +305 -250
  109. package/lib/core/network/protocols/internalProtocol.js +27 -24
  110. package/lib/core/network/protocols/mqttProtocol.js +106 -96
  111. package/lib/core/network/protocols/protocol.js +20 -17
  112. package/lib/core/network/router.js +56 -46
  113. package/lib/core/plugin/plugin.js +151 -120
  114. package/lib/core/plugin/pluginContext.d.ts +7 -7
  115. package/lib/core/plugin/pluginContext.js +48 -44
  116. package/lib/core/plugin/pluginManifest.js +13 -12
  117. package/lib/core/plugin/pluginRepository.js +26 -27
  118. package/lib/core/plugin/pluginsManager.js +425 -304
  119. package/lib/core/plugin/privilegedContext.js +3 -3
  120. package/lib/core/realtime/actionEnum.js +1 -1
  121. package/lib/core/realtime/channel.d.ts +1 -1
  122. package/lib/core/realtime/channel.js +22 -22
  123. package/lib/core/realtime/connectionRooms.d.ts +1 -1
  124. package/lib/core/realtime/hotelClerk.d.ts +2 -2
  125. package/lib/core/realtime/hotelClerk.js +53 -50
  126. package/lib/core/realtime/index.js +5 -5
  127. package/lib/core/realtime/notification/document.js +25 -25
  128. package/lib/core/realtime/notification/index.js +4 -4
  129. package/lib/core/realtime/notification/server.js +3 -3
  130. package/lib/core/realtime/notification/user.js +4 -4
  131. package/lib/core/realtime/notifier.js +113 -75
  132. package/lib/core/realtime/room.d.ts +1 -1
  133. package/lib/core/realtime/subscription.d.ts +1 -1
  134. package/lib/core/realtime/subscription.js +1 -1
  135. package/lib/core/security/index.js +8 -8
  136. package/lib/core/security/profileRepository.d.ts +6 -6
  137. package/lib/core/security/profileRepository.js +48 -45
  138. package/lib/core/security/roleRepository.js +127 -115
  139. package/lib/core/security/securityLoader.js +70 -63
  140. package/lib/core/security/tokenRepository.js +132 -118
  141. package/lib/core/security/userRepository.js +104 -88
  142. package/lib/core/shared/KoncordeWrapper.d.ts +1 -1
  143. package/lib/core/shared/KoncordeWrapper.js +3 -1
  144. package/lib/core/shared/abstractManifest.js +22 -23
  145. package/lib/core/shared/repository.js +69 -67
  146. package/lib/core/shared/sdk/embeddedSdk.d.ts +2 -2
  147. package/lib/core/shared/sdk/embeddedSdk.js +36 -32
  148. package/lib/core/shared/sdk/funnelProtocol.d.ts +1 -1
  149. package/lib/core/shared/sdk/funnelProtocol.js +11 -11
  150. package/lib/core/shared/sdk/impersonatedSdk.js +19 -18
  151. package/lib/core/shared/store.js +127 -32
  152. package/lib/core/statistics/index.js +2 -2
  153. package/lib/core/statistics/statistics.js +99 -85
  154. package/lib/core/storage/clientAdapter.js +219 -136
  155. package/lib/core/storage/indexCache.js +3 -3
  156. package/lib/core/storage/storageEngine.js +10 -13
  157. package/lib/core/storage/storeScopeEnum.js +3 -3
  158. package/lib/core/validation/baseType.js +12 -10
  159. package/lib/core/validation/index.js +2 -2
  160. package/lib/core/validation/types/anything.js +4 -4
  161. package/lib/core/validation/types/boolean.js +7 -7
  162. package/lib/core/validation/types/date.js +165 -131
  163. package/lib/core/validation/types/email.js +18 -21
  164. package/lib/core/validation/types/enum.js +34 -21
  165. package/lib/core/validation/types/geoPoint.js +7 -7
  166. package/lib/core/validation/types/geoShape.js +148 -125
  167. package/lib/core/validation/types/integer.js +9 -9
  168. package/lib/core/validation/types/ipAddress.js +17 -19
  169. package/lib/core/validation/types/numeric.js +36 -29
  170. package/lib/core/validation/types/object.js +19 -19
  171. package/lib/core/validation/types/string.js +36 -29
  172. package/lib/core/validation/types/url.js +17 -19
  173. package/lib/core/validation/validation.js +422 -378
  174. package/lib/kerror/codes/1-services.json +7 -1
  175. package/lib/kerror/codes/4-plugin.json +2 -2
  176. package/lib/kerror/codes/index.js +85 -63
  177. package/lib/kerror/errors/badRequestError.d.ts +1 -1
  178. package/lib/kerror/errors/externalServiceError.d.ts +1 -1
  179. package/lib/kerror/errors/forbiddenError.d.ts +1 -1
  180. package/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
  181. package/lib/kerror/errors/index.d.ts +15 -15
  182. package/lib/kerror/errors/internalError.d.ts +1 -1
  183. package/lib/kerror/errors/kuzzleError.d.ts +1 -1
  184. package/lib/kerror/errors/multipleErrorsError.d.ts +1 -1
  185. package/lib/kerror/errors/multipleErrorsError.js +1 -1
  186. package/lib/kerror/errors/notFoundError.d.ts +1 -1
  187. package/lib/kerror/errors/partialError.d.ts +1 -1
  188. package/lib/kerror/errors/partialError.js +1 -1
  189. package/lib/kerror/errors/pluginImplementationError.d.ts +1 -1
  190. package/lib/kerror/errors/pluginImplementationError.js +2 -1
  191. package/lib/kerror/errors/preconditionError.d.ts +1 -1
  192. package/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
  193. package/lib/kerror/errors/sizeLimitError.d.ts +1 -1
  194. package/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
  195. package/lib/kerror/errors/unauthorizedError.d.ts +1 -1
  196. package/lib/kerror/index.d.ts +3 -3
  197. package/lib/kerror/index.js +17 -16
  198. package/lib/kuzzle/dumpGenerator.js +130 -114
  199. package/lib/kuzzle/event/kuzzleEventEmitter.js +96 -70
  200. package/lib/kuzzle/event/pipeRunner.js +25 -24
  201. package/lib/kuzzle/event/waterfall.js +13 -15
  202. package/lib/kuzzle/index.js +2 -2
  203. package/lib/kuzzle/internalIndexHandler.js +80 -59
  204. package/lib/kuzzle/kuzzle.js +99 -99
  205. package/lib/kuzzle/kuzzleStateEnum.js +1 -1
  206. package/lib/kuzzle/log.js +23 -18
  207. package/lib/kuzzle/vault.js +34 -19
  208. package/lib/model/security/profile.d.ts +3 -3
  209. package/lib/model/security/profile.js +38 -37
  210. package/lib/model/security/rights.js +5 -5
  211. package/lib/model/security/role.d.ts +3 -3
  212. package/lib/model/security/role.js +25 -26
  213. package/lib/model/security/token.d.ts +1 -1
  214. package/lib/model/security/token.js +4 -4
  215. package/lib/model/security/user.d.ts +2 -2
  216. package/lib/model/security/user.js +9 -9
  217. package/lib/model/storage/apiKey.js +43 -33
  218. package/lib/model/storage/baseModel.js +49 -45
  219. package/lib/service/cache/redis.js +60 -55
  220. package/lib/service/service.js +17 -17
  221. package/lib/service/storage/elasticsearch.js +839 -755
  222. package/lib/service/storage/esWrapper.js +103 -86
  223. package/lib/service/storage/queryTranslator.js +52 -59
  224. package/lib/types/Controller.d.ts +3 -3
  225. package/lib/types/ControllerDefinition.d.ts +3 -3
  226. package/lib/types/DebugModule.d.ts +2 -2
  227. package/lib/types/DebugModule.js +1 -1
  228. package/lib/types/Global.d.ts +1 -1
  229. package/lib/types/HttpStream.d.ts +2 -1
  230. package/lib/types/HttpStream.js +7 -5
  231. package/lib/types/Kuzzle.d.ts +1 -1
  232. package/lib/types/KuzzleDocument.d.ts +1 -1
  233. package/lib/types/OpenApiDefinition.d.ts +1 -1
  234. package/lib/types/PasswordPolicy.d.ts +1 -1
  235. package/lib/types/Plugin.d.ts +6 -6
  236. package/lib/types/Plugin.js +2 -2
  237. package/lib/types/Policy.d.ts +1 -1
  238. package/lib/types/RequestPayload.d.ts +1 -1
  239. package/lib/types/ResponsePayload.d.ts +1 -1
  240. package/lib/types/Token.d.ts +1 -1
  241. package/lib/types/User.d.ts +1 -1
  242. package/lib/types/config/DumpConfiguration.d.ts +8 -8
  243. package/lib/types/config/HttpConfiguration.d.ts +1 -1
  244. package/lib/types/config/KuzzleConfiguration.d.ts +1 -1
  245. package/lib/types/config/LimitsConfiguration.d.ts +8 -8
  246. package/lib/types/config/PluginsConfiguration.d.ts +4 -4
  247. package/lib/types/config/SecurityConfiguration.d.ts +62 -62
  248. package/lib/types/config/ServerConfiguration.d.ts +55 -55
  249. package/lib/types/config/ServicesConfiguration.d.ts +2 -2
  250. package/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +10 -10
  251. package/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +3 -3
  252. package/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +194 -110
  253. package/lib/types/errors/ErrorDefinition.d.ts +1 -1
  254. package/lib/types/errors/ErrorDomains.d.ts +1 -1
  255. package/lib/types/index.d.ts +38 -38
  256. package/lib/types/realtime/RealtimeScope.d.ts +1 -1
  257. package/lib/types/realtime/RealtimeUsers.d.ts +1 -1
  258. package/lib/util/assertType.js +13 -11
  259. package/lib/util/async.d.ts +1 -0
  260. package/lib/util/async.js +61 -0
  261. package/lib/util/asyncStore.js +19 -21
  262. package/lib/util/bufferedPassThrough.d.ts +2 -2
  263. package/lib/util/bufferedPassThrough.js +4 -4
  264. package/lib/util/bytes.js +9 -13
  265. package/lib/util/crypto.js +1 -1
  266. package/lib/util/debug.js +5 -5
  267. package/lib/util/deprecate.js +24 -21
  268. package/lib/util/didYouMean.js +7 -7
  269. package/lib/util/dump-collection.d.ts +2 -2
  270. package/lib/util/dump-collection.js +26 -26
  271. package/lib/util/esRequest.d.ts +1 -0
  272. package/lib/util/esRequest.js +62 -0
  273. package/lib/util/extractFields.js +24 -25
  274. package/lib/util/inflector.js +5 -5
  275. package/lib/util/koncordeCompat.d.ts +2 -2
  276. package/lib/util/koncordeCompat.js +5 -5
  277. package/lib/util/memoize.js +3 -5
  278. package/lib/util/mutex.d.ts +19 -1
  279. package/lib/util/mutex.js +39 -12
  280. package/lib/util/name-generator.js +1331 -1331
  281. package/lib/util/promback.js +8 -10
  282. package/lib/util/readYamlFile.d.ts +1 -1
  283. package/lib/util/readYamlFile.js +1 -1
  284. package/lib/util/requestAssertions.js +34 -34
  285. package/lib/util/safeObject.js +5 -5
  286. package/lib/util/stackTrace.js +20 -22
  287. package/lib/util/wildcard.js +15 -15
  288. package/package.json +6 -6
  289. package/npm-shrinkwrap.json +0 -19422
@@ -19,34 +19,34 @@
19
19
  * limitations under the License.
20
20
  */
21
21
 
22
- 'use strict';
22
+ "use strict";
23
23
 
24
- const os = require('os');
25
- const jsonToYaml = require('json2yaml');
26
- const packagejson = require('../../../package.json');
24
+ const os = require("os");
25
+ const jsonToYaml = require("json2yaml");
26
+ const packagejson = require("../../../package.json");
27
27
 
28
- const { NativeController } = require('./baseController');
28
+ const { NativeController } = require("./baseController");
29
29
 
30
- const kerror = require('../../kerror');
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
- 'adminExists',
39
- 'capabilities',
40
- 'getAllStats',
41
- 'getConfig',
42
- 'getLastStats',
43
- 'getStats',
44
- 'healthCheck',
45
- 'info',
46
- 'metrics',
47
- 'now',
48
- 'publicApi',
49
- 'openapi',
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('core:storage:public:info:get'),
68
- global.kuzzle.ask('core:cache:public:info:get'),
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 (request) {
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('core:security:user:admin:exist');
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 (request) {
185
- const getServiceUnavailableError =
186
- err => kerror.get('core', 'fatal', 'service_unavailable', err);
187
- const result = { services: {}, status: 'green' };
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 === 'string') {
190
+ if (typeof request.input.args.services === "string") {
191
191
  // @deprecated Should be replaced with request.getArray('services')
192
- services = request.getArrayLegacy('services');
192
+ services = request.getArrayLegacy("services");
193
193
  }
194
- if (! services || services.includes('internalCache')) {
194
+ if (!services || services.includes("internalCache")) {
195
195
  try {
196
- await global.kuzzle.ask('core:cache:internal:info:get');
197
- result.services.internalCache = 'green';
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 = 'red';
202
- result.status = 'red';
200
+ result.services.internalCache = "red";
201
+ result.status = "red";
203
202
  }
204
203
  }
205
- if (! services || services.includes('memoryStorage')) {
204
+ if (!services || services.includes("memoryStorage")) {
206
205
  try {
207
- await global.kuzzle.ask('core:cache:public:info:get');
208
- result.services.memoryStorage = 'green';
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 = 'red';
213
- result.status = 'red';
210
+ result.services.memoryStorage = "red";
211
+ result.status = "red";
214
212
  }
215
213
  }
216
- if (! services || services.includes('storageEngine')) {
214
+ if (!services || services.includes("storageEngine")) {
217
215
  try {
218
- const response = await global.kuzzle.ask('core:storage:public:info:get');
216
+ const response = await global.kuzzle.ask(
217
+ "core:storage:public:info:get"
218
+ );
219
219
 
220
- if (response.status !== 'yellow' && response.status !== 'green') {
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 = 'green';
225
- }
226
- catch (error) {
224
+ result.services.storageEngine = "green";
225
+ } catch (error) {
227
226
  request.setError(getServiceUnavailableError(error));
228
- result.services.storageEngine = 'red';
229
- result.status = 'red';
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 = global.kuzzle.pluginsManager.getPluginsDescription();
273
+ response.kuzzle.plugins =
274
+ global.kuzzle.pluginsManager.getPluginsDescription();
273
275
 
274
- response.kuzzle.application = global.kuzzle.pluginsManager.application.info();
276
+ response.kuzzle.application =
277
+ global.kuzzle.pluginsManager.application.info();
275
278
 
276
279
  response.services = {
277
- internalCache: await global.kuzzle.ask('core:cache:internal:info:get'),
278
- internalStorage: await global.kuzzle.ask('core:storage:private:info:get'),
279
- memoryStorage: await global.kuzzle.ask('core:cache:public:info:get'),
280
- publicStorage: await global.kuzzle.ask('core:storage:public:info:get'),
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 (request) {
300
- const format = request.getString('format', 'json');
301
- const scope = request.getString('scope', 'kuzzle');
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 === 'kuzzle') {
306
- definition = await global.kuzzle.ask('core:api:openapi:kuzzle');
307
- }
308
- else if (scope === 'app') {
309
- definition = await global.kuzzle.ask('core:api:openapi:app');
310
- }
311
- else {
312
- throw kerror.get('api', 'assert', 'unexpected_argument', scope, ['kuzzle', 'app']);
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: 'raw',
317
- headers: { 'Content-Type': `application/${format}` },
322
+ format: "raw",
323
+ headers: { "Content-Type": `application/${format}` },
318
324
  });
319
325
 
320
- return format === 'json' ? definition : jsonToYaml.stringify(definition);
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('kuzzle:api:funnel:metrics'),
330
- network: await global.kuzzle.ask('core:network:router:metrics'),
331
- realtime: await global.kuzzle.ask('core:realtime:hotelClerk:metrics'),
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 (controllers, httpRoutes) {
341
+ _buildApiDefinition(controllers, httpRoutes) {
336
342
  const apiDefinition = {};
337
343
 
338
- for (const [ name, controller ] of controllers.entries()) {
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
- || (name === 'memoryStorage' && route.controller === 'ms'))
349
- && route.action === action);
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 (! actionList[action].http) {
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
  }