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
@@ -0,0 +1,768 @@
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
+ "use strict";
22
+ const kerror = require("../../kerror");
23
+ const { NativeController } = require("./baseController");
24
+ const actionEnum = require("../../core/realtime/actionEnum");
25
+ const { assertHasBody, assertHasIndexAndCollection, } = require("../../util/requestAssertions");
26
+ const extractFields = require("../../util/extractFields");
27
+ const { dumpCollectionDocuments } = require("../../util/dump-collection");
28
+ /**
29
+ * @description actions available on the document Controller (used by generic events)
30
+ * @key actions
31
+ * @value event type (empty for actions that are not linked to events)
32
+ */
33
+ const actions = {
34
+ count: "",
35
+ create: "write",
36
+ createOrReplace: "write",
37
+ delete: "delete",
38
+ deleteByQuery: "delete",
39
+ deleteFields: "update",
40
+ exists: "get",
41
+ export: "get",
42
+ get: "get",
43
+ mCreate: "write",
44
+ mCreateOrReplace: "write",
45
+ mDelete: "delete",
46
+ mExists: "get",
47
+ mGet: "get",
48
+ mReplace: "write",
49
+ mUpdate: "update",
50
+ mUpsert: "update",
51
+ replace: "write",
52
+ scroll: "",
53
+ search: "get",
54
+ update: "update",
55
+ updateByQuery: "update",
56
+ upsert: "update",
57
+ validate: "",
58
+ };
59
+ /**
60
+ * @class DocumentController
61
+ */
62
+ class DocumentController extends NativeController {
63
+ constructor() {
64
+ super(Object.keys(actions));
65
+ }
66
+ /**
67
+ * @returns {Record<string, unknown>}
68
+ */
69
+ static get actions() {
70
+ return actions;
71
+ }
72
+ /**
73
+ * @param {Request} request
74
+ * @returns {Promise<Object>}
75
+ */
76
+ async search(request) {
77
+ const { from, size, scrollTTL, searchBody } = request.getSearchParams();
78
+ const index = request.getIndex({ required: false });
79
+ const collection = request.getCollection({ required: false });
80
+ const targets = request.getArray("targets", []);
81
+ const lang = request.getLangParam();
82
+ if (!index && !collection && (!targets || targets.length === 0)) {
83
+ throw kerror.get("api", "assert", "missing_argument", "index, collection or targets");
84
+ }
85
+ if (index &&
86
+ collection &&
87
+ (hasMultiTargets(index) || hasMultiTargets(collection))) {
88
+ throw kerror.get("services", "storage", "invalid_multi_index_collection_usage");
89
+ }
90
+ if (targets.length > 0) {
91
+ // Index and Collections from a target should not contains any characters for multi targetting or _all
92
+ // Otherwise it might be possible to bypass some checks and access data that should be accessed
93
+ // We should also verify that each target has an index and collections specified before further processing
94
+ this.assertTargetsAreValid(targets);
95
+ }
96
+ this.assertNotExceedMaxFetch(size - from);
97
+ if (lang === "koncorde") {
98
+ searchBody.query = await this.translateKoncorde(searchBody.query || {});
99
+ }
100
+ let result;
101
+ if (targets.length > 0) {
102
+ result = await this.ask("core:storage:public:document:multiSearch", targets, searchBody, { from, scroll: scrollTTL, size });
103
+ }
104
+ else {
105
+ if (!index) {
106
+ throw kerror.get("api", "assert", "missing_argument", "index");
107
+ }
108
+ if (!collection) {
109
+ throw kerror.get("api", "assert", "missing_argument", "collection");
110
+ }
111
+ result = await this.ask("core:storage:public:document:search", index, collection, searchBody, { from, scroll: scrollTTL, size });
112
+ }
113
+ return {
114
+ aggregations: result.aggregations,
115
+ hits: result.hits,
116
+ remaining: result.remaining,
117
+ scrollId: result.scrollId,
118
+ suggest: result.suggest,
119
+ total: result.total,
120
+ };
121
+ }
122
+ /**
123
+ * @param {Request} request
124
+ * @returns {Promise<Object>}
125
+ */
126
+ async scroll(request) {
127
+ const scrollTTL = request.getScrollTTLParam();
128
+ const _scrollId = request.getString("scrollId");
129
+ const result = await this.ask("core:storage:public:document:scroll", _scrollId, { scrollTTL });
130
+ return {
131
+ hits: result.hits,
132
+ remaining: result.remaining,
133
+ scrollId: result.scrollId,
134
+ total: result.total,
135
+ };
136
+ }
137
+ /**
138
+ * @param {Request} request
139
+ * @returns {Promise<Boolean>}
140
+ */
141
+ exists(request) {
142
+ const id = request.getId();
143
+ const { index, collection } = request.getIndexAndCollection();
144
+ return this.ask("core:storage:public:document:exist", index, collection, id);
145
+ }
146
+ /**
147
+ * @param {Request} request
148
+ */
149
+ async mExists(request) {
150
+ let ids;
151
+ if (request.input.body &&
152
+ request.input.body.ids &&
153
+ Object.keys(request.input.body.ids).length) {
154
+ ids = request.getBodyArray("ids");
155
+ }
156
+ else {
157
+ ids = request.getArray("ids");
158
+ }
159
+ const { index, collection } = request.getIndexAndCollection();
160
+ const strict = request.getBoolean("strict");
161
+ this.assertNotExceedMaxFetch(ids.length);
162
+ const { items, errors } = await this.ask("core:storage:public:document:mExists", index, collection, ids);
163
+ if (strict && errors.length) {
164
+ throw kerror.get("api", "process", "incomplete_multiple_request", "get", errors);
165
+ }
166
+ return {
167
+ errors,
168
+ successes: items,
169
+ };
170
+ }
171
+ async export(request) {
172
+ const { index, collection } = request.getIndexAndCollection();
173
+ const { size, scrollTTL } = request.getSearchParams();
174
+ const lang = request.getLangParam();
175
+ const format = request.getString("format", "jsonl");
176
+ const separator = request.getString("separator", ",");
177
+ const query = request.getObjectFromBodyOrArgs("query", {});
178
+ const fields = request.getArrayFromBodyOrArgs("fields", []);
179
+ const fieldsName = request.getObjectFromBodyOrArgs("fieldsName", {});
180
+ const searchBody = { query };
181
+ if (request.context.connection.protocol !== "http") {
182
+ throw kerror.get("api", "assert", "unsupported_protocol", request.context.connection.protocol, "document:export");
183
+ }
184
+ if (lang === "koncorde") {
185
+ searchBody.query = await this.translateKoncorde(searchBody.query || {});
186
+ }
187
+ let mimeType = "html/text";
188
+ if (format.toLowerCase() === "csv") {
189
+ mimeType = "text/csv";
190
+ }
191
+ request.response.configure({
192
+ headers: {
193
+ "Content-Disposition": `attachment; filename="${index}-${collection}.${format}"`,
194
+ "Content-Type": mimeType,
195
+ },
196
+ });
197
+ return dumpCollectionDocuments(index, collection, searchBody, format, fields, {
198
+ fieldsName,
199
+ lang,
200
+ scroll: scrollTTL || "5s",
201
+ separator,
202
+ size,
203
+ });
204
+ }
205
+ /**
206
+ * @param {Request} request
207
+ * @returns {Promise<Object>}
208
+ */
209
+ async get(request) {
210
+ const id = request.getId();
211
+ const { index, collection } = request.getIndexAndCollection();
212
+ const result = await this.ask("core:storage:public:document:get", index, collection, id);
213
+ return {
214
+ _id: result._id,
215
+ _source: result._source,
216
+ _version: result._version,
217
+ };
218
+ }
219
+ /**
220
+ * Get specific documents according to given ids
221
+ *
222
+ * @param {Request} request
223
+ * @returns {Promise<Object>}
224
+ */
225
+ async mGet(request) {
226
+ let ids;
227
+ if (request.input.body &&
228
+ request.input.body.ids &&
229
+ Object.keys(request.input.body.ids).length) {
230
+ ids = request.getBodyArray("ids");
231
+ }
232
+ else {
233
+ ids = request.getArray("ids");
234
+ }
235
+ const { index, collection } = request.getIndexAndCollection();
236
+ const strict = request.getBoolean("strict");
237
+ this.assertNotExceedMaxFetch(ids.length);
238
+ const { items, errors } = await this.ask("core:storage:public:document:mGet", index, collection, ids);
239
+ if (strict && errors.length) {
240
+ throw kerror.get("api", "process", "incomplete_multiple_request", "get", errors);
241
+ }
242
+ // @todo next major release: if (successes.length === 0) then throw (no matter strict value)
243
+ return {
244
+ errors,
245
+ successes: items,
246
+ };
247
+ }
248
+ /**
249
+ * @param {Request} request
250
+ * @returns {Promise<Object>}
251
+ */
252
+ async count(request) {
253
+ const { searchBody } = request.getSearchParams();
254
+ const { index, collection } = request.getIndexAndCollection();
255
+ const lang = request.getLangParam();
256
+ if (lang === "koncorde") {
257
+ searchBody.query = await this.translateKoncorde(searchBody.query);
258
+ }
259
+ const count = await this.ask("core:storage:public:document:count", index, collection, searchBody);
260
+ return { count };
261
+ }
262
+ /**
263
+ * Create a new document
264
+ *
265
+ * @param {KuzzleRequest} request
266
+ * @returns {Promise<Object>}
267
+ */
268
+ async create(request) {
269
+ const id = request.getId({ ifMissing: "ignore" });
270
+ const userId = request.getKuid();
271
+ const refresh = request.getRefresh();
272
+ const silent = request.getBoolean("silent");
273
+ const { index, collection } = request.getIndexAndCollection();
274
+ const validated = await global.kuzzle.validation.validate(request, false);
275
+ // Add metadata
276
+ const pipeMetadataResult = await this.pipe("generic:document:injectMetadata", {
277
+ metadata: {
278
+ author: userId,
279
+ createdAt: Date.now(),
280
+ updatedAt: null,
281
+ updater: null,
282
+ },
283
+ request,
284
+ });
285
+ const created = await this.ask("core:storage:public:document:create", index, collection, {
286
+ ...validated.getBody(),
287
+ _kuzzle_info: pipeMetadataResult.metadata,
288
+ }, {
289
+ id,
290
+ injectKuzzleMeta: false,
291
+ refresh,
292
+ userId,
293
+ });
294
+ if (!silent) {
295
+ await this.ask("core:realtime:document:notify", validated, actionEnum.CREATE, created);
296
+ }
297
+ return created;
298
+ }
299
+ /**
300
+ * Create the documents provided in the body
301
+ * Delegates the notification to create action
302
+ *
303
+ * @param {Request} request
304
+ * @returns {Promise<Object>}
305
+ */
306
+ mCreate(request) {
307
+ return this._mChanges(request, "mCreate", actionEnum.CREATE);
308
+ }
309
+ /**
310
+ * Create a new document through the persistent layer. If it already exists, update it instead.
311
+ *
312
+ * @param {Request} request
313
+ * @returns {Promise<Object>}
314
+ */
315
+ async createOrReplace(request) {
316
+ const id = request.getId();
317
+ const content = request.getBody();
318
+ const userId = request.getKuid();
319
+ const silent = request.getBoolean("silent");
320
+ const refresh = request.getString("refresh", "false");
321
+ const { index, collection } = request.getIndexAndCollection();
322
+ const modifiedRequest = await global.kuzzle.validation.validate(request, false);
323
+ // Add metadata
324
+ const pipeMetadataResult = await this.pipe("generic:document:injectMetadata", {
325
+ metadata: {
326
+ author: userId,
327
+ createdAt: Date.now(),
328
+ updatedAt: Date.now(),
329
+ updater: userId,
330
+ },
331
+ request,
332
+ });
333
+ const response = await this.ask("core:storage:public:document:createOrReplace", index, collection, id, {
334
+ ...content,
335
+ _kuzzle_info: pipeMetadataResult.metadata,
336
+ }, {
337
+ injectKuzzleMeta: false,
338
+ refresh,
339
+ userId,
340
+ });
341
+ if (!silent) {
342
+ await this.ask("core:realtime:document:notify", modifiedRequest, actionEnum.WRITE, response);
343
+ }
344
+ return response;
345
+ }
346
+ /**
347
+ * Create or replace the documents provided in the body
348
+ * Delegates the notification to createOrReplace action
349
+ *
350
+ * @param {Request} request
351
+ * @returns {Promise<Object>}
352
+ */
353
+ mCreateOrReplace(request) {
354
+ return this._mChanges(request, "mCreateOrReplace", actionEnum.WRITE);
355
+ }
356
+ /**
357
+ * Update a document through the persistent layer
358
+ *
359
+ * @param {Request} request
360
+ * @returns {Promise<Object>}
361
+ */
362
+ async update(request) {
363
+ const id = request.getId();
364
+ const content = request.getBody();
365
+ const userId = request.getKuid();
366
+ const silent = request.getBoolean("silent");
367
+ const refresh = request.getString("refresh", "false");
368
+ const retryOnConflict = request.input.args.retryOnConflict;
369
+ const source = request.getBoolean("source");
370
+ const { index, collection } = request.getIndexAndCollection();
371
+ const modifiedRequest = await global.kuzzle.validation.validate(request, false);
372
+ // Add metadata
373
+ const pipeMetadataResult = await this.pipe("generic:document:injectMetadata", {
374
+ metadata: {
375
+ updatedAt: Date.now(),
376
+ updater: userId,
377
+ },
378
+ request,
379
+ });
380
+ const updatedDocument = await this.ask("core:storage:public:document:update", index, collection, id, {
381
+ ...content,
382
+ _kuzzle_info: pipeMetadataResult.metadata,
383
+ }, {
384
+ injectKuzzleMeta: false,
385
+ refresh,
386
+ retryOnConflict,
387
+ userId,
388
+ });
389
+ const _updatedFields = extractFields(content, {
390
+ fieldsToIgnore: ["_kuzzle_info"],
391
+ });
392
+ if (!silent) {
393
+ await this.ask("core:realtime:document:notify", modifiedRequest, actionEnum.UPDATE, {
394
+ _id: updatedDocument._id,
395
+ _source: updatedDocument._source,
396
+ _updatedFields,
397
+ });
398
+ }
399
+ if (source) {
400
+ return updatedDocument;
401
+ }
402
+ return {
403
+ _id: updatedDocument._id,
404
+ _source: {
405
+ ...content,
406
+ _kuzzle_info: updatedDocument._source._kuzzle_info,
407
+ },
408
+ _version: updatedDocument._version,
409
+ };
410
+ }
411
+ /**
412
+ * Applies a partial update to an existing document.
413
+ * If the document doesn't already exist, a new document is created.
414
+ *
415
+ * @param {Request} request
416
+ * @returns {Promise<Object>}
417
+ */
418
+ async upsert(request) {
419
+ const id = request.getId();
420
+ const content = request.getBodyObject("changes");
421
+ const defaultValues = request.getBodyObject("default", {});
422
+ const userId = request.getKuid();
423
+ const silent = request.getBoolean("silent");
424
+ const refresh = request.getString("refresh", "false");
425
+ const retryOnConflict = request.input.args.retryOnConflict;
426
+ const source = request.getBoolean("source");
427
+ const { index, collection } = request.getIndexAndCollection();
428
+ // Add metadata
429
+ const pipeMetadataResult = await this.pipe("generic:document:injectMetadata", {
430
+ defaultMetadata: {
431
+ author: userId,
432
+ createdAt: Date.now(),
433
+ },
434
+ metadata: {
435
+ updatedAt: Date.now(),
436
+ updater: userId,
437
+ },
438
+ request,
439
+ });
440
+ const updatedDocument = await this.ask("core:storage:public:document:upsert", index, collection, id, {
441
+ ...content,
442
+ _kuzzle_info: pipeMetadataResult.metadata,
443
+ }, {
444
+ defaultValues: {
445
+ ...defaultValues,
446
+ _kuzzle_info: pipeMetadataResult.defaultMetadata,
447
+ },
448
+ injectKuzzleMeta: false,
449
+ refresh,
450
+ retryOnConflict,
451
+ userId,
452
+ });
453
+ if (!silent && updatedDocument.created) {
454
+ await this.ask("core:realtime:document:notify", request, actionEnum.CREATE, updatedDocument._source);
455
+ }
456
+ else if (!silent) {
457
+ const _updatedFields = extractFields(content, {
458
+ fieldsToIgnore: ["_kuzzle_info"],
459
+ });
460
+ await this.ask("core:realtime:document:notify", request, actionEnum.UPDATE, {
461
+ _id: updatedDocument._id,
462
+ _source: updatedDocument._source,
463
+ _updatedFields,
464
+ });
465
+ }
466
+ if (source) {
467
+ return updatedDocument;
468
+ }
469
+ return {
470
+ _id: updatedDocument._id,
471
+ _version: updatedDocument._version,
472
+ created: updatedDocument.created,
473
+ };
474
+ }
475
+ /**
476
+ * Update the documents provided in the body
477
+ * Delegates the notification to update action
478
+ *
479
+ * @param {Request} request
480
+ * @returns {Promise<Object>}
481
+ */
482
+ mUpdate(request) {
483
+ return this._mChanges(request, "mUpdate", actionEnum.UPDATE);
484
+ }
485
+ /**
486
+ * Applies a partial update to documents provided in the body.
487
+ * If some of the documents don't already exist, they will be created.
488
+ *
489
+ * @param {Request} request
490
+ * @returns {Promise<Object>}
491
+ */
492
+ mUpsert(request) {
493
+ return this._mChanges(request, "mUpsert", actionEnum.UPSERT);
494
+ }
495
+ /**
496
+ * Replace a document through the persistent layer. Throws an error if the document doesn't exist
497
+ *
498
+ * @param {Request} request
499
+ * @returns {Promise<Object>}
500
+ */
501
+ async replace(request) {
502
+ const id = request.getId();
503
+ const content = request.getBody();
504
+ const userId = request.getKuid();
505
+ const silent = request.getBoolean("silent");
506
+ const refresh = request.getString("refresh", "false");
507
+ const { index, collection } = request.getIndexAndCollection();
508
+ const modifiedRequest = await global.kuzzle.validation.validate(request, false);
509
+ // Add metadata
510
+ const pipeMetadataResult = await this.pipe("generic:document:injectMetadata", {
511
+ metadata: {
512
+ author: userId,
513
+ createdAt: Date.now(),
514
+ updatedAt: Date.now(),
515
+ updater: userId,
516
+ },
517
+ request,
518
+ });
519
+ const response = await this.ask("core:storage:public:document:replace", index, collection, id, {
520
+ ...content,
521
+ _kuzzle_info: pipeMetadataResult.metadata,
522
+ }, {
523
+ injectKuzzleMeta: false,
524
+ refresh,
525
+ userId,
526
+ });
527
+ if (!silent) {
528
+ await this.ask("core:realtime:document:notify", modifiedRequest, actionEnum.REPLACE, {
529
+ _id: modifiedRequest.input.args._id,
530
+ _source: modifiedRequest.input.body,
531
+ });
532
+ }
533
+ return response;
534
+ }
535
+ /**
536
+ * Replace the documents provided in the body
537
+ * Delegates the notification to update action
538
+ *
539
+ * @param {Request} request
540
+ * @returns {Promise<Object>}
541
+ */
542
+ mReplace(request) {
543
+ return this._mChanges(request, "mReplace", actionEnum.REPLACE);
544
+ }
545
+ /**
546
+ * Delete a document through the persistent layer
547
+ *
548
+ * @param {Request} request
549
+ * @returns {Promise<Object>}
550
+ */
551
+ async delete(request) {
552
+ const id = request.getId();
553
+ const silent = request.getBoolean("silent");
554
+ const refresh = request.getString("refresh", "false");
555
+ const source = request.getBoolean("source");
556
+ const { index, collection } = request.getIndexAndCollection();
557
+ const document = await this.ask("core:storage:public:document:get", index, collection, id);
558
+ await this.ask("core:storage:public:document:delete", index, collection, id, {
559
+ refresh,
560
+ });
561
+ if (!silent) {
562
+ await this.ask("core:realtime:document:notify", request, actionEnum.DELETE, document);
563
+ }
564
+ return source ? document : { _id: document._id };
565
+ }
566
+ /**
567
+ * Delete specific documents according to given ids
568
+ * Delegates the notification to delete action
569
+ *
570
+ * @param {Request} request
571
+ * @returns {Promise<Object>}
572
+ */
573
+ async mDelete(request) {
574
+ const ids = request.getBodyArray("ids");
575
+ const strict = request.getBoolean("strict");
576
+ const silent = request.getBoolean("silent");
577
+ const refresh = request.getString("refresh", "false");
578
+ const { index, collection } = request.getIndexAndCollection();
579
+ const { documents, errors } = await this.ask("core:storage:public:document:mDelete", index, collection, ids, { refresh });
580
+ if (strict && errors.length) {
581
+ throw kerror.get("api", "process", "incomplete_multiple_request", "delete", errors);
582
+ }
583
+ // @todo next major release: if (successes.length === 0) then throw (no matter strict value)
584
+ if (!silent) {
585
+ await this.ask("core:realtime:document:mNotify", request, actionEnum.DELETE, documents);
586
+ }
587
+ return {
588
+ errors,
589
+ successes: documents.map((d) => d._id),
590
+ };
591
+ }
592
+ /**
593
+ * Delete several documents matching a query through the persistent layer
594
+ *
595
+ * @param {Request} request
596
+ * @returns {Promise<Object>}
597
+ */
598
+ async deleteByQuery(request) {
599
+ let query = request.getBodyObject("query", {});
600
+ const silent = request.getBoolean("silent");
601
+ const refresh = request.getString("refresh", "false");
602
+ const source = request.getBoolean("source");
603
+ const { index, collection } = request.getIndexAndCollection();
604
+ const lang = request.getLangParam();
605
+ if (lang === "koncorde") {
606
+ query = await this.translateKoncorde(query);
607
+ }
608
+ const result = await this.ask("core:storage:public:document:deleteByQuery", index, collection, query, { refresh });
609
+ if (!silent) {
610
+ await this.ask("core:realtime:document:mNotify", request, actionEnum.DELETE, result.documents);
611
+ }
612
+ if (!source) {
613
+ result.documents.forEach((d) => (d._source = undefined));
614
+ }
615
+ return {
616
+ documents: result.documents,
617
+ ids: result.documents.map((d) => d._id),
618
+ };
619
+ }
620
+ /**
621
+ * Delete fields of a document. Throws an error if the document doesn't exist
622
+ *
623
+ * @param {Request} request
624
+ * @returns {Promise<Object>}
625
+ */
626
+ async deleteFields(request) {
627
+ const id = request.getId();
628
+ const fields = request.getBodyArray("fields");
629
+ const userId = request.getKuid();
630
+ const silent = request.getBoolean("silent");
631
+ const refresh = request.getString("refresh", "false");
632
+ const source = request.getBoolean("source");
633
+ const { index, collection } = request.getIndexAndCollection();
634
+ const response = await this.ask("core:storage:public:document:deleteFields", index, collection, id, fields, { refresh, userId });
635
+ if (!silent) {
636
+ await this.ask("core:realtime:document:notify", request, actionEnum.UPDATE, {
637
+ _id: response._id,
638
+ _source: response._source,
639
+ });
640
+ }
641
+ if (source) {
642
+ return response;
643
+ }
644
+ return {
645
+ _id: response._id,
646
+ _version: response._version,
647
+ };
648
+ }
649
+ /**
650
+ * Update several documents matching a query through the persistent layer
651
+ *
652
+ * @param {Request} request
653
+ * @returns {Promise<Object}
654
+ */
655
+ async updateByQuery(request) {
656
+ let query = request.getBodyObject("query");
657
+ const changes = request.getBodyObject("changes");
658
+ const silent = request.getBoolean("silent");
659
+ const userId = request.getKuid();
660
+ const refresh = request.getString("refresh", "false");
661
+ const source = request.getBoolean("source");
662
+ const { index, collection } = request.getIndexAndCollection();
663
+ const lang = request.getLangParam();
664
+ if (lang === "koncorde") {
665
+ query = await this.translateKoncorde(query);
666
+ }
667
+ delete changes._kuzzle_info;
668
+ const result = await this.ask("core:storage:public:document:updateByQuery", index, collection, query, changes, { refresh, userId });
669
+ if (!silent) {
670
+ await this.ask("core:realtime:document:mNotify", request, actionEnum.UPDATE, result.successes.map((doc) => ({
671
+ _id: doc._id,
672
+ _source: doc._source,
673
+ _updatedFields: extractFields(changes, {
674
+ fieldsToIgnore: ["_kuzzle_info"],
675
+ }),
676
+ })));
677
+ }
678
+ if (!source) {
679
+ result.successes.forEach((d) => (d._source = undefined));
680
+ }
681
+ return result;
682
+ }
683
+ /**
684
+ * Validate a document against collection validation specifications.
685
+ *
686
+ * @param {Request} request
687
+ * @returns {Promise<Object>}
688
+ */
689
+ validate(request) {
690
+ assertHasBody(request);
691
+ assertHasIndexAndCollection(request);
692
+ // @todo validation service should not take request argument
693
+ return global.kuzzle.validation.validate(request, true);
694
+ }
695
+ /**
696
+ * Applies a multi-document change request (create, update,
697
+ * replace, createOrReplace, upsert)
698
+ *
699
+ * @param {Request} request
700
+ * @param {String} methodName ES Service method to apply
701
+ * @param {notifyActionEnum} action performed on the documents
702
+ * @returns {Promise.<Object>} { successes, errors }
703
+ */
704
+ async _mChanges(request, methodName, action) {
705
+ let source = true;
706
+ const userId = request.getKuid();
707
+ const strict = request.getBoolean("strict");
708
+ const silent = request.getBoolean("silent");
709
+ const refresh = request.getString("refresh", "false");
710
+ const documents = request.getBodyArray("documents");
711
+ const { index, collection } = request.getIndexAndCollection();
712
+ const retryOnConflict = action === actionEnum.UPDATE || action === actionEnum.UPSERT
713
+ ? request.getInteger("retryOnConflict", 0)
714
+ : undefined;
715
+ this.assertNotExceedMaxWrite(documents.length);
716
+ if (request.input.args.source !== undefined) {
717
+ source =
718
+ request.input.args.source === "false"
719
+ ? false
720
+ : request.getBoolean("source");
721
+ }
722
+ if (documents.length === 0) {
723
+ return {
724
+ errors: [],
725
+ successes: [],
726
+ };
727
+ }
728
+ for (let i = 0; i < documents.length; i++) {
729
+ if (documents[i]._source) {
730
+ throw kerror.get("api", "assert", "unexpected_argument", `documents[${i}]._source`, `documents[${i}].body`);
731
+ }
732
+ if (documents[i].body?._kuzzle_info !== undefined) {
733
+ delete documents[i].body._kuzzle_info;
734
+ }
735
+ }
736
+ const response = await this.ask(`core:storage:public:document:${methodName}`, index, collection, documents, { refresh, retryOnConflict, source, userId });
737
+ if (strict && response.errors.length) {
738
+ throw kerror.get("api", "process", "incomplete_multiple_request", methodName, response.errors);
739
+ }
740
+ // @todo next major release: if (successes.length === 0) then throw (no matter strict value)
741
+ if (!silent &&
742
+ (action === actionEnum.UPDATE || action === actionEnum.UPSERT)) {
743
+ const documentsDictionnary = documents.reduce((result, document) => {
744
+ result[document._id] =
745
+ action === actionEnum.UPSERT ? document.changes : document.body;
746
+ return result;
747
+ }, {});
748
+ await this.ask("core:realtime:document:mNotify", request, action, response.items.map((item) => {
749
+ if (!item.created) {
750
+ item._updatedFields = extractFields(documentsDictionnary[item._id], { fieldsToIgnore: ["_kuzzle_info"] });
751
+ }
752
+ return item;
753
+ }));
754
+ }
755
+ else if (!silent) {
756
+ await this.ask("core:realtime:document:mNotify", request, action, response.items);
757
+ }
758
+ return {
759
+ errors: response.errors,
760
+ successes: response.items,
761
+ };
762
+ }
763
+ }
764
+ function hasMultiTargets(str) {
765
+ return [",", "*", "+"].some((chr) => str.includes(chr)) || str === "_all";
766
+ }
767
+ module.exports = DocumentController;
768
+ //# sourceMappingURL=documentController.js.map