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,36 +19,37 @@
19
19
  * limitations under the License.
20
20
  */
21
21
 
22
- 'use strict';
22
+ "use strict";
23
23
 
24
- const kerror = require('../../kerror');
25
- const { isPlainObject } = require('../../util/safeObject');
26
- const { NativeController } = require('./baseController');
24
+ const kerror = require("../../kerror");
25
+ const { isPlainObject } = require("../../util/safeObject");
26
+ const { NativeController } = require("./baseController");
27
27
 
28
28
  /**
29
29
  * @class CollectionController
30
30
  */
31
31
  class CollectionController extends NativeController {
32
- constructor () {
32
+ constructor() {
33
33
  super([
34
- 'create',
35
- 'delete',
36
- 'deleteSpecifications',
37
- 'exists',
38
- 'getMapping',
39
- 'getSpecifications',
40
- 'list',
41
- 'refresh',
42
- 'scrollSpecifications',
43
- 'searchSpecifications',
44
- 'truncate',
45
- 'update',
46
- 'updateMapping',
47
- 'updateSpecifications',
48
- 'validateSpecifications',
34
+ "create",
35
+ "delete",
36
+ "deleteSpecifications",
37
+ "exists",
38
+ "getMapping",
39
+ "getSpecifications",
40
+ "list",
41
+ "refresh",
42
+ "scrollSpecifications",
43
+ "searchSpecifications",
44
+ "truncate",
45
+ "update",
46
+ "updateMapping",
47
+ "updateSpecifications",
48
+ "validateSpecifications",
49
49
  ]);
50
50
 
51
- this.defaultScrollTTL = global.kuzzle.config.services.storageEngine.defaults.scrollTTL;
51
+ this.defaultScrollTTL =
52
+ global.kuzzle.config.services.storageEngine.defaults.scrollTTL;
52
53
  }
53
54
 
54
55
  /**
@@ -57,18 +58,21 @@ class CollectionController extends NativeController {
57
58
  * @param {Request} request
58
59
  * @returns {Promise.<Object>}
59
60
  */
60
- async updateMapping (request) {
61
- request.addDeprecation('2.1.0',
62
- 'This action has been deprecated since Kuzzle version 2.1.0. This feature might be removed in a future major version. To update a collection, use this API action instead: "collection:update".');
61
+ async updateMapping(request) {
62
+ request.addDeprecation(
63
+ "2.1.0",
64
+ 'This action has been deprecated since Kuzzle version 2.1.0. This feature might be removed in a future major version. To update a collection, use this API action instead: "collection:update".'
65
+ );
63
66
 
64
67
  const { index, collection } = request.getIndexAndCollection();
65
68
  const mappings = request.getBody();
66
69
 
67
70
  const updated = await this.ask(
68
- 'core:storage:public:mappings:update',
71
+ "core:storage:public:mappings:update",
69
72
  index,
70
73
  collection,
71
- mappings);
74
+ mappings
75
+ );
72
76
 
73
77
  return this._filterMappingResponse(updated);
74
78
  }
@@ -79,16 +83,16 @@ class CollectionController extends NativeController {
79
83
  * @param {Request} request
80
84
  * @returns {Promise.<Object>}
81
85
  */
82
- async getMapping (request) {
83
- const
84
- { index, collection } = request.getIndexAndCollection(),
85
- includeKuzzleMeta = request.getBoolean('includeKuzzleMeta');
86
+ async getMapping(request) {
87
+ const { index, collection } = request.getIndexAndCollection(),
88
+ includeKuzzleMeta = request.getBoolean("includeKuzzleMeta");
86
89
 
87
90
  const mapping = await this.ask(
88
- 'core:storage:public:mappings:get',
91
+ "core:storage:public:mappings:get",
89
92
  index,
90
93
  collection,
91
- { includeKuzzleMeta });
94
+ { includeKuzzleMeta }
95
+ );
92
96
 
93
97
  return this._filterMappingResponse(mapping);
94
98
  }
@@ -99,20 +103,22 @@ class CollectionController extends NativeController {
99
103
  * @param {Request} request
100
104
  * @returns {Promise.<Object>}
101
105
  */
102
- getSpecifications (request) {
106
+ getSpecifications(request) {
103
107
  const { index, collection } = request.getIndexAndCollection();
104
108
 
105
- return global.kuzzle.internalIndex.get('validations', `${index}#${collection}`)
106
- .then(response => response._source)
107
- .catch(error => {
109
+ return global.kuzzle.internalIndex
110
+ .get("validations", `${index}#${collection}`)
111
+ .then((response) => response._source)
112
+ .catch((error) => {
108
113
  if (error.status === 404) {
109
114
  throw kerror.getFrom(
110
115
  error,
111
- 'validation',
112
- 'assert',
113
- 'not_found',
116
+ "validation",
117
+ "assert",
118
+ "not_found",
114
119
  index,
115
- collection);
120
+ collection
121
+ );
116
122
  }
117
123
 
118
124
  throw error;
@@ -125,24 +131,20 @@ class CollectionController extends NativeController {
125
131
  * @param {Request} request
126
132
  * @returns {Promise.<Object>}
127
133
  */
128
- async searchSpecifications (request) {
134
+ async searchSpecifications(request) {
129
135
  const { from, size, scrollTTL, searchBody } = request.getSearchParams();
130
136
 
131
- if (! isPlainObject(searchBody)) {
132
- throw kerror.get(
133
- 'api',
134
- 'assert',
135
- 'invalid_type',
136
- 'body.query',
137
- 'object');
137
+ if (!isPlainObject(searchBody)) {
138
+ throw kerror.get("api", "assert", "invalid_type", "body.query", "object");
138
139
  }
139
140
 
140
141
  this.assertNotExceedMaxFetch(size - from);
141
142
 
142
143
  const { hits, scrollId, total } = await global.kuzzle.internalIndex.search(
143
- 'validations',
144
+ "validations",
144
145
  searchBody,
145
- { from, scroll: scrollTTL, size });
146
+ { from, scroll: scrollTTL, size }
147
+ );
146
148
 
147
149
  return { hits, scrollId, total };
148
150
  }
@@ -153,16 +155,16 @@ class CollectionController extends NativeController {
153
155
  * @param {Request} request
154
156
  * @returns {Promise.<object>}
155
157
  */
156
- async scrollSpecifications (request) {
157
- const
158
- ttl = request.getString('scroll', this.defaultScrollTTL),
159
- id = request.getString('scrollId');
158
+ async scrollSpecifications(request) {
159
+ const ttl = request.getString("scroll", this.defaultScrollTTL),
160
+ id = request.getString("scrollId");
160
161
 
161
- return global.kuzzle.internalIndex.scroll(id, ttl)
162
+ return global.kuzzle.internalIndex
163
+ .scroll(id, ttl)
162
164
  .then(({ scrollId, hits, total }) => ({
163
165
  hits,
164
166
  scrollId,
165
- total
167
+ total,
166
168
  }));
167
169
  }
168
170
 
@@ -172,7 +174,7 @@ class CollectionController extends NativeController {
172
174
  * @param {Request} request
173
175
  * @returns {Promise.<Object>}
174
176
  */
175
- async updateSpecifications (request) {
177
+ async updateSpecifications(request) {
176
178
  const { index, collection } = request.getIndexAndCollection();
177
179
  const specifications = request.getBody();
178
180
 
@@ -180,26 +182,29 @@ class CollectionController extends NativeController {
180
182
  index,
181
183
  collection,
182
184
  specifications,
183
- true);
185
+ true
186
+ );
184
187
 
185
- if (! isValid) {
188
+ if (!isValid) {
186
189
  throw kerror.get(
187
- 'validation',
188
- 'assert',
189
- 'invalid_specifications',
190
- errors.join('\n\t- '));
190
+ "validation",
191
+ "assert",
192
+ "invalid_specifications",
193
+ errors.join("\n\t- ")
194
+ );
191
195
  }
192
196
 
193
197
  await global.kuzzle.internalIndex.createOrReplace(
194
- 'validations',
198
+ "validations",
195
199
  `${index}#${collection}`,
196
200
  {
197
201
  collection,
198
202
  index,
199
203
  validation: specifications,
200
- });
204
+ }
205
+ );
201
206
 
202
- await global.kuzzle.internalIndex.refreshCollection('validations');
207
+ await global.kuzzle.internalIndex.refreshCollection("validations");
203
208
  await global.kuzzle.validation.curateSpecification();
204
209
 
205
210
  return specifications;
@@ -211,14 +216,13 @@ class CollectionController extends NativeController {
211
216
  * @param {Request} request
212
217
  * @returns {Promise.<Object>}
213
218
  */
214
- async deleteSpecifications (request) {
219
+ async deleteSpecifications(request) {
215
220
  const { index, collection } = request.getIndexAndCollection();
216
221
  const specificationsId = `${index}#${collection}`;
217
222
 
218
223
  try {
219
- await global.kuzzle.internalIndex.delete('validations', specificationsId);
220
- }
221
- catch (error) {
224
+ await global.kuzzle.internalIndex.delete("validations", specificationsId);
225
+ } catch (error) {
222
226
  if (error.status === 404) {
223
227
  return {
224
228
  acknowledged: true,
@@ -228,11 +232,11 @@ class CollectionController extends NativeController {
228
232
  throw error;
229
233
  }
230
234
 
231
- await global.kuzzle.internalIndex.refreshCollection('validations');
235
+ await global.kuzzle.internalIndex.refreshCollection("validations");
232
236
  await global.kuzzle.validation.curateSpecification();
233
237
 
234
238
  return {
235
- acknowledged: true
239
+ acknowledged: true,
236
240
  };
237
241
  }
238
242
 
@@ -242,28 +246,23 @@ class CollectionController extends NativeController {
242
246
  * @param {Request} request
243
247
  * @returns {Promise.<Object>}
244
248
  */
245
- validateSpecifications (request) {
246
- const
247
- { index, collection } = request.getIndexAndCollection(),
249
+ validateSpecifications(request) {
250
+ const { index, collection } = request.getIndexAndCollection(),
248
251
  specifications = request.getBody();
249
252
 
250
- return global.kuzzle.validation.validateFormat(
251
- index,
252
- collection,
253
- specifications,
254
- true
255
- )
253
+ return global.kuzzle.validation
254
+ .validateFormat(index, collection, specifications, true)
256
255
  .then(({ isValid, errors }) => {
257
- if (! isValid) {
256
+ if (!isValid) {
258
257
  return {
259
- description: 'Some errors with provided specifications.',
258
+ description: "Some errors with provided specifications.",
260
259
  details: errors,
261
- valid: false
260
+ valid: false,
262
261
  };
263
262
  }
264
263
 
265
264
  return {
266
- valid: true
265
+ valid: true,
267
266
  };
268
267
  });
269
268
  }
@@ -274,13 +273,17 @@ class CollectionController extends NativeController {
274
273
  * @param {KuzzleRequest} request
275
274
  * @returns {Promise.<Object>}
276
275
  */
277
- async truncate (request) {
276
+ async truncate(request) {
278
277
  const { index, collection } = request.getIndexAndCollection();
279
278
 
280
- await this.ask('core:storage:public:collection:truncate', index, collection);
279
+ await this.ask(
280
+ "core:storage:public:collection:truncate",
281
+ index,
282
+ collection
283
+ );
281
284
 
282
285
  return {
283
- acknowledged: true
286
+ acknowledged: true,
284
287
  };
285
288
  }
286
289
 
@@ -288,35 +291,44 @@ class CollectionController extends NativeController {
288
291
  * @param {Request} request
289
292
  * @returns {Promise.<Object>}
290
293
  */
291
- async list (request) {
294
+ async list(request) {
292
295
  const index = request.getIndex();
293
- const from = request.getInteger('from', 0);
294
- const size = request.getInteger('size', 0);
295
- const type = request.getString('type', 'all');
296
+ const from = request.getInteger("from", 0);
297
+ const size = request.getInteger("size", 0);
298
+ const type = request.getString("type", "all");
296
299
 
297
- if (! ['all', 'stored', 'realtime'].includes(type)) {
298
- throw kerror.get('api', 'assert', 'invalid_argument', '"all", "stored", "realtime"');
300
+ if (!["all", "stored", "realtime"].includes(type)) {
301
+ throw kerror.get(
302
+ "api",
303
+ "assert",
304
+ "invalid_argument",
305
+ '"all", "stored", "realtime"'
306
+ );
299
307
  }
300
308
 
301
309
  if (request.input.args.type) {
302
- request.addDeprecation('2.10.2',
303
- 'The "type" argument and this route returning a list of realtime collections have both been deprecated since Kuzzle version 2.10.1. This feature might be removed in a future major version. To get a list of realtime collections, use this API action instead: "realtime:list".');
310
+ request.addDeprecation(
311
+ "2.10.2",
312
+ 'The "type" argument and this route returning a list of realtime collections have both been deprecated since Kuzzle version 2.10.1. This feature might be removed in a future major version. To get a list of realtime collections, use this API action instead: "realtime:list".'
313
+ );
304
314
  }
305
315
 
306
316
  let collections = [];
307
317
 
308
- if (type === 'realtime' || type === 'all') {
309
- const list = await this.ask('core:realtime:collections:get', index);
310
- collections = list.map(name => ({ name, type: 'realtime' }));
318
+ if (type === "realtime" || type === "all") {
319
+ const list = await this.ask("core:realtime:collections:get", index);
320
+ collections = list.map((name) => ({ name, type: "realtime" }));
311
321
  }
312
322
 
313
- if (type !== 'realtime') {
323
+ if (type !== "realtime") {
314
324
  const publicCollections = await this.ask(
315
- 'core:storage:public:collection:list',
316
- index);
325
+ "core:storage:public:collection:list",
326
+ index
327
+ );
317
328
 
318
329
  collections = collections.concat(
319
- publicCollections.map(name => ({ name, type: 'stored' })));
330
+ publicCollections.map((name) => ({ name, type: "stored" }))
331
+ );
320
332
  }
321
333
 
322
334
  collections.sort((a, b) => {
@@ -333,10 +345,10 @@ class CollectionController extends NativeController {
333
345
  * @param {Request} request
334
346
  * @returns {Promise.<boolean>}
335
347
  */
336
- exists (request) {
348
+ exists(request) {
337
349
  const { index, collection } = request.getIndexAndCollection();
338
350
 
339
- return this.ask('core:storage:public:collection:exist', index, collection);
351
+ return this.ask("core:storage:public:collection:exist", index, collection);
340
352
  }
341
353
 
342
354
  /**
@@ -346,7 +358,7 @@ class CollectionController extends NativeController {
346
358
  * @param {Request} request
347
359
  * @returns {Promise.<Object>}
348
360
  */
349
- async create (request) {
361
+ async create(request) {
350
362
  const body = request.getBody({});
351
363
  const { index, collection } = request.getIndexAndCollection();
352
364
 
@@ -355,18 +367,20 @@ class CollectionController extends NativeController {
355
367
  // @deprecated sending directly the mappings is deprecated since 2.1.0
356
368
  if (body.properties || body.dynamic || body._meta) {
357
369
  config.mappings = body;
358
- request.addDeprecation('2.1.0',
359
- 'Using "properties", "dynamic" or "_meta" fields in the body has been deprecated since Kuzzle version 2.1.0. This feature might be removed in a future major version. Use "settings" and "mappings" fields instead');
360
- }
361
- else {
370
+ request.addDeprecation(
371
+ "2.1.0",
372
+ 'Using "properties", "dynamic" or "_meta" fields in the body has been deprecated since Kuzzle version 2.1.0. This feature might be removed in a future major version. Use "settings" and "mappings" fields instead'
373
+ );
374
+ } else {
362
375
  config = body;
363
376
  }
364
377
 
365
378
  await this.ask(
366
- 'core:storage:public:collection:create',
379
+ "core:storage:public:collection:create",
367
380
  index,
368
381
  collection,
369
- config);
382
+ config
383
+ );
370
384
 
371
385
  return { acknowledged: true };
372
386
  }
@@ -377,16 +391,16 @@ class CollectionController extends NativeController {
377
391
  * @param {Request} request
378
392
  * @returns {Promise.<Object>}
379
393
  */
380
- async update (request) {
381
- const
382
- config = request.getBody({}),
394
+ async update(request) {
395
+ const config = request.getBody({}),
383
396
  { index, collection } = request.getIndexAndCollection();
384
397
 
385
398
  await this.ask(
386
- 'core:storage:public:collection:update',
399
+ "core:storage:public:collection:update",
387
400
  index,
388
401
  collection,
389
- config);
402
+ config
403
+ );
390
404
 
391
405
  return null;
392
406
  }
@@ -397,10 +411,10 @@ class CollectionController extends NativeController {
397
411
  * @param {Request} request
398
412
  * @returns {Promise.<null>}
399
413
  */
400
- async refresh (request) {
414
+ async refresh(request) {
401
415
  const { index, collection } = request.getIndexAndCollection();
402
416
 
403
- await this.ask('core:storage:public:collection:refresh', index, collection);
417
+ await this.ask("core:storage:public:collection:refresh", index, collection);
404
418
 
405
419
  return null;
406
420
  }
@@ -413,15 +427,14 @@ class CollectionController extends NativeController {
413
427
  *
414
428
  * @returns {Promise.<null>}
415
429
  */
416
- async delete (request) {
430
+ async delete(request) {
417
431
  const { index, collection } = request.getIndexAndCollection();
418
432
 
419
- await this.ask('core:storage:public:collection:delete', index, collection);
433
+ await this.ask("core:storage:public:collection:delete", index, collection);
420
434
 
421
435
  return null;
422
436
  }
423
437
 
424
-
425
438
  /**
426
439
  * Uses from and size to paginate response results
427
440
  * If type is "all", stored collections are prioritary
@@ -431,12 +444,11 @@ class CollectionController extends NativeController {
431
444
  * @param {Object} response
432
445
  * @returns {Object} { collections, from, size }
433
446
  */
434
- _paginateCollections (from, size, response) {
447
+ _paginateCollections(from, size, response) {
435
448
  if (from || size) {
436
449
  if (from) {
437
450
  response.from = Number.parseInt(from);
438
- }
439
- else {
451
+ } else {
440
452
  response.from = 0;
441
453
  }
442
454
 
@@ -447,8 +459,7 @@ class CollectionController extends NativeController {
447
459
  response.from,
448
460
  response.from + response.size
449
461
  );
450
- }
451
- else {
462
+ } else {
452
463
  response.collections = response.collections.slice(response.from);
453
464
  }
454
465
  }
@@ -461,11 +472,11 @@ class CollectionController extends NativeController {
461
472
  * @param {Object} mapping - raw ES mapping
462
473
  * @returns {Object}
463
474
  */
464
- _filterMappingResponse (mapping) {
475
+ _filterMappingResponse(mapping) {
465
476
  return {
466
477
  _meta: mapping._meta,
467
478
  dynamic: mapping.dynamic,
468
- properties: mapping.properties
479
+ properties: mapping.properties,
469
480
  };
470
481
  }
471
482
  }
@@ -1,5 +1,5 @@
1
- import { KuzzleRequest } from '../request';
2
- import { NativeController } from './baseController';
1
+ import { KuzzleRequest } from "../request";
2
+ import { NativeController } from "./baseController";
3
3
  /**
4
4
  * @class DebugController
5
5
  */