kuzzle 2.19.0 → 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 (288) 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
@@ -19,22 +19,22 @@
19
19
  * limitations under the License.
20
20
  */
21
21
 
22
- 'use strict';
22
+ "use strict";
23
23
 
24
- const path = require('path');
25
- const fs = require('fs');
26
- const os = require('os');
24
+ const path = require("path");
25
+ const fs = require("fs");
26
+ const os = require("os");
27
27
 
28
- const Bluebird = require('bluebird');
29
- const moment = require('moment');
30
- const dumpme = require('dumpme');
31
- const zlib = require('zlib');
28
+ const Bluebird = require("bluebird");
29
+ const moment = require("moment");
30
+ const dumpme = require("dumpme");
31
+ const zlib = require("zlib");
32
32
 
33
- const { Request } = require('../api/request');
34
- const kerror = require('../kerror');
33
+ const { Request } = require("../api/request");
34
+ const kerror = require("../kerror");
35
35
 
36
36
  class DumpGenerator {
37
- constructor () {
37
+ constructor() {
38
38
  this._dump = false;
39
39
  }
40
40
 
@@ -44,9 +44,9 @@ class DumpGenerator {
44
44
  * @param {string} suffix
45
45
  * @returns {Promise}
46
46
  */
47
- async dump (suffix) {
47
+ async dump(suffix) {
48
48
  if (this._dump) {
49
- throw kerror.get('api', 'process', 'action_locked', 'dump');
49
+ throw kerror.get("api", "process", "action_locked", "dump");
50
50
  }
51
51
 
52
52
  this._dump = true;
@@ -56,157 +56,167 @@ class DumpGenerator {
56
56
  moment()
57
57
  .format(global.kuzzle.config.dump.dateFormat)
58
58
  .concat(`-${suffix}`)
59
- .substring(0, 200));
59
+ .substring(0, 200)
60
+ );
60
61
 
61
- global.kuzzle.log.info('='.repeat(79));
62
+ global.kuzzle.log.info("=".repeat(79));
62
63
  global.kuzzle.log.info(`Generating dump in ${dumpPath}`);
63
64
  this._cleanUpHistory();
64
65
  try {
65
66
  fs.mkdirSync(dumpPath, { recursive: true });
66
- }
67
- catch (e) {
68
- const message = e.message.startsWith('EEXIST') ?
69
- 'Dump directory already exists. Skipping..' :
70
- `Unable to create dump folder: ${e.message}`;
67
+ } catch (e) {
68
+ const message = e.message.startsWith("EEXIST")
69
+ ? "Dump directory already exists. Skipping.."
70
+ : `Unable to create dump folder: ${e.message}`;
71
71
 
72
72
  global.kuzzle.log.error(message);
73
73
  throw new Error(message);
74
74
  }
75
75
 
76
76
  // dump kuzzle information
77
- global.kuzzle.log.info('> dumping kuzzle configuration');
77
+ global.kuzzle.log.info("> dumping kuzzle configuration");
78
78
  fs.writeFileSync(
79
- path.join(dumpPath, 'kuzzle.json'),
80
- JSON
81
- .stringify(
82
- {
83
- config: global.kuzzle.config,
84
- version: require('../../package.json').version
85
- },
86
- null,
87
- ' ')
88
- .concat('\n'));
79
+ path.join(dumpPath, "kuzzle.json"),
80
+ JSON.stringify(
81
+ {
82
+ config: global.kuzzle.config,
83
+ version: require("../../package.json").version,
84
+ },
85
+ null,
86
+ " "
87
+ ).concat("\n")
88
+ );
89
89
 
90
90
  // dump plugins configuration
91
- global.kuzzle.log.info('> dumping plugins configuration');
91
+ global.kuzzle.log.info("> dumping plugins configuration");
92
92
  fs.writeFileSync(
93
- path.join(dumpPath, 'plugins.json'),
94
- JSON
95
- .stringify(global.kuzzle.pluginsManager.getPluginsDescription(), null, ' ')
96
- .concat('\n'));
93
+ path.join(dumpPath, "plugins.json"),
94
+ JSON.stringify(
95
+ global.kuzzle.pluginsManager.getPluginsDescription(),
96
+ null,
97
+ " "
98
+ ).concat("\n")
99
+ );
97
100
 
98
101
  // dump Node.js configuration
99
- global.kuzzle.log.info('> dumping Node.js configuration');
102
+ global.kuzzle.log.info("> dumping Node.js configuration");
100
103
  fs.writeFileSync(
101
- path.join(dumpPath, 'nodejs.json'),
102
- JSON
103
- .stringify(
104
- {
105
- argv: process.argv,
106
- config: process.config,
107
- env: process.env,
108
- moduleLoadList: process.moduleLoadList,
109
- release: process.release,
110
- versions: process.versions
111
- },
112
- null,
113
- ' ')
114
- .concat('\n'));
104
+ path.join(dumpPath, "nodejs.json"),
105
+ JSON.stringify(
106
+ {
107
+ argv: process.argv,
108
+ config: process.config,
109
+ env: process.env,
110
+ moduleLoadList: process.moduleLoadList,
111
+ release: process.release,
112
+ versions: process.versions,
113
+ },
114
+ null,
115
+ " "
116
+ ).concat("\n")
117
+ );
115
118
 
116
119
  // dump os configuration
117
- global.kuzzle.log.info('> dumping os configuration');
120
+ global.kuzzle.log.info("> dumping os configuration");
118
121
  fs.writeFileSync(
119
- path.join(dumpPath, 'os.json'),
120
- JSON
121
- .stringify(
122
- {
123
- cpus: os.cpus(),
124
- loadavg: os.loadavg(),
125
- mem: {
126
- free: os.freemem(),
127
- total: os.totalmem()
128
- },
129
- networkInterfaces: os.networkInterfaces(),
130
- platform: os.platform(),
131
- uptime: os.uptime()
122
+ path.join(dumpPath, "os.json"),
123
+ JSON.stringify(
124
+ {
125
+ cpus: os.cpus(),
126
+ loadavg: os.loadavg(),
127
+ mem: {
128
+ free: os.freemem(),
129
+ total: os.totalmem(),
132
130
  },
133
- null,
134
- ' ')
135
- .concat('\n'));
131
+ networkInterfaces: os.networkInterfaces(),
132
+ platform: os.platform(),
133
+ uptime: os.uptime(),
134
+ },
135
+ null,
136
+ " "
137
+ ).concat("\n")
138
+ );
136
139
 
137
140
  // core-dump
138
- global.kuzzle.log.info('> generating core-dump');
139
- dumpme(global.kuzzle.config.dump.gcore || 'gcore', `${dumpPath}/core`);
141
+ global.kuzzle.log.info("> generating core-dump");
142
+ dumpme(global.kuzzle.config.dump.gcore || "gcore", `${dumpPath}/core`);
140
143
 
141
144
  // Gzip the core
142
145
  try {
143
- const corefiles = this._listFilesMatching(dumpPath, 'core');
146
+ const corefiles = this._listFilesMatching(dumpPath, "core");
144
147
 
145
148
  if (corefiles[0]) {
146
149
  const readStream = fs.createReadStream(corefiles[0]);
147
150
  const writeStream = fs.createWriteStream(`${dumpPath}/core.gz`);
148
151
 
149
- await new Bluebird(resolve => readStream
150
- .pipe(zlib.createGzip())
151
- .pipe(writeStream)
152
- .on('finish', () => {
153
- // rm the original core file
154
- try {
155
- fs.unlinkSync(corefiles[0]);
156
- }
157
- catch (e) {
158
- global.kuzzle.log.warn(`> unable to clean up core file ${corefiles[0]}`);
159
- }
160
- resolve();
161
- }));
152
+ await new Bluebird((resolve) =>
153
+ readStream
154
+ .pipe(zlib.createGzip())
155
+ .pipe(writeStream)
156
+ .on("finish", () => {
157
+ // rm the original core file
158
+ try {
159
+ fs.unlinkSync(corefiles[0]);
160
+ } catch (e) {
161
+ global.kuzzle.log.warn(
162
+ `> unable to clean up core file ${corefiles[0]}`
163
+ );
164
+ }
165
+ resolve();
166
+ })
167
+ );
168
+ } else {
169
+ global.kuzzle.log.warn("> could not generate dump");
162
170
  }
163
- else {
164
- global.kuzzle.log.warn('> could not generate dump');
165
- }
166
- }
167
- catch (error) {
171
+ } catch (error) {
168
172
  global.kuzzle.log.error(error);
169
173
  }
170
174
 
171
175
  // copy node binary
172
- global.kuzzle.log.info('> copy node binary');
173
- fs.copyFileSync(process.execPath, path.join(dumpPath, 'node'));
176
+ global.kuzzle.log.info("> copy node binary");
177
+ fs.copyFileSync(process.execPath, path.join(dumpPath, "node"));
174
178
 
175
179
  // dumping Kuzzle's stats
176
- global.kuzzle.log.info('> dumping kuzzle\'s stats');
180
+ global.kuzzle.log.info("> dumping kuzzle's stats");
177
181
  const statistics = await global.kuzzle.statistics.getAllStats(
178
- new Request({ action: 'getAllStats', controller: 'statistics' }));
182
+ new Request({ action: "getAllStats", controller: "statistics" })
183
+ );
179
184
 
