kuzzle 2.49.1 → 2.50.0-beta.4

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 (591) hide show
  1. package/dist/bin/copy-protobuf.js +17 -0
  2. package/dist/lib/api/controllers/adminController.d.ts +51 -0
  3. package/dist/lib/api/controllers/adminController.js +191 -0
  4. package/{lib → dist/lib}/api/controllers/authController.d.ts +20 -40
  5. package/{lib → dist/lib}/api/controllers/authController.js +23 -24
  6. package/dist/lib/api/controllers/bulkController.d.ts +46 -0
  7. package/dist/lib/api/controllers/bulkController.js +132 -0
  8. package/dist/lib/api/controllers/clusterController.d.ts +6 -0
  9. package/{lib → dist/lib}/api/controllers/clusterController.js +7 -11
  10. package/dist/lib/api/controllers/collectionController.d.ts +136 -0
  11. package/dist/lib/api/controllers/collectionController.js +356 -0
  12. package/dist/lib/api/controllers/documentController.d.ts +181 -0
  13. package/dist/lib/api/controllers/documentController.js +768 -0
  14. package/dist/lib/api/controllers/index.d.ts +12 -0
  15. package/{lib → dist/lib}/api/controllers/index.js +13 -14
  16. package/dist/lib/api/controllers/indexController.d.ts +65 -0
  17. package/dist/lib/api/controllers/indexController.js +139 -0
  18. package/dist/lib/api/controllers/memoryStorageController.d.ts +8 -0
  19. package/dist/lib/api/controllers/memoryStorageController.js +867 -0
  20. package/dist/lib/api/controllers/realtimeController.d.ts +47 -0
  21. package/dist/lib/api/controllers/realtimeController.js +128 -0
  22. package/dist/lib/api/controllers/securityController.d.ts +423 -0
  23. package/dist/lib/api/controllers/securityController.js +1139 -0
  24. package/dist/lib/api/controllers/serverController.d.ts +82 -0
  25. package/dist/lib/api/controllers/serverController.js +321 -0
  26. package/dist/lib/api/documentExtractor.d.ts +9 -0
  27. package/dist/lib/api/documentExtractor.js +274 -0
  28. package/dist/lib/api/funnel.d.ts +183 -0
  29. package/dist/lib/api/funnel.js +821 -0
  30. package/dist/lib/api/httpRoutes.d.ts +17 -0
  31. package/dist/lib/api/httpRoutes.js +1496 -0
  32. package/dist/lib/api/rateLimiter.d.ts +18 -0
  33. package/dist/lib/api/rateLimiter.js +74 -0
  34. package/{lib → dist/lib}/api/request/kuzzleRequest.d.ts +2 -2
  35. package/{lib → dist/lib}/api/request/requestContext.d.ts +2 -1
  36. package/dist/lib/cluster/command.d.ts +73 -0
  37. package/dist/lib/cluster/command.js +236 -0
  38. package/dist/lib/cluster/index.d.ts +2 -0
  39. package/{lib → dist/lib}/cluster/index.js +1 -2
  40. package/dist/lib/cluster/node.d.ts +278 -0
  41. package/dist/lib/cluster/node.js +876 -0
  42. package/dist/lib/cluster/publisher.d.ts +188 -0
  43. package/dist/lib/cluster/publisher.js +347 -0
  44. package/dist/lib/cluster/subscriber.d.ts +269 -0
  45. package/dist/lib/cluster/subscriber.js +555 -0
  46. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +13 -0
  47. package/dist/lib/cluster/workers/IDCardRenewer.js +120 -0
  48. package/{lib → dist/lib}/config/documentEventAliases.d.ts +1 -2
  49. package/dist/lib/config/index.d.ts +5 -0
  50. package/dist/lib/config/index.js +244 -0
  51. package/dist/lib/config/sdkCompatibility.json +9 -0
  52. package/dist/lib/core/auth/formatProcessing.d.ts +30 -0
  53. package/dist/lib/core/auth/formatProcessing.js +55 -0
  54. package/dist/lib/core/auth/passportResponse.d.ts +15 -0
  55. package/{lib → dist/lib}/core/auth/passportResponse.js +24 -30
  56. package/dist/lib/core/auth/passportWrapper.d.ts +28 -0
  57. package/dist/lib/core/auth/passportWrapper.js +126 -0
  58. package/{lib → dist/lib}/core/backend/backendConfig.js +2 -2
  59. package/{lib → dist/lib}/core/backend/backendErrors.js +9 -12
  60. package/dist/lib/core/cache/cacheEngine.d.ts +15 -0
  61. package/dist/lib/core/cache/cacheEngine.js +205 -0
  62. package/dist/lib/core/network/accessLogger.d.ts +29 -0
  63. package/dist/lib/core/network/accessLogger.js +250 -0
  64. package/dist/lib/core/network/clientConnection.d.ts +15 -0
  65. package/{lib → dist/lib}/core/network/clientConnection.js +17 -24
  66. package/dist/lib/core/network/context.d.ts +42 -0
  67. package/dist/lib/core/network/context.js +57 -0
  68. package/dist/lib/core/network/entryPoint.d.ts +62 -0
  69. package/dist/lib/core/network/entryPoint.js +261 -0
  70. package/dist/lib/core/network/httpRouter/index.d.ts +85 -0
  71. package/dist/lib/core/network/httpRouter/index.js +258 -0
  72. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +46 -0
  73. package/dist/lib/core/network/httpRouter/routeHandler.js +101 -0
  74. package/dist/lib/core/network/httpRouter/routePart.d.ts +35 -0
  75. package/dist/lib/core/network/httpRouter/routePart.js +117 -0
  76. package/dist/lib/core/network/protocolManifest.d.ts +6 -0
  77. package/{lib → dist/lib}/core/network/protocolManifest.js +5 -9
  78. package/dist/lib/core/network/protocols/httpMessage.d.ts +22 -0
  79. package/dist/lib/core/network/protocols/httpMessage.js +62 -0
  80. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +171 -0
  81. package/dist/lib/core/network/protocols/httpwsProtocol.js +921 -0
  82. package/dist/lib/core/network/protocols/internalProtocol.d.ts +27 -0
  83. package/dist/lib/core/network/protocols/internalProtocol.js +82 -0
  84. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +39 -0
  85. package/dist/lib/core/network/protocols/mqttProtocol.js +219 -0
  86. package/dist/lib/core/network/protocols/protocol.d.ts +26 -0
  87. package/dist/lib/core/network/protocols/protocol.js +74 -0
  88. package/dist/lib/core/network/router.d.ts +49 -0
  89. package/dist/lib/core/network/router.js +193 -0
  90. package/dist/lib/core/plugin/plugin.d.ts +56 -0
  91. package/dist/lib/core/plugin/plugin.js +282 -0
  92. package/{lib → dist/lib}/core/plugin/pluginContext.js +2 -2
  93. package/dist/lib/core/plugin/pluginManifest.d.ts +5 -0
  94. package/{lib → dist/lib}/core/plugin/pluginManifest.js +16 -27
  95. package/dist/lib/core/plugin/pluginRepository.d.ts +53 -0
  96. package/dist/lib/core/plugin/pluginRepository.js +112 -0
  97. package/dist/lib/core/plugin/pluginsManager.d.ts +190 -0
  98. package/dist/lib/core/plugin/pluginsManager.js +817 -0
  99. package/dist/lib/core/plugin/privilegedContext.d.ts +14 -0
  100. package/{lib → dist/lib}/core/plugin/privilegedContext.js +10 -14
  101. package/dist/lib/core/realtime/actionEnum.d.ts +25 -0
  102. package/{lib → dist/lib}/core/realtime/actionEnum.js +7 -10
  103. package/dist/lib/core/realtime/index.d.ts +8 -0
  104. package/{lib → dist/lib}/core/realtime/index.js +9 -13
  105. package/dist/lib/core/realtime/notification/document.d.ts +34 -0
  106. package/dist/lib/core/realtime/notification/document.js +98 -0
  107. package/dist/lib/core/realtime/notification/index.d.ts +3 -0
  108. package/{lib → dist/lib}/core/realtime/notification/index.js +4 -5
  109. package/dist/lib/core/realtime/notification/server.d.ts +17 -0
  110. package/{lib → dist/lib}/core/realtime/notification/server.js +8 -10
  111. package/dist/lib/core/realtime/notification/user.d.ts +29 -0
  112. package/dist/lib/core/realtime/notification/user.js +66 -0
  113. package/dist/lib/core/realtime/notifier.d.ts +171 -0
  114. package/dist/lib/core/realtime/notifier.js +405 -0
  115. package/dist/lib/core/security/index.d.ts +14 -0
  116. package/{lib → dist/lib}/core/security/index.js +15 -19
  117. package/dist/lib/core/security/roleRepository.d.ts +143 -0
  118. package/dist/lib/core/security/roleRepository.js +445 -0
  119. package/dist/lib/core/security/securityLoader.d.ts +24 -0
  120. package/dist/lib/core/security/securityLoader.js +125 -0
  121. package/{lib → dist/lib}/core/security/tokenRepository.js +1 -1
  122. package/dist/lib/core/security/userRepository.d.ts +81 -0
  123. package/dist/lib/core/security/userRepository.js +346 -0
  124. package/dist/lib/core/shared/abstractManifest.d.ts +27 -0
  125. package/dist/lib/core/shared/abstractManifest.js +85 -0
  126. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +7 -0
  127. package/dist/lib/core/shared/sdk/impersonatedSdk.js +80 -0
  128. package/{lib → dist/lib}/core/shared/store.d.ts +2 -2
  129. package/dist/lib/core/statistics/statistics.d.ts +94 -0
  130. package/dist/lib/core/statistics/statistics.js +287 -0
  131. package/dist/lib/core/storage/clientAdapter.d.ts +62 -0
  132. package/dist/lib/core/storage/clientAdapter.js +756 -0
  133. package/dist/lib/core/storage/storageEngine.d.ts +13 -0
  134. package/dist/lib/core/storage/storageEngine.js +52 -0
  135. package/dist/lib/core/validation/baseType.d.ts +35 -0
  136. package/dist/lib/core/validation/baseType.js +70 -0
  137. package/dist/lib/core/validation/types/anything.d.ts +10 -0
  138. package/{lib → dist/lib}/core/validation/types/anything.js +7 -10
  139. package/dist/lib/core/validation/types/boolean.d.ts +16 -0
  140. package/{lib → dist/lib}/core/validation/types/boolean.js +18 -23
  141. package/dist/lib/core/validation/types/date.d.ts +17 -0
  142. package/dist/lib/core/validation/types/date.js +215 -0
  143. package/dist/lib/core/validation/types/email.d.ts +17 -0
  144. package/dist/lib/core/validation/types/email.js +80 -0
  145. package/dist/lib/core/validation/types/enum.d.ts +17 -0
  146. package/dist/lib/core/validation/types/enum.js +70 -0
  147. package/dist/lib/core/validation/types/geoPoint.d.ts +17 -0
  148. package/{lib → dist/lib}/core/validation/types/geoPoint.js +19 -24
  149. package/dist/lib/core/validation/types/geoShape.d.ts +31 -0
  150. package/dist/lib/core/validation/types/geoShape.js +280 -0
  151. package/dist/lib/core/validation/types/integer.d.ts +7 -0
  152. package/{lib → dist/lib}/core/validation/types/integer.js +21 -27
  153. package/dist/lib/core/validation/types/ipAddress.d.ts +17 -0
  154. package/dist/lib/core/validation/types/ipAddress.js +73 -0
  155. package/dist/lib/core/validation/types/numeric.d.ts +17 -0
  156. package/dist/lib/core/validation/types/numeric.js +84 -0
  157. package/dist/lib/core/validation/types/object.d.ts +24 -0
  158. package/dist/lib/core/validation/types/object.js +74 -0
  159. package/dist/lib/core/validation/types/string.d.ts +17 -0
  160. package/dist/lib/core/validation/types/string.js +85 -0
  161. package/dist/lib/core/validation/types/url.d.ts +17 -0
  162. package/dist/lib/core/validation/types/url.js +73 -0
  163. package/dist/lib/core/validation/validation.d.ts +113 -0
  164. package/dist/lib/core/validation/validation.js +692 -0
  165. package/dist/lib/kerror/codes/0-core.json +194 -0
  166. package/dist/lib/kerror/codes/1-services.json +351 -0
  167. package/dist/lib/kerror/codes/2-api.json +195 -0
  168. package/dist/lib/kerror/codes/3-network.json +151 -0
  169. package/dist/lib/kerror/codes/4-plugin.json +498 -0
  170. package/dist/lib/kerror/codes/5-validation.json +158 -0
  171. package/dist/lib/kerror/codes/6-protocol.json +28 -0
  172. package/dist/lib/kerror/codes/7-security.json +283 -0
  173. package/dist/lib/kerror/codes/8-cluster.json +16 -0
  174. package/dist/lib/kerror/codes/index.d.ts +24 -0
  175. package/dist/lib/kerror/codes/index.js +140 -0
  176. package/{lib → dist/lib}/kerror/index.d.ts +5 -5
  177. package/{lib → dist/lib}/kuzzle/Logger.d.ts +6 -0
  178. package/{lib → dist/lib}/kuzzle/Logger.js +26 -5
  179. package/dist/lib/kuzzle/dumpGenerator.d.ts +14 -0
  180. package/dist/lib/kuzzle/dumpGenerator.js +180 -0
  181. package/dist/lib/kuzzle/event/pipeRunner.d.ts +30 -0
  182. package/dist/lib/kuzzle/event/pipeRunner.js +119 -0
  183. package/dist/lib/kuzzle/event/waterfall.d.ts +2 -0
  184. package/dist/lib/kuzzle/event/waterfall.js +90 -0
  185. package/dist/lib/kuzzle/internalIndexHandler.d.ts +186 -0
  186. package/dist/lib/kuzzle/internalIndexHandler.js +174 -0
  187. package/{lib → dist/lib}/kuzzle/kuzzle.d.ts +6 -7
  188. package/{lib → dist/lib}/kuzzle/kuzzle.js +5 -2
  189. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +20 -0
  190. package/{lib → dist/lib}/kuzzle/kuzzleStateEnum.js +5 -8
  191. package/dist/lib/kuzzle/vault.d.ts +2 -0
  192. package/dist/lib/kuzzle/vault.js +63 -0
  193. package/dist/lib/model/security/rights.d.ts +8 -0
  194. package/{lib → dist/lib}/model/security/rights.js +4 -8
  195. package/{lib → dist/lib}/model/security/role.d.ts +1 -1
  196. package/{lib → dist/lib}/model/security/user.d.ts +1 -0
  197. package/dist/lib/model/storage/apiKey.d.ts +49 -0
  198. package/dist/lib/model/storage/apiKey.js +126 -0
  199. package/dist/lib/model/storage/baseModel.d.ts +100 -0
  200. package/dist/lib/model/storage/baseModel.js +211 -0
  201. package/dist/lib/service/cache/redis.d.ts +74 -0
  202. package/dist/lib/service/cache/redis.js +237 -0
  203. package/dist/lib/service/service.d.ts +30 -0
  204. package/dist/lib/service/service.js +74 -0
  205. package/{lib → dist/lib}/service/storage/7/elasticsearch.d.ts +2 -2
  206. package/{lib → dist/lib}/service/storage/7/elasticsearch.js +23 -25
  207. package/dist/lib/service/storage/7/esWrapper.d.ts +19 -0
  208. package/dist/lib/service/storage/7/esWrapper.js +245 -0
  209. package/{lib → dist/lib}/service/storage/8/elasticsearch.js +23 -25
  210. package/dist/lib/service/storage/8/esWrapper.d.ts +19 -0
  211. package/dist/lib/service/storage/8/esWrapper.js +245 -0
  212. package/{lib → dist/lib}/types/Plugin.d.ts +1 -1
  213. package/{lib/types → dist/lib/types/controllers}/Controller.d.ts +2 -2
  214. package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.d.ts +1 -1
  215. package/dist/lib/types/controllers/adminControlller.type.d.ts +5 -0
  216. package/dist/lib/types/controllers/adminControlller.type.js +3 -0
  217. package/dist/lib/types/controllers/authController.type.d.ts +5 -0
  218. package/dist/lib/types/controllers/authController.type.js +3 -0
  219. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -0
  220. package/dist/lib/types/core/auth/formatProcessing.type.js +3 -0
  221. package/{lib → dist/lib}/types/index.d.ts +3 -3
  222. package/{lib → dist/lib}/types/index.js +3 -3
  223. package/dist/lib/util/assertType.d.ts +41 -0
  224. package/{lib → dist/lib}/util/assertType.js +38 -56
  225. package/dist/lib/util/asyncStore.d.ts +38 -0
  226. package/dist/lib/util/asyncStore.js +70 -0
  227. package/dist/lib/util/bytes.d.ts +2 -0
  228. package/dist/lib/util/bytes.js +33 -0
  229. package/dist/lib/util/debug.d.ts +2 -0
  230. package/{lib → dist/lib}/util/debug.js +15 -23
  231. package/dist/lib/util/deprecate.d.ts +1 -0
  232. package/dist/lib/util/deprecate.js +64 -0
  233. package/dist/lib/util/didYouMean.d.ts +2 -0
  234. package/{lib → dist/lib}/util/didYouMean.js +9 -15
  235. package/dist/lib/util/extractFields.d.ts +17 -0
  236. package/{lib → dist/lib}/util/extractFields.js +18 -32
  237. package/dist/lib/util/memoize.d.ts +7 -0
  238. package/{lib → dist/lib}/util/memoize.js +14 -21
  239. package/dist/lib/util/promback.d.ts +13 -0
  240. package/dist/lib/util/promback.js +60 -0
  241. package/dist/lib/util/requestAssertions.d.ts +10 -0
  242. package/dist/lib/util/requestAssertions.js +143 -0
  243. package/dist/lib/util/safeObject.d.ts +3 -0
  244. package/{lib → dist/lib}/util/safeObject.js +7 -13
  245. package/dist/lib/util/stackTrace.d.ts +19 -0
  246. package/{lib → dist/lib}/util/stackTrace.js +35 -41
  247. package/dist/lib/util/wildcard.d.ts +1 -0
  248. package/{lib → dist/lib}/util/wildcard.js +21 -30
  249. package/dist/package.json +119 -0
  250. package/package.json +44 -58
  251. package/bin/start-kuzzle-server +0 -126
  252. package/check-node-version.js +0 -17
  253. package/lib/api/controllers/adminController.js +0 -229
  254. package/lib/api/controllers/bulkController.js +0 -210
  255. package/lib/api/controllers/collectionController.js +0 -502
  256. package/lib/api/controllers/documentController.js +0 -1156
  257. package/lib/api/controllers/indexController.js +0 -179
  258. package/lib/api/controllers/memoryStorageController.js +0 -1023
  259. package/lib/api/controllers/realtimeController.js +0 -155
  260. package/lib/api/controllers/securityController.js +0 -1571
  261. package/lib/api/controllers/serverController.js +0 -381
  262. package/lib/api/documentExtractor.js +0 -309
  263. package/lib/api/funnel.js +0 -1143
  264. package/lib/api/httpRoutes.js +0 -1547
  265. package/lib/api/rateLimiter.js +0 -87
  266. package/lib/cluster/command.js +0 -284
  267. package/lib/cluster/node.js +0 -1203
  268. package/lib/cluster/publisher.js +0 -386
  269. package/lib/cluster/subscriber.js +0 -776
  270. package/lib/cluster/workers/IDCardRenewer.js +0 -144
  271. package/lib/config/index.js +0 -351
  272. package/lib/config/sdkCompatibility.json +0 -9
  273. package/lib/core/auth/formatProcessing.js +0 -66
  274. package/lib/core/auth/passportWrapper.js +0 -126
  275. package/lib/core/cache/cacheEngine.js +0 -278
  276. package/lib/core/network/accessLogger.js +0 -322
  277. package/lib/core/network/context.js +0 -80
  278. package/lib/core/network/entryPoint.js +0 -358
  279. package/lib/core/network/httpRouter/index.js +0 -316
  280. package/lib/core/network/httpRouter/routeHandler.js +0 -111
  281. package/lib/core/network/httpRouter/routePart.js +0 -147
  282. package/lib/core/network/protocols/httpMessage.js +0 -69
  283. package/lib/core/network/protocols/httpwsProtocol.js +0 -1254
  284. package/lib/core/network/protocols/internalProtocol.js +0 -109
  285. package/lib/core/network/protocols/mqttProtocol.js +0 -291
  286. package/lib/core/network/protocols/protocol.js +0 -102
  287. package/lib/core/network/router.js +0 -255
  288. package/lib/core/plugin/plugin.js +0 -436
  289. package/lib/core/plugin/pluginRepository.js +0 -132
  290. package/lib/core/plugin/pluginsManager.js +0 -1244
  291. package/lib/core/realtime/notification/document.js +0 -108
  292. package/lib/core/realtime/notification/user.js +0 -70
  293. package/lib/core/realtime/notifier.js +0 -541
  294. package/lib/core/security/README.md +0 -223
  295. package/lib/core/security/roleRepository.js +0 -569
  296. package/lib/core/security/securityLoader.js +0 -174
  297. package/lib/core/security/userRepository.js +0 -446
  298. package/lib/core/shared/README.md +0 -3
  299. package/lib/core/shared/abstractManifest.js +0 -102
  300. package/lib/core/shared/sdk/impersonatedSdk.js +0 -94
  301. package/lib/core/statistics/index.js +0 -24
  302. package/lib/core/statistics/statistics.js +0 -373
  303. package/lib/core/storage/clientAdapter.js +0 -1045
  304. package/lib/core/storage/storageEngine.js +0 -63
  305. package/lib/core/validation/baseType.js +0 -80
  306. package/lib/core/validation/index.js +0 -24
  307. package/lib/core/validation/types/date.js +0 -284
  308. package/lib/core/validation/types/email.js +0 -92
  309. package/lib/core/validation/types/enum.js +0 -100
  310. package/lib/core/validation/types/geoShape.js +0 -370
  311. package/lib/core/validation/types/ipAddress.js +0 -83
  312. package/lib/core/validation/types/numeric.js +0 -108
  313. package/lib/core/validation/types/object.js +0 -88
  314. package/lib/core/validation/types/string.js +0 -110
  315. package/lib/core/validation/types/url.js +0 -83
  316. package/lib/core/validation/validation.js +0 -1180
  317. package/lib/kerror/codes/0-core.json +0 -194
  318. package/lib/kerror/codes/1-services.json +0 -351
  319. package/lib/kerror/codes/2-api.json +0 -195
  320. package/lib/kerror/codes/3-network.json +0 -151
  321. package/lib/kerror/codes/4-plugin.json +0 -498
  322. package/lib/kerror/codes/5-validation.json +0 -158
  323. package/lib/kerror/codes/6-protocol.json +0 -28
  324. package/lib/kerror/codes/7-security.json +0 -283
  325. package/lib/kerror/codes/8-cluster.json +0 -16
  326. package/lib/kerror/codes/index.js +0 -208
  327. package/lib/kuzzle/dumpGenerator.js +0 -259
  328. package/lib/kuzzle/event/pipeRunner.js +0 -144
  329. package/lib/kuzzle/event/waterfall.js +0 -101
  330. package/lib/kuzzle/internalIndexHandler.js +0 -234
  331. package/lib/kuzzle/vault.js +0 -89
  332. package/lib/model/storage/apiKey.js +0 -158
  333. package/lib/model/storage/baseModel.js +0 -275
  334. package/lib/service/cache/redis.js +0 -282
  335. package/lib/service/service.js +0 -84
  336. package/lib/service/storage/7/esWrapper.js +0 -303
  337. package/lib/service/storage/8/esWrapper.js +0 -303
  338. package/lib/util/asyncStore.js +0 -112
  339. package/lib/util/bytes.js +0 -36
  340. package/lib/util/deprecate.js +0 -82
  341. package/lib/util/promback.js +0 -66
  342. package/lib/util/readYamlFile.d.ts +0 -2
  343. package/lib/util/readYamlFile.js +0 -10
  344. package/lib/util/requestAssertions.js +0 -157
  345. /package/{index.d.ts → dist/index.d.ts} +0 -0
  346. /package/{index.js → dist/index.js} +0 -0
  347. /package/{lib → dist/lib}/api/controllers/baseController.d.ts +0 -0
  348. /package/{lib → dist/lib}/api/controllers/baseController.js +0 -0
  349. /package/{lib → dist/lib}/api/controllers/debugController.d.ts +0 -0
  350. /package/{lib → dist/lib}/api/controllers/debugController.js +0 -0
  351. /package/{lib → dist/lib}/api/openapi/OpenApiManager.d.ts +0 -0
  352. /package/{lib → dist/lib}/api/openapi/OpenApiManager.js +0 -0
  353. /package/{lib → dist/lib}/api/openapi/index.d.ts +0 -0
  354. /package/{lib → dist/lib}/api/openapi/index.js +0 -0
  355. /package/{lib → dist/lib}/api/openapi/openApiGenerator.d.ts +0 -0
  356. /package/{lib → dist/lib}/api/openapi/openApiGenerator.js +0 -0
  357. /package/{lib → dist/lib}/api/request/index.d.ts +0 -0
  358. /package/{lib → dist/lib}/api/request/index.js +0 -0
  359. /package/{lib → dist/lib}/api/request/kuzzleRequest.js +0 -0
  360. /package/{lib → dist/lib}/api/request/requestContext.js +0 -0
  361. /package/{lib → dist/lib}/api/request/requestInput.d.ts +0 -0
  362. /package/{lib → dist/lib}/api/request/requestInput.js +0 -0
  363. /package/{lib → dist/lib}/api/request/requestResponse.d.ts +0 -0
  364. /package/{lib → dist/lib}/api/request/requestResponse.js +0 -0
  365. /package/{lib → dist/lib}/cluster/idCardHandler.d.ts +0 -0
  366. /package/{lib → dist/lib}/cluster/idCardHandler.js +0 -0
  367. /package/{lib → dist/lib}/cluster/protobuf/command.proto +0 -0
  368. /package/{lib → dist/lib}/cluster/protobuf/sync.proto +0 -0
  369. /package/{lib → dist/lib}/cluster/state.d.ts +0 -0
  370. /package/{lib → dist/lib}/cluster/state.js +0 -0
  371. /package/{lib → dist/lib}/config/default.config.d.ts +0 -0
  372. /package/{lib → dist/lib}/config/default.config.js +0 -0
  373. /package/{lib → dist/lib}/config/documentEventAliases.js +0 -0
  374. /package/{lib → dist/lib}/core/auth/tokenManager.d.ts +0 -0
  375. /package/{lib → dist/lib}/core/auth/tokenManager.js +0 -0
  376. /package/{lib → dist/lib}/core/backend/applicationManager.d.ts +0 -0
  377. /package/{lib → dist/lib}/core/backend/applicationManager.js +0 -0
  378. /package/{lib → dist/lib}/core/backend/backend.d.ts +0 -0
  379. /package/{lib → dist/lib}/core/backend/backend.js +0 -0
  380. /package/{lib → dist/lib}/core/backend/backendCluster.d.ts +0 -0
  381. /package/{lib → dist/lib}/core/backend/backendCluster.js +0 -0
  382. /package/{lib → dist/lib}/core/backend/backendConfig.d.ts +0 -0
  383. /package/{lib → dist/lib}/core/backend/backendController.d.ts +0 -0
  384. /package/{lib → dist/lib}/core/backend/backendController.js +0 -0
  385. /package/{lib → dist/lib}/core/backend/backendErrors.d.ts +0 -0
  386. /package/{lib → dist/lib}/core/backend/backendHook.d.ts +0 -0
  387. /package/{lib → dist/lib}/core/backend/backendHook.js +0 -0
  388. /package/{lib → dist/lib}/core/backend/backendImport.d.ts +0 -0
  389. /package/{lib → dist/lib}/core/backend/backendImport.js +0 -0
  390. /package/{lib → dist/lib}/core/backend/backendOpenApi.d.ts +0 -0
  391. /package/{lib → dist/lib}/core/backend/backendOpenApi.js +0 -0
  392. /package/{lib → dist/lib}/core/backend/backendPipe.d.ts +0 -0
  393. /package/{lib → dist/lib}/core/backend/backendPipe.js +0 -0
  394. /package/{lib → dist/lib}/core/backend/backendPlugin.d.ts +0 -0
  395. /package/{lib → dist/lib}/core/backend/backendPlugin.js +0 -0
  396. /package/{lib → dist/lib}/core/backend/backendStorage.d.ts +0 -0
  397. /package/{lib → dist/lib}/core/backend/backendStorage.js +0 -0
  398. /package/{lib → dist/lib}/core/backend/backendSubscription.d.ts +0 -0
  399. /package/{lib → dist/lib}/core/backend/backendSubscription.js +0 -0
  400. /package/{lib → dist/lib}/core/backend/backendVault.d.ts +0 -0
  401. /package/{lib → dist/lib}/core/backend/backendVault.js +0 -0
  402. /package/{lib → dist/lib}/core/backend/index.d.ts +0 -0
  403. /package/{lib → dist/lib}/core/backend/index.js +0 -0
  404. /package/{lib → dist/lib}/core/backend/internalLogger.d.ts +0 -0
  405. /package/{lib → dist/lib}/core/backend/internalLogger.js +0 -0
  406. /package/{lib → dist/lib}/core/cache/cacheDbEnum.d.ts +0 -0
  407. /package/{lib → dist/lib}/core/cache/cacheDbEnum.js +0 -0
  408. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.d.ts +0 -0
  409. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.js +0 -0
  410. /package/{lib → dist/lib}/core/plugin/pluginContext.d.ts +0 -0
  411. /package/{lib → dist/lib}/core/realtime/channel.d.ts +0 -0
  412. /package/{lib → dist/lib}/core/realtime/channel.js +0 -0
  413. /package/{lib → dist/lib}/core/realtime/connectionRooms.d.ts +0 -0
  414. /package/{lib → dist/lib}/core/realtime/connectionRooms.js +0 -0
  415. /package/{lib → dist/lib}/core/realtime/hotelClerk.d.ts +0 -0
  416. /package/{lib → dist/lib}/core/realtime/hotelClerk.js +0 -0
  417. /package/{lib → dist/lib}/core/realtime/room.d.ts +0 -0
  418. /package/{lib → dist/lib}/core/realtime/room.js +0 -0
  419. /package/{lib → dist/lib}/core/realtime/subscription.d.ts +0 -0
  420. /package/{lib → dist/lib}/core/realtime/subscription.js +0 -0
  421. /package/{lib → dist/lib}/core/security/profileRepository.d.ts +0 -0
  422. /package/{lib → dist/lib}/core/security/profileRepository.js +0 -0
  423. /package/{lib → dist/lib}/core/security/tokenRepository.d.ts +0 -0
  424. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.d.ts +0 -0
  425. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.js +0 -0
  426. /package/{lib → dist/lib}/core/shared/ObjectRepository.d.ts +0 -0
  427. /package/{lib → dist/lib}/core/shared/ObjectRepository.js +0 -0
  428. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.d.ts +0 -0
  429. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.js +0 -0
  430. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.d.ts +0 -0
  431. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.js +0 -0
  432. /package/{lib → dist/lib}/core/shared/store.js +0 -0
  433. /package/{lib → dist/lib}/core/storage/indexCache.d.ts +0 -0
  434. /package/{lib → dist/lib}/core/storage/indexCache.js +0 -0
  435. /package/{lib → dist/lib}/core/storage/storeScopeEnum.d.ts +0 -0
  436. /package/{lib → dist/lib}/core/storage/storeScopeEnum.js +0 -0
  437. /package/{lib → dist/lib}/kerror/errors/badRequestError.d.ts +0 -0
  438. /package/{lib → dist/lib}/kerror/errors/badRequestError.js +0 -0
  439. /package/{lib → dist/lib}/kerror/errors/externalServiceError.d.ts +0 -0
  440. /package/{lib → dist/lib}/kerror/errors/externalServiceError.js +0 -0
  441. /package/{lib → dist/lib}/kerror/errors/forbiddenError.d.ts +0 -0
  442. /package/{lib → dist/lib}/kerror/errors/forbiddenError.js +0 -0
  443. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.d.ts +0 -0
  444. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.js +0 -0
  445. /package/{lib → dist/lib}/kerror/errors/index.d.ts +0 -0
  446. /package/{lib → dist/lib}/kerror/errors/index.js +0 -0
  447. /package/{lib → dist/lib}/kerror/errors/internalError.d.ts +0 -0
  448. /package/{lib → dist/lib}/kerror/errors/internalError.js +0 -0
  449. /package/{lib → dist/lib}/kerror/errors/kuzzleError.d.ts +0 -0
  450. /package/{lib → dist/lib}/kerror/errors/kuzzleError.js +0 -0
  451. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.d.ts +0 -0
  452. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.js +0 -0
  453. /package/{lib → dist/lib}/kerror/errors/notFoundError.d.ts +0 -0
  454. /package/{lib → dist/lib}/kerror/errors/notFoundError.js +0 -0
  455. /package/{lib → dist/lib}/kerror/errors/partialError.d.ts +0 -0
  456. /package/{lib → dist/lib}/kerror/errors/partialError.js +0 -0
  457. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.d.ts +0 -0
  458. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.js +0 -0
  459. /package/{lib → dist/lib}/kerror/errors/preconditionError.d.ts +0 -0
  460. /package/{lib → dist/lib}/kerror/errors/preconditionError.js +0 -0
  461. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.d.ts +0 -0
  462. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.js +0 -0
  463. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.d.ts +0 -0
  464. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.js +0 -0
  465. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.d.ts +0 -0
  466. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.js +0 -0
  467. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.d.ts +0 -0
  468. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.js +0 -0
  469. /package/{lib → dist/lib}/kerror/index.js +0 -0
  470. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.d.ts +0 -0
  471. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.js +0 -0
  472. /package/{lib → dist/lib}/kuzzle/index.d.ts +0 -0
  473. /package/{lib → dist/lib}/kuzzle/index.js +0 -0
  474. /package/{lib → dist/lib}/model/security/profile.d.ts +0 -0
  475. /package/{lib → dist/lib}/model/security/profile.js +0 -0
  476. /package/{lib → dist/lib}/model/security/role.js +0 -0
  477. /package/{lib → dist/lib}/model/security/token.d.ts +0 -0
  478. /package/{lib → dist/lib}/model/security/token.js +0 -0
  479. /package/{lib → dist/lib}/model/security/user.js +0 -0
  480. /package/{lib → dist/lib}/service/storage/8/elasticsearch.d.ts +0 -0
  481. /package/{lib → dist/lib}/service/storage/Elasticsearch.d.ts +0 -0
  482. /package/{lib → dist/lib}/service/storage/Elasticsearch.js +0 -0
  483. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.d.ts +0 -0
  484. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.js +0 -0
  485. /package/{lib → dist/lib}/types/ClientConnection.d.ts +0 -0
  486. /package/{lib → dist/lib}/types/ClientConnection.js +0 -0
  487. /package/{lib → dist/lib}/types/Deprecation.d.ts +0 -0
  488. /package/{lib → dist/lib}/types/Deprecation.js +0 -0
  489. /package/{lib → dist/lib}/types/EventHandler.d.ts +0 -0
  490. /package/{lib → dist/lib}/types/EventHandler.js +0 -0
  491. /package/{lib → dist/lib}/types/Global.d.ts +0 -0
  492. /package/{lib → dist/lib}/types/Global.js +0 -0
  493. /package/{lib → dist/lib}/types/HttpMessage.d.ts +0 -0
  494. /package/{lib → dist/lib}/types/HttpMessage.js +0 -0
  495. /package/{lib → dist/lib}/types/HttpStream.d.ts +0 -0
  496. /package/{lib → dist/lib}/types/HttpStream.js +0 -0
  497. /package/{lib → dist/lib}/types/Kuzzle.d.ts +0 -0
  498. /package/{lib → dist/lib}/types/Kuzzle.js +0 -0
  499. /package/{lib → dist/lib}/types/KuzzleDocument.d.ts +0 -0
  500. /package/{lib → dist/lib}/types/KuzzleDocument.js +0 -0
  501. /package/{lib → dist/lib}/types/OpenApiDefinition.d.ts +0 -0
  502. /package/{lib → dist/lib}/types/OpenApiDefinition.js +0 -0
  503. /package/{lib → dist/lib}/types/PasswordPolicy.d.ts +0 -0
  504. /package/{lib → dist/lib}/types/PasswordPolicy.js +0 -0
  505. /package/{lib → dist/lib}/types/Plugin.js +0 -0
  506. /package/{lib → dist/lib}/types/PluginManifest.d.ts +0 -0
  507. /package/{lib → dist/lib}/types/PluginManifest.js +0 -0
  508. /package/{lib → dist/lib}/types/Policy.d.ts +0 -0
  509. /package/{lib → dist/lib}/types/Policy.js +0 -0
  510. /package/{lib → dist/lib}/types/PolicyRestrictions.d.ts +0 -0
  511. /package/{lib → dist/lib}/types/PolicyRestrictions.js +0 -0
  512. /package/{lib → dist/lib}/types/ProfileDefinition.d.ts +0 -0
  513. /package/{lib → dist/lib}/types/ProfileDefinition.js +0 -0
  514. /package/{lib → dist/lib}/types/RoleDefinition.d.ts +0 -0
  515. /package/{lib → dist/lib}/types/RoleDefinition.js +0 -0
  516. /package/{lib → dist/lib}/types/StrategyDefinition.d.ts +0 -0
  517. /package/{lib → dist/lib}/types/StrategyDefinition.js +0 -0
  518. /package/{lib → dist/lib}/types/Target.d.ts +0 -0
  519. /package/{lib → dist/lib}/types/Target.js +0 -0
  520. /package/{lib → dist/lib}/types/Token.d.ts +0 -0
  521. /package/{lib → dist/lib}/types/Token.js +0 -0
  522. /package/{lib → dist/lib}/types/User.d.ts +0 -0
  523. /package/{lib → dist/lib}/types/User.js +0 -0
  524. /package/{lib → dist/lib}/types/config/DumpConfiguration.d.ts +0 -0
  525. /package/{lib → dist/lib}/types/config/DumpConfiguration.js +0 -0
  526. /package/{lib → dist/lib}/types/config/HttpConfiguration.d.ts +0 -0
  527. /package/{lib → dist/lib}/types/config/HttpConfiguration.js +0 -0
  528. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.d.ts +0 -0
  529. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.js +0 -0
  530. /package/{lib → dist/lib}/types/config/LimitsConfiguration.d.ts +0 -0
  531. /package/{lib → dist/lib}/types/config/LimitsConfiguration.js +0 -0
  532. /package/{lib → dist/lib}/types/config/PluginsConfiguration.d.ts +0 -0
  533. /package/{lib → dist/lib}/types/config/PluginsConfiguration.js +0 -0
  534. /package/{lib → dist/lib}/types/config/SecurityConfiguration.d.ts +0 -0
  535. /package/{lib → dist/lib}/types/config/SecurityConfiguration.js +0 -0
  536. /package/{lib → dist/lib}/types/config/ServerConfiguration.d.ts +0 -0
  537. /package/{lib → dist/lib}/types/config/ServerConfiguration.js +0 -0
  538. /package/{lib → dist/lib}/types/config/ServicesConfiguration.d.ts +0 -0
  539. /package/{lib → dist/lib}/types/config/ServicesConfiguration.js +0 -0
  540. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +0 -0
  541. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.js +0 -0
  542. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +0 -0
  543. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.js +0 -0
  544. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +0 -0
  545. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.js +0 -0
  546. /package/{lib/types → dist/lib/types/controllers}/Controller.js +0 -0
  547. /package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.js +0 -0
  548. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.d.ts +0 -0
  549. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.js +0 -0
  550. /package/{lib → dist/lib}/types/errors/ErrorDefinition.d.ts +0 -0
  551. /package/{lib → dist/lib}/types/errors/ErrorDefinition.js +0 -0
  552. /package/{lib → dist/lib}/types/errors/ErrorDomains.d.ts +0 -0
  553. /package/{lib → dist/lib}/types/errors/ErrorDomains.js +0 -0
  554. /package/{lib → dist/lib}/types/events/EventGenericDocument.d.ts +0 -0
  555. /package/{lib → dist/lib}/types/events/EventGenericDocument.js +0 -0
  556. /package/{lib → dist/lib}/types/events/EventProtocol.d.ts +0 -0
  557. /package/{lib → dist/lib}/types/events/EventProtocol.js +0 -0
  558. /package/{lib → dist/lib}/types/realtime/RealtimeScope.d.ts +0 -0
  559. /package/{lib → dist/lib}/types/realtime/RealtimeScope.js +0 -0
  560. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.d.ts +0 -0
  561. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.js +0 -0
  562. /package/{lib → dist/lib}/types/realtime/RoomList.d.ts +0 -0
  563. /package/{lib → dist/lib}/types/realtime/RoomList.js +0 -0
  564. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.d.ts +0 -0
  565. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.js +0 -0
  566. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.d.ts +0 -0
  567. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.js +0 -0
  568. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.d.ts +0 -0
  569. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.js +0 -0
  570. /package/{lib → dist/lib}/util/Inflector.d.ts +0 -0
  571. /package/{lib → dist/lib}/util/Inflector.js +0 -0
  572. /package/{lib → dist/lib}/util/array.d.ts +0 -0
  573. /package/{lib → dist/lib}/util/array.js +0 -0
  574. /package/{lib → dist/lib}/util/async.d.ts +0 -0
  575. /package/{lib → dist/lib}/util/async.js +0 -0
  576. /package/{lib → dist/lib}/util/bufferedPassThrough.d.ts +0 -0
  577. /package/{lib → dist/lib}/util/bufferedPassThrough.js +0 -0
  578. /package/{lib → dist/lib}/util/crypto.d.ts +0 -0
  579. /package/{lib → dist/lib}/util/crypto.js +0 -0
  580. /package/{lib → dist/lib}/util/dump-collection.d.ts +0 -0
  581. /package/{lib → dist/lib}/util/dump-collection.js +0 -0
  582. /package/{lib → dist/lib}/util/esRequest.d.ts +0 -0
  583. /package/{lib → dist/lib}/util/esRequest.js +0 -0
  584. /package/{lib → dist/lib}/util/koncordeCompat.d.ts +0 -0
  585. /package/{lib → dist/lib}/util/koncordeCompat.js +0 -0
  586. /package/{lib → dist/lib}/util/mutex.d.ts +0 -0
  587. /package/{lib → dist/lib}/util/mutex.js +0 -0
  588. /package/{lib → dist/lib}/util/name-generator.d.ts +0 -0
  589. /package/{lib → dist/lib}/util/name-generator.js +0 -0
  590. /package/{lib → dist/lib}/util/time.d.ts +0 -0
  591. /package/{lib → dist/lib}/util/time.js +0 -0