180
185
  fs.writeFileSync(
181
- path.join(dumpPath, 'statistics.json'),
182
- JSON.stringify(statistics.hits, null, ' ').concat('\n'));
186
+ path.join(dumpPath, "statistics.json"),
187
+ JSON.stringify(statistics.hits, null, " ").concat("\n")
188
+ );
183
189
 
184
- global.kuzzle.log.info('Done.');
185
- global.kuzzle.log.info('[ℹ] You can send the folder to the kuzzle core team at support@kuzzle.io');
186
- global.kuzzle.log.info('='.repeat(79));
190
+ global.kuzzle.log.info("Done.");
191
+ global.kuzzle.log.info(
192
+ "[ℹ] You can send the folder to the kuzzle core team at support@kuzzle.io"
193
+ );
194
+ global.kuzzle.log.info("=".repeat(79));
187
195
 
188
196
  this._dump = false;
189
197
  return dumpPath;
190
198
  }
191
199
 
192
- _cleanUpHistory () {
193
- const
194
- config = global.kuzzle.config.dump,
200
+ _cleanUpHistory() {
201
+ const config = global.kuzzle.config.dump,
195
202
  dumpPath = path.normalize(global.kuzzle.config.dump.path);
196
203
 
197
204
  try {
198
- fs.accessSync(dumpPath, fs.constants.R_OK | fs.constants.W_OK | fs.constants.X_OK);
199
- }
200
- catch (e) {
205
+ fs.accessSync(
206
+ dumpPath,
207
+ fs.constants.R_OK | fs.constants.W_OK | fs.constants.X_OK
208
+ );
209
+ } catch (e) {
201
210
  return;
202
211
  }
203
212
 
204
- const dumps = fs.readdirSync(dumpPath)
205
- .map(file => {
213
+ const dumps = fs
214
+ .readdirSync(dumpPath)
215
+ .map((file) => {
206
216
  const filepath = `${dumpPath}/${file}`;
207
217
  return { path: filepath, stat: fs.statSync(filepath) };
208
218
  })
209
- .filter(prop => prop.stat.isDirectory())
219
+ .filter((prop) => prop.stat.isDirectory())
210
220
  .sort((a, b) => {
211
221
  if (a.stat.birthtime.getTime() === b.stat.birthtime.getTime()) {
212
222
  return 0;
@@ -222,7 +232,10 @@ class DumpGenerator {
222
232
  }
223
233
 
224
234
  for (let i = 0; i < dumps.length - config.history.coredump; i++) {
225
- const corefiles = this._listFilesMatching(path.normalize(dumps[i].path), 'core');
235
+ const corefiles = this._listFilesMatching(
236
+ path.normalize(dumps[i].path),
237
+ "core"
238
+ );
226
239
 
227
240
  if (corefiles[0]) {
228
241
  fs.unlinkSync(corefiles[0]);
@@ -230,12 +243,15 @@ class DumpGenerator {
230
243
  }
231
244
  }
232
245
 
233
- _listFilesMatching (directory, start) {
234
- return fs.readdirSync(directory)
235
- .filter(entry => (
236
- fs.lstatSync(`${directory}/${entry}`).isFile() && entry.startsWith(start)
237
- ))
238
- .map(file => path.join(directory, file));
246
+ _listFilesMatching(directory, start) {
247
+ return fs
248
+ .readdirSync(directory)
249
+ .filter(
250
+ (entry) =>
251
+ fs.lstatSync(`${directory}/${entry}`).isFile() &&
252
+ entry.startsWith(start)
253
+ )
254
+ .map((file) => path.join(directory, file));
239
255
  }
240
256
  }
241
257