@@ -1,1156 +0,0 @@
1
- /*
2
- * Kuzzle, a backend software, self-hostable and ready to use
3
- * to power modern apps
4
- *
5
- * Copyright 2015-2022 Kuzzle
6
- * mailto: support AT kuzzle.io
7
- * website: http://kuzzle.io
8
- *
9
- * Licensed under the Apache License, Version 2.0 (the "License");
10
- * you may not use this file except in compliance with the License.
11
- * You may obtain a copy of the License at
12
- *
13
- * https://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS,
17
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- * See the License for the specific language governing permissions and
19
- * limitations under the License.
20
- */
21
-
22
- "use strict";
23
-
24
- const kerror = require("../../kerror");
25
- const { NativeController } = require("./baseController");
26
- const actionEnum = require("../../core/realtime/actionEnum");
27
- const {
28
- assertHasBody,
29
- assertHasIndexAndCollection,
30
- } = require("../../util/requestAssertions");
31
- const extractFields = require("../../util/extractFields");
32
- const { dumpCollectionDocuments } = require("../../util/dump-collection");
33
- /**
34
- * @description actions available on the document Controller (used by generic events)
35
- * @key actions
36
- * @value event type (empty for actions that are not linked to events)
37
- */
38
- const actions = {
39
- count: "",
40
- create: "write",
41
- createOrReplace: "write",
42
- delete: "delete",
43
- deleteByQuery: "delete",
44
- deleteFields: "update",
45
- exists: "get",
46
- export: "get",
47
- get: "get",
48
- mCreate: "write",
49
- mCreateOrReplace: "write",
50
- mDelete: "delete",
51
- mExists: "get",
52
- mGet: "get",
53
- mReplace: "write",
54
- mUpdate: "update",
55
- mUpsert: "update",
56
- replace: "write",
57
- scroll: "",
58
- search: "get",
59
- update: "update",
60
- updateByQuery: "update",
61
- upsert: "update",
62
- validate: "",
63
- };
64
-
65
- /**
66
- * @class DocumentController
67
- */
68
- class DocumentController extends NativeController {
69
- constructor() {
70
- super(Object.keys(actions));
71
- }
72
-
73
- /**
74
- * @returns {Record<string, unknown>}
75
- */
76
- static get actions() {
77
- return actions;
78
- }
79
-
80
- /**
81
- * @param {Request} request
82
- * @returns {Promise<Object>}
83
- */
84
- async search(request) {
85
- const { from, size, scrollTTL, searchBody } = request.getSearchParams();
86
- const index = request.getIndex({ required: false });
87
- const collection = request.getCollection({ required: false });
88
- const targets = request.getArray("targets", []);
89
- const lang = request.getLangParam();
90
-
91
- if (!index && !collection && (!targets || targets.length === 0)) {
92
- throw kerror.get(
93
- "api",
94
- "assert",
95
- "missing_argument",
96
- "index, collection or targets",
97
- );
98
- }
99
-
100
- if (
101
- index &&
102
- collection &&
103
- (hasMultiTargets(index) || hasMultiTargets(collection))
104
- ) {
105
- throw kerror.get(
106
- "services",
107
- "storage",
108
- "invalid_multi_index_collection_usage",
109
- );
110
- }
111
-
112
- if (targets.length > 0) {
113
- // Index and Collections from a target should not contains any characters for multi targetting or _all
114
- // Otherwise it might be possible to bypass some checks and access data that should be accessed
115
- // We should also verify that each target has an index and collections specified before further processing
116
- this.assertTargetsAreValid(targets);
117
- }
118
-
119
- this.assertNotExceedMaxFetch(size - from);
120
-
121
- if (lang === "koncorde") {
122
- searchBody.query = await this.translateKoncorde(searchBody.query || {});
123
- }
124
-
125
- let result;
126
- if (targets.length > 0) {
127
- result = await this.ask(
128
- "core:storage:public:document:multiSearch",
129
- targets,
130
- searchBody,
131
- { from, scroll: scrollTTL, size },
132
- );
133
- } else {
134
- if (!index) {
135
- throw kerror.get("api", "assert", "missing_argument", "index");
136
- }
137
-
138
- if (!collection) {
139
- throw kerror.get("api", "assert", "missing_argument", "collection");
140
- }
141
-
142
- result = await this.ask(
143
- "core:storage:public:document:search",
144
- index,
145
- collection,
146
- searchBody,
147
- { from, scroll: scrollTTL, size },
148
- );
149
- }
150
-
151
- return {
152
- aggregations: result.aggregations,
153
- hits: result.hits,
154
- remaining: result.remaining,
155
- scrollId: result.scrollId,
156
- suggest: result.suggest,
157
- total: result.total,
158
- };
159
- }
160
-
161
- /**
162
- * @param {Request} request
163
- * @returns {Promise<Object>}
164
- */
165
- async scroll(request) {
166
- const scrollTTL = request.getScrollTTLParam();
167
- const _scrollId = request.getString("scrollId");
168
-
169
- const result = await this.ask(
170
- "core:storage:public:document:scroll",
171
- _scrollId,
172
- { scrollTTL },
173
- );
174
-
175
- return {
176
- hits: result.hits,
177
- remaining: result.remaining,
178
- scrollId: result.scrollId,
179
- total: result.total,
180
- };
181
- }
182
-
183
- /**
184
- * @param {Request} request
185
- * @returns {Promise<Boolean>}
186
- */
187
- exists(request) {
188
- const id = request.getId();
189
- const { index, collection } = request.getIndexAndCollection();
190
-
191
- return this.ask(
192
- "core:storage:public:document:exist",
193
- index,
194
- collection,
195
- id,
196
- );
197
- }
198
-
199
- /**
200
- * @param {Request} request
201
- */
202
- async mExists(request) {
203
- let ids;
204
- if (
205
- request.input.body &&
206
- request.input.body.ids &&
207
- Object.keys(request.input.body.ids).length
208
- ) {
209
- ids = request.getBodyArray("ids");
210
- } else {
211
- ids = request.getArray("ids");
212
- }
213
- const { index, collection } = request.getIndexAndCollection();
214
-
215
- const strict = request.getBoolean("strict");
216
- this.assertNotExceedMaxFetch(ids.length);
217
-
218
- const { items, errors } = await this.ask(
219
- "core:storage:public:document:mExists",
220
- index,
221
- collection,
222
- ids,
223
- );
224
-
225
- if (strict && errors.length) {
226
- throw kerror.get(
227
- "api",
228
- "process",
229
- "incomplete_multiple_request",
230
- "get",
231
- errors,
232
- );
233
- }
234
-
235
- return {
236
- errors,
237
- successes: items,
238
- };
239
- }
240
-
241
- async export(request) {
242
- const { index, collection } = request.getIndexAndCollection();
243
- const { size, scrollTTL } = request.getSearchParams();
244
- const lang = request.getLangParam();
245
- const format = request.getString("format", "jsonl");
246
- const separator = request.getString("separator", ",");
247
- const query = request.getObjectFromBodyOrArgs("query", {});
248
- const fields = request.getArrayFromBodyOrArgs("fields", []);
249
- const fieldsName = request.getObjectFromBodyOrArgs("fieldsName", {});
250
-
251
- const searchBody = { query };
252
-
253
- if (request.context.connection.protocol !== "http") {
254
- throw kerror.get(
255
- "api",
256
- "assert",
257
- "unsupported_protocol",
258
- request.context.connection.protocol,
259
- "document:export",
260
- );
261
- }
262
-
263
- if (lang === "koncorde") {
264
- searchBody.query = await this.translateKoncorde(searchBody.query || {});
265
- }
266
-
267
- let mimeType = "html/text";
268
-
269
- if (format.toLowerCase() === "csv") {
270
- mimeType = "text/csv";
271
- }
272
-
273
- request.response.configure({
274
- headers: {
275
- "Content-Disposition": `attachment; filename="${index}-${collection}.${format}"`,
276
- "Content-Type": mimeType,
277
- },
278
- });
279
-
280
- return dumpCollectionDocuments(
281
- index,
282
- collection,
283
- searchBody,
284
- format,
285
- fields,
286
- {
287
- fieldsName,
288
- lang,
289
- scroll: scrollTTL || "5s",
290
- separator,
291
- size,
292
- },
293
- );
294
- }
295
-
296
- /**
297
- * @param {Request} request
298
- * @returns {Promise<Object>}
299
- */
300
- async get(request) {
301
- const id = request.getId();
302
- const { index, collection } = request.getIndexAndCollection();
303
-
304
- const result = await this.ask(
305
- "core:storage:public:document:get",
306
- index,
307
- collection,
308
- id,
309
- );
310
-
311
- return {
312
- _id: result._id,
313
- _source: result._source,
314
- _version: result._version,
315
- };
316
- }
317
-
318
- /**
319
- * Get specific documents according to given ids
320
- *
321
- * @param {Request} request
322
- * @returns {Promise<Object>}
323
- */
324
- async mGet(request) {
325
- let ids;
326
- if (
327
- request.input.body &&
328
- request.input.body.ids &&
329
- Object.keys(request.input.body.ids).length
330
- ) {
331
- ids = request.getBodyArray("ids");
332
- } else {
333
- ids = request.getArray("ids");
334
- }
335
- const { index, collection } = request.getIndexAndCollection();
336
- const strict = request.getBoolean("strict");
337
-
338
- this.assertNotExceedMaxFetch(ids.length);
339
-
340
- const { items, errors } = await this.ask(
341
- "core:storage:public:document:mGet",
342
- index,
343
- collection,
344
- ids,
345
- );
346
-
347
- if (strict && errors.length) {
348
- throw kerror.get(
349
- "api",
350
- "process",
351
- "incomplete_multiple_request",
352
- "get",
353
- errors,
354
- );
355
- }
356
-
357
- // @todo next major release: if (successes.length === 0) then throw (no matter strict value)
358
-
359
- return {
360
- errors,
361
- successes: items,
362
- };
363
- }
364
-
365
- /**
366
- * @param {Request} request
367
- * @returns {Promise<Object>}
368
- */
369
- async count(request) {
370
- const { searchBody } = request.getSearchParams();
371
- const { index, collection } = request.getIndexAndCollection();
372
- const lang = request.getLangParam();
373
- if (lang === "koncorde") {
374
- searchBody.query = await this.translateKoncorde(searchBody.query);
375
- }
376
- const count = await this.ask(
377
- "core:storage:public:document:count",
378
- index,
379
- collection,
380
- searchBody,
381
- );
382
-
383
- return { count };
384
- }
385
-
386
- /**
387
- * Create a new document
388
- *
389
- * @param {KuzzleRequest} request
390
- * @returns {Promise<Object>}
391
- */
392
- async create(request) {
393
- const id = request.getId({ ifMissing: "ignore" });
394
- const userId = request.getKuid();
395
- const refresh = request.getRefresh();
396
- const silent = request.getBoolean("silent");
397
- const { index, collection } = request.getIndexAndCollection();
398
-
399
- const validated = await global.kuzzle.validation.validate(request, false);
400
-
401
- // Add metadata
402
- const pipeMetadataResult = await this.pipe(
403
- "generic:document:injectMetadata",
404
- {
405
- metadata: {
406
- author: userId,
407
- createdAt: Date.now(),
408
- updatedAt: null,
409
- updater: null,
410
- },
411
- request,
412
- },
413
- );
414
-
415
- const created = await this.ask(
416
- "core:storage:public:document:create",
417
- index,
418
- collection,
419
- {
420
- ...validated.getBody(),
421
- _kuzzle_info: pipeMetadataResult.metadata,
422
- },
423
- {
424
- id,
425
- injectKuzzleMeta: false,
426
- refresh,
427
- userId,
428
- },
429
- );
430
-
431
- if (!silent) {
432
- await this.ask(
433
- "core:realtime:document:notify",
434
- validated,
435
- actionEnum.CREATE,
436
- created,
437
- );
438
- }
439
-
440
- return created;
441
- }
442
-
443
- /**
444
- * Create the documents provided in the body
445
- * Delegates the notification to create action
446
- *
447
- * @param {Request} request
448
- * @returns {Promise<Object>}
449
- */
450
- mCreate(request) {
451
- return this._mChanges(request, "mCreate", actionEnum.CREATE);
452
- }
453
-
454
- /**
455
- * Create a new document through the persistent layer. If it already exists, update it instead.
456
- *
457
- * @param {Request} request
458
- * @returns {Promise<Object>}
459
- */
460
- async createOrReplace(request) {
461
- const id = request.getId();
462
- const content = request.getBody();
463
- const userId = request.getKuid();
464
- const silent = request.getBoolean("silent");
465
- const refresh = request.getString("refresh", "false");
466
- const { index, collection } = request.getIndexAndCollection();
467
-
468
- const modifiedRequest = await global.kuzzle.validation.validate(
469
- request,
470
- false,
471
- );
472
-
473
- // Add metadata
474
- const pipeMetadataResult = await this.pipe(
475
- "generic:document:injectMetadata",
476
- {
477
- metadata: {
478
- author: userId,
479
- createdAt: Date.now(),
480
- updatedAt: Date.now(),
481
- updater: userId,
482
- },
483
- request,
484
- },
485
- );
486
-
487
- const response = await this.ask(
488
- "core:storage:public:document:createOrReplace",
489
- index,
490
- collection,
491
- id,
492
- {
493
- ...content,
494
- _kuzzle_info: pipeMetadataResult.metadata,
495
- },
496
- {
497
- injectKuzzleMeta: false,
498
- refresh,
499
- userId,
500
- },
501
- );
502
-
503
- if (!silent) {
504
- await this.ask(
505
- "core:realtime:document:notify",
506
- modifiedRequest,
507
- actionEnum.WRITE,
508
- response,
509
- );
510
- }
511
-
512
- return response;
513
- }
514
-
515
- /**
516
- * Create or replace the documents provided in the body
517
- * Delegates the notification to createOrReplace action
518
- *
519
- * @param {Request} request
520
- * @returns {Promise<Object>}
521
- */
522
- mCreateOrReplace(request) {
523
- return this._mChanges(request, "mCreateOrReplace", actionEnum.WRITE);
524
- }
525
-
526
- /**
527
- * Update a document through the persistent layer
528
- *
529
- * @param {Request} request
530
- * @returns {Promise<Object>}
531
- */
532
- async update(request) {
533
- const id = request.getId();
534
- const content = request.getBody();
535
- const userId = request.getKuid();
536
- const silent = request.getBoolean("silent");
537
- const refresh = request.getString("refresh", "false");
538
- const retryOnConflict = request.input.args.retryOnConflict;
539
- const source = request.getBoolean("source");
540
- const { index, collection } = request.getIndexAndCollection();
541
-
542
- const modifiedRequest = await global.kuzzle.validation.validate(
543
- request,
544
- false,
545
- );
546
-
547
- // Add metadata
548
- const pipeMetadataResult = await this.pipe(
549
- "generic:document:injectMetadata",
550
- {
551
- metadata: {
552
- updatedAt: Date.now(),
553
- updater: userId,
554
- },
555
- request,
556
- },
557
- );
558
-
559
- const updatedDocument = await this.ask(
560
- "core:storage:public:document:update",
561
- index,
562
- collection,
563
- id,
564
- {
565
- ...content,
566
- _kuzzle_info: pipeMetadataResult.metadata,
567
- },
568
- {
569
- injectKuzzleMeta: false,
570
- refresh,
571
- retryOnConflict,
572
- userId,
573
- },
574
- );
575
-
576
- const _updatedFields = extractFields(content, {
577
- fieldsToIgnore: ["_kuzzle_info"],
578
- });
579
-
580
- if (!silent) {
581
- await this.ask(
582
- "core:realtime:document:notify",
583
- modifiedRequest,
584
- actionEnum.UPDATE,
585
- {
586
- _id: updatedDocument._id,
587
- _source: updatedDocument._source,
588
- _updatedFields,
589
- },
590
- );
591
- }
592
-
593
- if (source) {
594
- return updatedDocument;
595
- }
596
- return {
597
- _id: updatedDocument._id,
598
- _source: {
599
- ...content,
600
- _kuzzle_info: updatedDocument._source._kuzzle_info,
601
- },
602
- _version: updatedDocument._version,
603
- };
604
- }
605
-
606
- /**
607
- * Applies a partial update to an existing document.
608
- * If the document doesn't already exist, a new document is created.
609
- *
610
- * @param {Request} request
611
- * @returns {Promise<Object>}
612
- */
613
- async upsert(request) {
614
- const id = request.getId();
615
- const content = request.getBodyObject("changes");
616
- const defaultValues = request.getBodyObject("default", {});
617
- const userId = request.getKuid();
618
- const silent = request.getBoolean("silent");
619
- const refresh = request.getString("refresh", "false");
620
- const retryOnConflict = request.input.args.retryOnConflict;
621
- const source = request.getBoolean("source");
622
- const { index, collection } = request.getIndexAndCollection();
623
-
624
- // Add metadata
625
- const pipeMetadataResult = await this.pipe(
626
- "generic:document:injectMetadata",
627
- {
628
- defaultMetadata: {
629
- author: userId,
630
- createdAt: Date.now(),
631
- },
632
- metadata: {
633
- updatedAt: Date.now(),
634
- updater: userId,
635
- },
636
- request,
637
- },
638
- );
639
-
640
- const updatedDocument = await this.ask(
641
- "core:storage:public:document:upsert",
642
- index,
643
- collection,
644
- id,
645
- {
646
- ...content,
647
- _kuzzle_info: pipeMetadataResult.metadata,
648
- },
649
- {
650
- defaultValues: {
651
- ...defaultValues,
652
- _kuzzle_info: pipeMetadataResult.defaultMetadata,
653
- },
654
- injectKuzzleMeta: false,
655
- refresh,
656
- retryOnConflict,
657
- userId,
658
- },
659
- );
660
-
661
- if (!silent && updatedDocument.created) {
662
- await this.ask(
663
- "core:realtime:document:notify",
664
- request,
665
- actionEnum.CREATE,
666
- updatedDocument._source,
667
- );
668
- } else if (!silent) {
669
- const _updatedFields = extractFields(content, {
670
- fieldsToIgnore: ["_kuzzle_info"],
671
- });
672
-
673
- await this.ask(
674
- "core:realtime:document:notify",
675
- request,
676
- actionEnum.UPDATE,
677
- {
678
- _id: updatedDocument._id,
679
- _source: updatedDocument._source,
680
- _updatedFields,
681
- },
682
- );
683
- }
684
-
685
- if (source) {
686
- return updatedDocument;
687
- }
688
-
689
- return {
690
- _id: updatedDocument._id,
691
- _version: updatedDocument._version,
692
- created: updatedDocument.created,
693
- };
694
- }
695
-
696
- /**
697
- * Update the documents provided in the body
698
- * Delegates the notification to update action
699
- *
700
- * @param {Request} request
701
- * @returns {Promise<Object>}
702
- */
703
- mUpdate(request) {
704
- return this._mChanges(request, "mUpdate", actionEnum.UPDATE);
705
- }
706
-
707
- /**
708
- * Applies a partial update to documents provided in the body.
709
- * If some of the documents don't already exist, they will be created.
710
- *
711
- * @param {Request} request
712
- * @returns {Promise<Object>}
713
- */
714
- mUpsert(request) {
715
- return this._mChanges(request, "mUpsert", actionEnum.UPSERT);
716
- }
717
-
718
- /**
719
- * Replace a document through the persistent layer. Throws an error if the document doesn't exist
720
- *
721
- * @param {Request} request
722
- * @returns {Promise<Object>}
723
- */
724
- async replace(request) {
725
- const id = request.getId();
726
- const content = request.getBody();
727
- const userId = request.getKuid();
728
- const silent = request.getBoolean("silent");
729
- const refresh = request.getString("refresh", "false");
730
- const { index, collection } = request.getIndexAndCollection();
731
-
732
- const modifiedRequest = await global.kuzzle.validation.validate(
733
- request,
734
- false,
735
- );
736
-
737
- // Add metadata
738
- const pipeMetadataResult = await this.pipe(
739
- "generic:document:injectMetadata",
740
- {
741
- metadata: {
742
- author: userId,
743
- createdAt: Date.now(),
744
- updatedAt: Date.now(),
745
- updater: userId,
746
- },
747
- request,
748
- },
749
- );
750
-
751
- const response = await this.ask(
752
- "core:storage:public:document:replace",
753
- index,
754
- collection,
755
- id,
756
- {
757
- ...content,
758
- _kuzzle_info: pipeMetadataResult.metadata,
759
- },
760
- {
761
- injectKuzzleMeta: false,
762
- refresh,
763
- userId,
764
- },
765
- );
766
-
767
- if (!silent) {
768
- await this.ask(
769
- "core:realtime:document:notify",
770
- modifiedRequest,
771
- actionEnum.REPLACE,
772
- {
773
- _id: modifiedRequest.input.args._id,
774
- _source: modifiedRequest.input.body,
775
- },
776
- );
777
- }
778
-
779
- return response;
780
- }
781
-
782
- /**
783
- * Replace the documents provided in the body
784
- * Delegates the notification to update action
785
- *
786
- * @param {Request} request
787
- * @returns {Promise<Object>}
788
- */
789
- mReplace(request) {
790
- return this._mChanges(request, "mReplace", actionEnum.REPLACE);
791
- }
792
-
793
- /**
794
- * Delete a document through the persistent layer
795
- *
796
- * @param {Request} request
797
- * @returns {Promise<Object>}
798
- */
799
- async delete(request) {
800
- const id = request.getId();
801
- const silent = request.getBoolean("silent");
802
- const refresh = request.getString("refresh", "false");
803
- const source = request.getBoolean("source");
804
- const { index, collection } = request.getIndexAndCollection();
805
-
806
- const document = await this.ask(
807
- "core:storage:public:document:get",
808
- index,
809
- collection,
810
- id,
811
- );
812
-
813
- await this.ask(
814
- "core:storage:public:document:delete",
815
- index,
816
- collection,
817
- id,
818
- {
819
- refresh,
820
- },
821
- );
822
-
823
- if (!silent) {
824
- await this.ask(
825
- "core:realtime:document:notify",
826
- request,
827
- actionEnum.DELETE,
828
- document,
829
- );
830
- }
831
-
832
- return source ? document : { _id: document._id };
833
- }
834
-
835
- /**
836
- * Delete specific documents according to given ids
837
- * Delegates the notification to delete action
838
- *
839
- * @param {Request} request
840
- * @returns {Promise<Object>}
841
- */
842
- async mDelete(request) {
843
- const ids = request.getBodyArray("ids");
844
- const strict = request.getBoolean("strict");
845
- const silent = request.getBoolean("silent");
846
- const refresh = request.getString("refresh", "false");
847
- const { index, collection } = request.getIndexAndCollection();
848
-
849
- const { documents, errors } = await this.ask(
850
- "core:storage:public:document:mDelete",
851
- index,
852
- collection,
853
- ids,
854
- { refresh },
855
- );
856
-
857
- if (strict && errors.length) {
858
- throw kerror.get(
859
- "api",
860
- "process",
861
- "incomplete_multiple_request",
862
- "delete",
863
- errors,
864
- );
865
- }
866
-
867
- // @todo next major release: if (successes.length === 0) then throw (no matter strict value)
868
-
869
- if (!silent) {
870
- await this.ask(
871
- "core:realtime:document:mNotify",
872
- request,
873
- actionEnum.DELETE,
874
- documents,
875
- );
876
- }
877
-
878
- return {
879
- errors,
880
- successes: documents.map((d) => d._id),
881
- };
882
- }
883
-
884
- /**
885
- * Delete several documents matching a query through the persistent layer
886
- *
887
- * @param {Request} request
888
- * @returns {Promise<Object>}
889
- */
890
- async deleteByQuery(request) {
891
- let query = request.getBodyObject("query", {});
892
- const silent = request.getBoolean("silent");
893
- const refresh = request.getString("refresh", "false");
894
- const source = request.getBoolean("source");
895
- const { index, collection } = request.getIndexAndCollection();
896
- const lang = request.getLangParam();
897
-
898
- if (lang === "koncorde") {
899
- query = await this.translateKoncorde(query);
900
- }
901
-
902
- const result = await this.ask(
903
- "core:storage:public:document:deleteByQuery",
904
- index,
905
- collection,
906
- query,
907
- { refresh },
908
- );
909
-
910
- if (!silent) {
911
- await this.ask(
912
- "core:realtime:document:mNotify",
913
- request,
914
- actionEnum.DELETE,
915
- result.documents,
916
- );
917
- }
918
-
919
- if (!source) {
920
- result.documents.forEach((d) => (d._source = undefined));
921
- }
922
- return {
923
- documents: result.documents,
924
- ids: result.documents.map((d) => d._id),
925
- };
926
- }
927
-
928
- /**
929
- * Delete fields of a document. Throws an error if the document doesn't exist
930
- *
931
- * @param {Request} request
932
- * @returns {Promise<Object>}
933
- */
934
- async deleteFields(request) {
935
- const id = request.getId();
936
- const fields = request.getBodyArray("fields");
937
- const userId = request.getKuid();
938
- const silent = request.getBoolean("silent");
939
- const refresh = request.getString("refresh", "false");
940
- const source = request.getBoolean("source");
941
- const { index, collection } = request.getIndexAndCollection();
942
-
943
- const response = await this.ask(
944
- "core:storage:public:document:deleteFields",
945
- index,
946
- collection,
947
- id,
948
- fields,
949
- { refresh, userId },
950
- );
951
-
952
- if (!silent) {
953
- await this.ask(
954
- "core:realtime:document:notify",
955
- request,
956
- actionEnum.UPDATE,
957
- {
958
- _id: response._id,
959
- _source: response._source,
960
- },
961
- );
962
- }
963
-
964
- if (source) {
965
- return response;
966
- }
967
-
968
- return {
969
- _id: response._id,
970
- _version: response._version,
971
- };
972
- }
973
-
974
- /**
975
- * Update several documents matching a query through the persistent layer
976
- *
977
- * @param {Request} request
978
- * @returns {Promise<Object}
979
- */
980
- async updateByQuery(request) {
981
- let query = request.getBodyObject("query");
982
- const changes = request.getBodyObject("changes");
983
- const silent = request.getBoolean("silent");
984
- const userId = request.getKuid();
985
- const refresh = request.getString("refresh", "false");
986
- const source = request.getBoolean("source");
987
- const { index, collection } = request.getIndexAndCollection();
988
- const lang = request.getLangParam();
989
-
990
- if (lang === "koncorde") {
991
- query = await this.translateKoncorde(query);
992
- }
993
- delete changes._kuzzle_info;
994
- const result = await this.ask(
995
- "core:storage:public:document:updateByQuery",
996
- index,
997
- collection,
998
- query,
999
- changes,
1000
- { refresh, userId },
1001
- );
1002
-
1003
- if (!silent) {
1004
- await this.ask(
1005
- "core:realtime:document:mNotify",
1006
- request,
1007
- actionEnum.UPDATE,
1008
- result.successes.map((doc) => ({
1009
- _id: doc._id,
1010
- _source: doc._source,
1011
- _updatedFields: extractFields(changes, {
1012
- fieldsToIgnore: ["_kuzzle_info"],
1013
- }),
1014
- })),
1015
- );
1016
- }
1017
-
1018
- if (!source) {
1019
- result.successes.forEach((d) => (d._source = undefined));
1020
- }
1021
-
1022
- return result;
1023
- }
1024
-
1025
- /**
1026
- * Validate a document against collection validation specifications.
1027
- *
1028
- * @param {Request} request
1029
- * @returns {Promise<Object>}
1030
- */
1031
- validate(request) {
1032
- assertHasBody(request);
1033
- assertHasIndexAndCollection(request);
1034
-
1035
- // @todo validation service should not take request argument
1036
- return global.kuzzle.validation.validate(request, true);
1037
- }
1038
-
1039
- /**
1040
- * Applies a multi-document change request (create, update,
1041
- * replace, createOrReplace, upsert)
1042
- *
1043
- * @param {Request} request
1044
- * @param {String} methodName ES Service method to apply
1045
- * @param {notifyActionEnum} action performed on the documents
1046
- * @returns {Promise.<Object>} { successes, errors }
1047
- */
1048
- async _mChanges(request, methodName, action) {
1049
- let source = true;
1050
- const userId = request.getKuid();
1051
- const strict = request.getBoolean("strict");
1052
- const silent = request.getBoolean("silent");
1053
- const refresh = request.getString("refresh", "false");
1054
- const documents = request.getBodyArray("documents");
1055
- const { index, collection } = request.getIndexAndCollection();
1056
- const retryOnConflict =
1057
- action === actionEnum.UPDATE || action === actionEnum.UPSERT
1058
- ? request.getInteger("retryOnConflict", 0)
1059
- : undefined;
1060
-
1061
- this.assertNotExceedMaxWrite(documents.length);
1062
-
1063
- if (request.input.args.source !== undefined) {
1064
- source =
1065
- request.input.args.source === "false"
1066
- ? false
1067
- : request.getBoolean("source");
1068
- }
1069
-
1070
- if (documents.length === 0) {
1071
- return {
1072
- errors: [],
1073
- successes: [],
1074
- };
1075
- }
1076
-
1077
- for (let i = 0; i < documents.length; i++) {
1078
- if (documents[i]._source) {
1079
- throw kerror.get(
1080
- "api",
1081
- "assert",
1082
- "unexpected_argument",
1083
- `documents[${i}]._source`,
1084
- `documents[${i}].body`,
1085
- );
1086
- }
1087
- if (documents[i].body?._kuzzle_info !== undefined) {
1088
- delete documents[i].body._kuzzle_info;
1089
- }
1090
- }
1091
-
1092
- const response = await this.ask(
1093
- `core:storage:public:document:${methodName}`,
1094
- index,
1095
- collection,
1096
- documents,
1097
- { refresh, retryOnConflict, source, userId },
1098
- );
1099
-
1100
- if (strict && response.errors.length) {
1101
- throw kerror.get(
1102
- "api",
1103
- "process",
1104
- "incomplete_multiple_request",
1105
- methodName,
1106
- response.errors,
1107
- );
1108
- }
1109
-
1110
- // @todo next major release: if (successes.length === 0) then throw (no matter strict value)
1111
-
1112
- if (
1113
- !silent &&
1114
- (action === actionEnum.UPDATE || action === actionEnum.UPSERT)
1115
- ) {
1116
- const documentsDictionnary = documents.reduce((result, document) => {
1117
- result[document._id] =
1118
- action === actionEnum.UPSERT ? document.changes : document.body;
1119
- return result;
1120
- }, {});
1121
-
1122
- await this.ask(
1123
- "core:realtime:document:mNotify",
1124
- request,
1125
- action,
1126
- response.items.map((item) => {
1127
- if (!item.created) {
1128
- item._updatedFields = extractFields(
1129
- documentsDictionnary[item._id],
1130
- { fieldsToIgnore: ["_kuzzle_info"] },
1131
- );
1132
- }
1133
- return item;
1134
- }),
1135
- );
1136
- } else if (!silent) {
1137
- await this.ask(
1138
- "core:realtime:document:mNotify",
1139
- request,
1140
- action,
1141
- response.items,
1142
- );
1143
- }
1144
-
1145
- return {
1146
- errors: response.errors,
1147
- successes: response.items,
1148
- };
1149
- }
1150
- }
1151
-
1152
- function hasMultiTargets(str) {
1153
- return [",", "*", "+"].some((chr) => str.includes(chr)) || str === "_all";
1154
- }
1155
-
1156
- module.exports = DocumentController;