kuzzle 2.49.1 → 2.50.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (592) hide show
  1. package/dist/bin/check-node-version.js +11 -0
  2. package/dist/bin/copy-protobuf.js +17 -0
  3. package/dist/lib/api/controllers/adminController.d.ts +51 -0
  4. package/dist/lib/api/controllers/adminController.js +191 -0
  5. package/{lib → dist/lib}/api/controllers/authController.d.ts +20 -40
  6. package/{lib → dist/lib}/api/controllers/authController.js +23 -24
  7. package/dist/lib/api/controllers/bulkController.d.ts +46 -0
  8. package/dist/lib/api/controllers/bulkController.js +132 -0
  9. package/dist/lib/api/controllers/clusterController.d.ts +6 -0
  10. package/{lib → dist/lib}/api/controllers/clusterController.js +7 -11
  11. package/dist/lib/api/controllers/collectionController.d.ts +136 -0
  12. package/dist/lib/api/controllers/collectionController.js +356 -0
  13. package/dist/lib/api/controllers/documentController.d.ts +181 -0
  14. package/dist/lib/api/controllers/documentController.js +768 -0
  15. package/dist/lib/api/controllers/index.d.ts +12 -0
  16. package/{lib → dist/lib}/api/controllers/index.js +13 -14
  17. package/dist/lib/api/controllers/indexController.d.ts +65 -0
  18. package/dist/lib/api/controllers/indexController.js +139 -0
  19. package/dist/lib/api/controllers/memoryStorageController.d.ts +8 -0
  20. package/dist/lib/api/controllers/memoryStorageController.js +867 -0
  21. package/dist/lib/api/controllers/realtimeController.d.ts +47 -0
  22. package/dist/lib/api/controllers/realtimeController.js +128 -0
  23. package/dist/lib/api/controllers/securityController.d.ts +423 -0
  24. package/dist/lib/api/controllers/securityController.js +1139 -0
  25. package/dist/lib/api/controllers/serverController.d.ts +82 -0
  26. package/dist/lib/api/controllers/serverController.js +321 -0
  27. package/dist/lib/api/documentExtractor.d.ts +9 -0
  28. package/dist/lib/api/documentExtractor.js +274 -0
  29. package/dist/lib/api/funnel.d.ts +183 -0
  30. package/dist/lib/api/funnel.js +821 -0
  31. package/dist/lib/api/httpRoutes.d.ts +17 -0
  32. package/dist/lib/api/httpRoutes.js +1496 -0
  33. package/dist/lib/api/rateLimiter.d.ts +18 -0
  34. package/dist/lib/api/rateLimiter.js +74 -0
  35. package/{lib → dist/lib}/api/request/kuzzleRequest.d.ts +2 -2
  36. package/{lib → dist/lib}/api/request/requestContext.d.ts +2 -1
  37. package/dist/lib/cluster/command.d.ts +73 -0
  38. package/dist/lib/cluster/command.js +236 -0
  39. package/dist/lib/cluster/index.d.ts +2 -0
  40. package/{lib → dist/lib}/cluster/index.js +1 -2
  41. package/dist/lib/cluster/node.d.ts +278 -0
  42. package/dist/lib/cluster/node.js +876 -0
  43. package/dist/lib/cluster/publisher.d.ts +188 -0
  44. package/dist/lib/cluster/publisher.js +347 -0
  45. package/dist/lib/cluster/subscriber.d.ts +269 -0
  46. package/dist/lib/cluster/subscriber.js +555 -0
  47. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +13 -0
  48. package/dist/lib/cluster/workers/IDCardRenewer.js +120 -0
  49. package/{lib → dist/lib}/config/documentEventAliases.d.ts +1 -2
  50. package/dist/lib/config/index.d.ts +5 -0
  51. package/dist/lib/config/index.js +244 -0
  52. package/dist/lib/config/sdkCompatibility.json +9 -0
  53. package/dist/lib/core/auth/formatProcessing.d.ts +30 -0
  54. package/dist/lib/core/auth/formatProcessing.js +55 -0
  55. package/dist/lib/core/auth/passportResponse.d.ts +15 -0
  56. package/{lib → dist/lib}/core/auth/passportResponse.js +24 -30
  57. package/dist/lib/core/auth/passportWrapper.d.ts +28 -0
  58. package/dist/lib/core/auth/passportWrapper.js +126 -0
  59. package/{lib → dist/lib}/core/backend/backendConfig.js +2 -2
  60. package/{lib → dist/lib}/core/backend/backendErrors.js +9 -12
  61. package/dist/lib/core/cache/cacheEngine.d.ts +15 -0
  62. package/dist/lib/core/cache/cacheEngine.js +205 -0
  63. package/dist/lib/core/network/accessLogger.d.ts +29 -0
  64. package/dist/lib/core/network/accessLogger.js +250 -0
  65. package/dist/lib/core/network/clientConnection.d.ts +15 -0
  66. package/{lib → dist/lib}/core/network/clientConnection.js +17 -24
  67. package/dist/lib/core/network/context.d.ts +42 -0
  68. package/dist/lib/core/network/context.js +57 -0
  69. package/dist/lib/core/network/entryPoint.d.ts +62 -0
  70. package/dist/lib/core/network/entryPoint.js +261 -0
  71. package/dist/lib/core/network/httpRouter/index.d.ts +85 -0
  72. package/dist/lib/core/network/httpRouter/index.js +258 -0
  73. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +46 -0
  74. package/dist/lib/core/network/httpRouter/routeHandler.js +101 -0
  75. package/dist/lib/core/network/httpRouter/routePart.d.ts +35 -0
  76. package/dist/lib/core/network/httpRouter/routePart.js +117 -0
  77. package/dist/lib/core/network/protocolManifest.d.ts +6 -0
  78. package/{lib → dist/lib}/core/network/protocolManifest.js +5 -9
  79. package/dist/lib/core/network/protocols/httpMessage.d.ts +22 -0
  80. package/dist/lib/core/network/protocols/httpMessage.js +62 -0
  81. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +171 -0
  82. package/dist/lib/core/network/protocols/httpwsProtocol.js +921 -0
  83. package/dist/lib/core/network/protocols/internalProtocol.d.ts +27 -0
  84. package/dist/lib/core/network/protocols/internalProtocol.js +82 -0
  85. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +39 -0
  86. package/dist/lib/core/network/protocols/mqttProtocol.js +219 -0
  87. package/dist/lib/core/network/protocols/protocol.d.ts +26 -0
  88. package/dist/lib/core/network/protocols/protocol.js +74 -0
  89. package/dist/lib/core/network/router.d.ts +49 -0
  90. package/dist/lib/core/network/router.js +193 -0
  91. package/dist/lib/core/plugin/plugin.d.ts +56 -0
  92. package/dist/lib/core/plugin/plugin.js +282 -0
  93. package/{lib → dist/lib}/core/plugin/pluginContext.js +2 -2
  94. package/dist/lib/core/plugin/pluginManifest.d.ts +5 -0
  95. package/{lib → dist/lib}/core/plugin/pluginManifest.js +16 -27
  96. package/dist/lib/core/plugin/pluginRepository.d.ts +53 -0
  97. package/dist/lib/core/plugin/pluginRepository.js +112 -0
  98. package/dist/lib/core/plugin/pluginsManager.d.ts +190 -0
  99. package/dist/lib/core/plugin/pluginsManager.js +817 -0
  100. package/dist/lib/core/plugin/privilegedContext.d.ts +14 -0
  101. package/{lib → dist/lib}/core/plugin/privilegedContext.js +10 -14
  102. package/dist/lib/core/realtime/actionEnum.d.ts +25 -0
  103. package/{lib → dist/lib}/core/realtime/actionEnum.js +7 -10
  104. package/dist/lib/core/realtime/index.d.ts +8 -0
  105. package/{lib → dist/lib}/core/realtime/index.js +9 -13
  106. package/dist/lib/core/realtime/notification/document.d.ts +34 -0
  107. package/dist/lib/core/realtime/notification/document.js +98 -0
  108. package/dist/lib/core/realtime/notification/index.d.ts +3 -0
  109. package/{lib → dist/lib}/core/realtime/notification/index.js +4 -5
  110. package/dist/lib/core/realtime/notification/server.d.ts +17 -0
  111. package/{lib → dist/lib}/core/realtime/notification/server.js +8 -10
  112. package/dist/lib/core/realtime/notification/user.d.ts +29 -0
  113. package/dist/lib/core/realtime/notification/user.js +66 -0
  114. package/dist/lib/core/realtime/notifier.d.ts +171 -0
  115. package/dist/lib/core/realtime/notifier.js +405 -0
  116. package/dist/lib/core/security/index.d.ts +14 -0
  117. package/{lib → dist/lib}/core/security/index.js +15 -19
  118. package/dist/lib/core/security/roleRepository.d.ts +143 -0
  119. package/dist/lib/core/security/roleRepository.js +445 -0
  120. package/dist/lib/core/security/securityLoader.d.ts +24 -0
  121. package/dist/lib/core/security/securityLoader.js +125 -0
  122. package/{lib → dist/lib}/core/security/tokenRepository.js +1 -1
  123. package/dist/lib/core/security/userRepository.d.ts +81 -0
  124. package/dist/lib/core/security/userRepository.js +346 -0
  125. package/dist/lib/core/shared/abstractManifest.d.ts +27 -0
  126. package/dist/lib/core/shared/abstractManifest.js +85 -0
  127. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +7 -0
  128. package/dist/lib/core/shared/sdk/impersonatedSdk.js +80 -0
  129. package/{lib → dist/lib}/core/shared/store.d.ts +2 -2
  130. package/dist/lib/core/statistics/statistics.d.ts +94 -0
  131. package/dist/lib/core/statistics/statistics.js +287 -0
  132. package/dist/lib/core/storage/clientAdapter.d.ts +62 -0
  133. package/dist/lib/core/storage/clientAdapter.js +756 -0
  134. package/dist/lib/core/storage/storageEngine.d.ts +13 -0
  135. package/dist/lib/core/storage/storageEngine.js +52 -0
  136. package/dist/lib/core/validation/baseType.d.ts +35 -0
  137. package/dist/lib/core/validation/baseType.js +70 -0
  138. package/dist/lib/core/validation/types/anything.d.ts +10 -0
  139. package/{lib → dist/lib}/core/validation/types/anything.js +7 -10
  140. package/dist/lib/core/validation/types/boolean.d.ts +16 -0
  141. package/{lib → dist/lib}/core/validation/types/boolean.js +18 -23
  142. package/dist/lib/core/validation/types/date.d.ts +17 -0
  143. package/dist/lib/core/validation/types/date.js +215 -0
  144. package/dist/lib/core/validation/types/email.d.ts +17 -0
  145. package/dist/lib/core/validation/types/email.js +80 -0
  146. package/dist/lib/core/validation/types/enum.d.ts +17 -0
  147. package/dist/lib/core/validation/types/enum.js +70 -0
  148. package/dist/lib/core/validation/types/geoPoint.d.ts +17 -0
  149. package/{lib → dist/lib}/core/validation/types/geoPoint.js +19 -24
  150. package/dist/lib/core/validation/types/geoShape.d.ts +31 -0
  151. package/dist/lib/core/validation/types/geoShape.js +280 -0
  152. package/dist/lib/core/validation/types/integer.d.ts +7 -0
  153. package/{lib → dist/lib}/core/validation/types/integer.js +21 -27
  154. package/dist/lib/core/validation/types/ipAddress.d.ts +17 -0
  155. package/dist/lib/core/validation/types/ipAddress.js +73 -0
  156. package/dist/lib/core/validation/types/numeric.d.ts +17 -0
  157. package/dist/lib/core/validation/types/numeric.js +84 -0
  158. package/dist/lib/core/validation/types/object.d.ts +24 -0
  159. package/dist/lib/core/validation/types/object.js +74 -0
  160. package/dist/lib/core/validation/types/string.d.ts +17 -0
  161. package/dist/lib/core/validation/types/string.js +85 -0
  162. package/dist/lib/core/validation/types/url.d.ts +17 -0
  163. package/dist/lib/core/validation/types/url.js +73 -0
  164. package/dist/lib/core/validation/validation.d.ts +113 -0
  165. package/dist/lib/core/validation/validation.js +692 -0
  166. package/dist/lib/kerror/codes/0-core.json +194 -0
  167. package/dist/lib/kerror/codes/1-services.json +351 -0
  168. package/dist/lib/kerror/codes/2-api.json +195 -0
  169. package/dist/lib/kerror/codes/3-network.json +151 -0
  170. package/dist/lib/kerror/codes/4-plugin.json +498 -0
  171. package/dist/lib/kerror/codes/5-validation.json +158 -0
  172. package/dist/lib/kerror/codes/6-protocol.json +28 -0
  173. package/dist/lib/kerror/codes/7-security.json +283 -0
  174. package/dist/lib/kerror/codes/8-cluster.json +16 -0
  175. package/dist/lib/kerror/codes/index.d.ts +24 -0
  176. package/dist/lib/kerror/codes/index.js +140 -0
  177. package/{lib → dist/lib}/kerror/index.d.ts +5 -5
  178. package/{lib → dist/lib}/kuzzle/Logger.d.ts +6 -0
  179. package/{lib → dist/lib}/kuzzle/Logger.js +26 -5
  180. package/dist/lib/kuzzle/dumpGenerator.d.ts +14 -0
  181. package/dist/lib/kuzzle/dumpGenerator.js +180 -0
  182. package/dist/lib/kuzzle/event/pipeRunner.d.ts +30 -0
  183. package/dist/lib/kuzzle/event/pipeRunner.js +119 -0
  184. package/dist/lib/kuzzle/event/waterfall.d.ts +2 -0
  185. package/dist/lib/kuzzle/event/waterfall.js +90 -0
  186. package/dist/lib/kuzzle/internalIndexHandler.d.ts +186 -0
  187. package/dist/lib/kuzzle/internalIndexHandler.js +174 -0
  188. package/{lib → dist/lib}/kuzzle/kuzzle.d.ts +6 -7
  189. package/{lib → dist/lib}/kuzzle/kuzzle.js +5 -2
  190. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +20 -0
  191. package/{lib → dist/lib}/kuzzle/kuzzleStateEnum.js +5 -8
  192. package/dist/lib/kuzzle/vault.d.ts +2 -0
  193. package/dist/lib/kuzzle/vault.js +63 -0
  194. package/dist/lib/model/security/rights.d.ts +8 -0
  195. package/{lib → dist/lib}/model/security/rights.js +4 -8
  196. package/{lib → dist/lib}/model/security/role.d.ts +1 -1
  197. package/{lib → dist/lib}/model/security/user.d.ts +1 -0
  198. package/dist/lib/model/storage/apiKey.d.ts +49 -0
  199. package/dist/lib/model/storage/apiKey.js +126 -0
  200. package/dist/lib/model/storage/baseModel.d.ts +100 -0
  201. package/dist/lib/model/storage/baseModel.js +211 -0
  202. package/dist/lib/service/cache/redis.d.ts +74 -0
  203. package/dist/lib/service/cache/redis.js +237 -0
  204. package/dist/lib/service/service.d.ts +30 -0
  205. package/dist/lib/service/service.js +74 -0
  206. package/{lib → dist/lib}/service/storage/7/elasticsearch.d.ts +2 -2
  207. package/{lib → dist/lib}/service/storage/7/elasticsearch.js +23 -25
  208. package/dist/lib/service/storage/7/esWrapper.d.ts +19 -0
  209. package/dist/lib/service/storage/7/esWrapper.js +245 -0
  210. package/{lib → dist/lib}/service/storage/8/elasticsearch.js +23 -25
  211. package/dist/lib/service/storage/8/esWrapper.d.ts +19 -0
  212. package/dist/lib/service/storage/8/esWrapper.js +245 -0
  213. package/{lib → dist/lib}/types/Plugin.d.ts +1 -1
  214. package/{lib/types → dist/lib/types/controllers}/Controller.d.ts +2 -2
  215. package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.d.ts +1 -1
  216. package/dist/lib/types/controllers/adminControlller.type.d.ts +5 -0
  217. package/dist/lib/types/controllers/adminControlller.type.js +3 -0
  218. package/dist/lib/types/controllers/authController.type.d.ts +5 -0
  219. package/dist/lib/types/controllers/authController.type.js +3 -0
  220. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -0
  221. package/dist/lib/types/core/auth/formatProcessing.type.js +3 -0
  222. package/{lib → dist/lib}/types/index.d.ts +3 -3
  223. package/{lib → dist/lib}/types/index.js +3 -3
  224. package/dist/lib/util/assertType.d.ts +41 -0
  225. package/{lib → dist/lib}/util/assertType.js +38 -56
  226. package/dist/lib/util/asyncStore.d.ts +38 -0
  227. package/dist/lib/util/asyncStore.js +70 -0
  228. package/dist/lib/util/bytes.d.ts +2 -0
  229. package/dist/lib/util/bytes.js +33 -0
  230. package/dist/lib/util/debug.d.ts +2 -0
  231. package/{lib → dist/lib}/util/debug.js +15 -23
  232. package/dist/lib/util/deprecate.d.ts +1 -0
  233. package/dist/lib/util/deprecate.js +64 -0
  234. package/dist/lib/util/didYouMean.d.ts +2 -0
  235. package/{lib → dist/lib}/util/didYouMean.js +9 -15
  236. package/dist/lib/util/extractFields.d.ts +17 -0
  237. package/{lib → dist/lib}/util/extractFields.js +18 -32
  238. package/dist/lib/util/memoize.d.ts +7 -0
  239. package/{lib → dist/lib}/util/memoize.js +14 -21
  240. package/dist/lib/util/promback.d.ts +13 -0
  241. package/dist/lib/util/promback.js +60 -0
  242. package/dist/lib/util/requestAssertions.d.ts +10 -0
  243. package/dist/lib/util/requestAssertions.js +143 -0
  244. package/dist/lib/util/safeObject.d.ts +3 -0
  245. package/{lib → dist/lib}/util/safeObject.js +7 -13
  246. package/dist/lib/util/stackTrace.d.ts +19 -0
  247. package/{lib → dist/lib}/util/stackTrace.js +35 -41
  248. package/dist/lib/util/wildcard.d.ts +1 -0
  249. package/{lib → dist/lib}/util/wildcard.js +21 -30
  250. package/dist/package.json +120 -0
  251. package/package.json +45 -58
  252. package/bin/start-kuzzle-server +0 -126
  253. package/check-node-version.js +0 -17
  254. package/lib/api/controllers/adminController.js +0 -229
  255. package/lib/api/controllers/bulkController.js +0 -210
  256. package/lib/api/controllers/collectionController.js +0 -502
  257. package/lib/api/controllers/documentController.js +0 -1156
  258. package/lib/api/controllers/indexController.js +0 -179
  259. package/lib/api/controllers/memoryStorageController.js +0 -1023
  260. package/lib/api/controllers/realtimeController.js +0 -155
  261. package/lib/api/controllers/securityController.js +0 -1571
  262. package/lib/api/controllers/serverController.js +0 -381
  263. package/lib/api/documentExtractor.js +0 -309
  264. package/lib/api/funnel.js +0 -1143
  265. package/lib/api/httpRoutes.js +0 -1547
  266. package/lib/api/rateLimiter.js +0 -87
  267. package/lib/cluster/command.js +0 -284
  268. package/lib/cluster/node.js +0 -1203
  269. package/lib/cluster/publisher.js +0 -386
  270. package/lib/cluster/subscriber.js +0 -776
  271. package/lib/cluster/workers/IDCardRenewer.js +0 -144
  272. package/lib/config/index.js +0 -351
  273. package/lib/config/sdkCompatibility.json +0 -9
  274. package/lib/core/auth/formatProcessing.js +0 -66
  275. package/lib/core/auth/passportWrapper.js +0 -126
  276. package/lib/core/cache/cacheEngine.js +0 -278
  277. package/lib/core/network/accessLogger.js +0 -322
  278. package/lib/core/network/context.js +0 -80
  279. package/lib/core/network/entryPoint.js +0 -358
  280. package/lib/core/network/httpRouter/index.js +0 -316
  281. package/lib/core/network/httpRouter/routeHandler.js +0 -111
  282. package/lib/core/network/httpRouter/routePart.js +0 -147
  283. package/lib/core/network/protocols/httpMessage.js +0 -69
  284. package/lib/core/network/protocols/httpwsProtocol.js +0 -1254
  285. package/lib/core/network/protocols/internalProtocol.js +0 -109
  286. package/lib/core/network/protocols/mqttProtocol.js +0 -291
  287. package/lib/core/network/protocols/protocol.js +0 -102
  288. package/lib/core/network/router.js +0 -255
  289. package/lib/core/plugin/plugin.js +0 -436
  290. package/lib/core/plugin/pluginRepository.js +0 -132
  291. package/lib/core/plugin/pluginsManager.js +0 -1244
  292. package/lib/core/realtime/notification/document.js +0 -108
  293. package/lib/core/realtime/notification/user.js +0 -70
  294. package/lib/core/realtime/notifier.js +0 -541
  295. package/lib/core/security/README.md +0 -223
  296. package/lib/core/security/roleRepository.js +0 -569
  297. package/lib/core/security/securityLoader.js +0 -174
  298. package/lib/core/security/userRepository.js +0 -446
  299. package/lib/core/shared/README.md +0 -3
  300. package/lib/core/shared/abstractManifest.js +0 -102
  301. package/lib/core/shared/sdk/impersonatedSdk.js +0 -94
  302. package/lib/core/statistics/index.js +0 -24
  303. package/lib/core/statistics/statistics.js +0 -373
  304. package/lib/core/storage/clientAdapter.js +0 -1045
  305. package/lib/core/storage/storageEngine.js +0 -63
  306. package/lib/core/validation/baseType.js +0 -80
  307. package/lib/core/validation/index.js +0 -24
  308. package/lib/core/validation/types/date.js +0 -284
  309. package/lib/core/validation/types/email.js +0 -92
  310. package/lib/core/validation/types/enum.js +0 -100
  311. package/lib/core/validation/types/geoShape.js +0 -370
  312. package/lib/core/validation/types/ipAddress.js +0 -83
  313. package/lib/core/validation/types/numeric.js +0 -108
  314. package/lib/core/validation/types/object.js +0 -88
  315. package/lib/core/validation/types/string.js +0 -110
  316. package/lib/core/validation/types/url.js +0 -83
  317. package/lib/core/validation/validation.js +0 -1180
  318. package/lib/kerror/codes/0-core.json +0 -194
  319. package/lib/kerror/codes/1-services.json +0 -351
  320. package/lib/kerror/codes/2-api.json +0 -195
  321. package/lib/kerror/codes/3-network.json +0 -151
  322. package/lib/kerror/codes/4-plugin.json +0 -498
  323. package/lib/kerror/codes/5-validation.json +0 -158
  324. package/lib/kerror/codes/6-protocol.json +0 -28
  325. package/lib/kerror/codes/7-security.json +0 -283
  326. package/lib/kerror/codes/8-cluster.json +0 -16
  327. package/lib/kerror/codes/index.js +0 -208
  328. package/lib/kuzzle/dumpGenerator.js +0 -259
  329. package/lib/kuzzle/event/pipeRunner.js +0 -144
  330. package/lib/kuzzle/event/waterfall.js +0 -101
  331. package/lib/kuzzle/internalIndexHandler.js +0 -234
  332. package/lib/kuzzle/vault.js +0 -89
  333. package/lib/model/storage/apiKey.js +0 -158
  334. package/lib/model/storage/baseModel.js +0 -275
  335. package/lib/service/cache/redis.js +0 -282
  336. package/lib/service/service.js +0 -84
  337. package/lib/service/storage/7/esWrapper.js +0 -303
  338. package/lib/service/storage/8/esWrapper.js +0 -303
  339. package/lib/util/asyncStore.js +0 -112
  340. package/lib/util/bytes.js +0 -36
  341. package/lib/util/deprecate.js +0 -82
  342. package/lib/util/promback.js +0 -66
  343. package/lib/util/readYamlFile.d.ts +0 -2
  344. package/lib/util/readYamlFile.js +0 -10
  345. package/lib/util/requestAssertions.js +0 -157
  346. /package/{index.d.ts → dist/index.d.ts} +0 -0
  347. /package/{index.js → dist/index.js} +0 -0
  348. /package/{lib → dist/lib}/api/controllers/baseController.d.ts +0 -0
  349. /package/{lib → dist/lib}/api/controllers/baseController.js +0 -0
  350. /package/{lib → dist/lib}/api/controllers/debugController.d.ts +0 -0
  351. /package/{lib → dist/lib}/api/controllers/debugController.js +0 -0
  352. /package/{lib → dist/lib}/api/openapi/OpenApiManager.d.ts +0 -0
  353. /package/{lib → dist/lib}/api/openapi/OpenApiManager.js +0 -0
  354. /package/{lib → dist/lib}/api/openapi/index.d.ts +0 -0
  355. /package/{lib → dist/lib}/api/openapi/index.js +0 -0
  356. /package/{lib → dist/lib}/api/openapi/openApiGenerator.d.ts +0 -0
  357. /package/{lib → dist/lib}/api/openapi/openApiGenerator.js +0 -0
  358. /package/{lib → dist/lib}/api/request/index.d.ts +0 -0
  359. /package/{lib → dist/lib}/api/request/index.js +0 -0
  360. /package/{lib → dist/lib}/api/request/kuzzleRequest.js +0 -0
  361. /package/{lib → dist/lib}/api/request/requestContext.js +0 -0
  362. /package/{lib → dist/lib}/api/request/requestInput.d.ts +0 -0
  363. /package/{lib → dist/lib}/api/request/requestInput.js +0 -0
  364. /package/{lib → dist/lib}/api/request/requestResponse.d.ts +0 -0
  365. /package/{lib → dist/lib}/api/request/requestResponse.js +0 -0
  366. /package/{lib → dist/lib}/cluster/idCardHandler.d.ts +0 -0
  367. /package/{lib → dist/lib}/cluster/idCardHandler.js +0 -0
  368. /package/{lib → dist/lib}/cluster/protobuf/command.proto +0 -0
  369. /package/{lib → dist/lib}/cluster/protobuf/sync.proto +0 -0
  370. /package/{lib → dist/lib}/cluster/state.d.ts +0 -0
  371. /package/{lib → dist/lib}/cluster/state.js +0 -0
  372. /package/{lib → dist/lib}/config/default.config.d.ts +0 -0
  373. /package/{lib → dist/lib}/config/default.config.js +0 -0
  374. /package/{lib → dist/lib}/config/documentEventAliases.js +0 -0
  375. /package/{lib → dist/lib}/core/auth/tokenManager.d.ts +0 -0
  376. /package/{lib → dist/lib}/core/auth/tokenManager.js +0 -0
  377. /package/{lib → dist/lib}/core/backend/applicationManager.d.ts +0 -0
  378. /package/{lib → dist/lib}/core/backend/applicationManager.js +0 -0
  379. /package/{lib → dist/lib}/core/backend/backend.d.ts +0 -0
  380. /package/{lib → dist/lib}/core/backend/backend.js +0 -0
  381. /package/{lib → dist/lib}/core/backend/backendCluster.d.ts +0 -0
  382. /package/{lib → dist/lib}/core/backend/backendCluster.js +0 -0
  383. /package/{lib → dist/lib}/core/backend/backendConfig.d.ts +0 -0
  384. /package/{lib → dist/lib}/core/backend/backendController.d.ts +0 -0
  385. /package/{lib → dist/lib}/core/backend/backendController.js +0 -0
  386. /package/{lib → dist/lib}/core/backend/backendErrors.d.ts +0 -0
  387. /package/{lib → dist/lib}/core/backend/backendHook.d.ts +0 -0
  388. /package/{lib → dist/lib}/core/backend/backendHook.js +0 -0
  389. /package/{lib → dist/lib}/core/backend/backendImport.d.ts +0 -0
  390. /package/{lib → dist/lib}/core/backend/backendImport.js +0 -0
  391. /package/{lib → dist/lib}/core/backend/backendOpenApi.d.ts +0 -0
  392. /package/{lib → dist/lib}/core/backend/backendOpenApi.js +0 -0
  393. /package/{lib → dist/lib}/core/backend/backendPipe.d.ts +0 -0
  394. /package/{lib → dist/lib}/core/backend/backendPipe.js +0 -0
  395. /package/{lib → dist/lib}/core/backend/backendPlugin.d.ts +0 -0
  396. /package/{lib → dist/lib}/core/backend/backendPlugin.js +0 -0
  397. /package/{lib → dist/lib}/core/backend/backendStorage.d.ts +0 -0
  398. /package/{lib → dist/lib}/core/backend/backendStorage.js +0 -0
  399. /package/{lib → dist/lib}/core/backend/backendSubscription.d.ts +0 -0
  400. /package/{lib → dist/lib}/core/backend/backendSubscription.js +0 -0
  401. /package/{lib → dist/lib}/core/backend/backendVault.d.ts +0 -0
  402. /package/{lib → dist/lib}/core/backend/backendVault.js +0 -0
  403. /package/{lib → dist/lib}/core/backend/index.d.ts +0 -0
  404. /package/{lib → dist/lib}/core/backend/index.js +0 -0
  405. /package/{lib → dist/lib}/core/backend/internalLogger.d.ts +0 -0
  406. /package/{lib → dist/lib}/core/backend/internalLogger.js +0 -0
  407. /package/{lib → dist/lib}/core/cache/cacheDbEnum.d.ts +0 -0
  408. /package/{lib → dist/lib}/core/cache/cacheDbEnum.js +0 -0
  409. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.d.ts +0 -0
  410. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.js +0 -0
  411. /package/{lib → dist/lib}/core/plugin/pluginContext.d.ts +0 -0
  412. /package/{lib → dist/lib}/core/realtime/channel.d.ts +0 -0
  413. /package/{lib → dist/lib}/core/realtime/channel.js +0 -0
  414. /package/{lib → dist/lib}/core/realtime/connectionRooms.d.ts +0 -0
  415. /package/{lib → dist/lib}/core/realtime/connectionRooms.js +0 -0
  416. /package/{lib → dist/lib}/core/realtime/hotelClerk.d.ts +0 -0
  417. /package/{lib → dist/lib}/core/realtime/hotelClerk.js +0 -0
  418. /package/{lib → dist/lib}/core/realtime/room.d.ts +0 -0
  419. /package/{lib → dist/lib}/core/realtime/room.js +0 -0
  420. /package/{lib → dist/lib}/core/realtime/subscription.d.ts +0 -0
  421. /package/{lib → dist/lib}/core/realtime/subscription.js +0 -0
  422. /package/{lib → dist/lib}/core/security/profileRepository.d.ts +0 -0
  423. /package/{lib → dist/lib}/core/security/profileRepository.js +0 -0
  424. /package/{lib → dist/lib}/core/security/tokenRepository.d.ts +0 -0
  425. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.d.ts +0 -0
  426. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.js +0 -0
  427. /package/{lib → dist/lib}/core/shared/ObjectRepository.d.ts +0 -0
  428. /package/{lib → dist/lib}/core/shared/ObjectRepository.js +0 -0
  429. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.d.ts +0 -0
  430. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.js +0 -0
  431. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.d.ts +0 -0
  432. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.js +0 -0
  433. /package/{lib → dist/lib}/core/shared/store.js +0 -0
  434. /package/{lib → dist/lib}/core/storage/indexCache.d.ts +0 -0
  435. /package/{lib → dist/lib}/core/storage/indexCache.js +0 -0
  436. /package/{lib → dist/lib}/core/storage/storeScopeEnum.d.ts +0 -0
  437. /package/{lib → dist/lib}/core/storage/storeScopeEnum.js +0 -0
  438. /package/{lib → dist/lib}/kerror/errors/badRequestError.d.ts +0 -0
  439. /package/{lib → dist/lib}/kerror/errors/badRequestError.js +0 -0
  440. /package/{lib → dist/lib}/kerror/errors/externalServiceError.d.ts +0 -0
  441. /package/{lib → dist/lib}/kerror/errors/externalServiceError.js +0 -0
  442. /package/{lib → dist/lib}/kerror/errors/forbiddenError.d.ts +0 -0
  443. /package/{lib → dist/lib}/kerror/errors/forbiddenError.js +0 -0
  444. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.d.ts +0 -0
  445. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.js +0 -0
  446. /package/{lib → dist/lib}/kerror/errors/index.d.ts +0 -0
  447. /package/{lib → dist/lib}/kerror/errors/index.js +0 -0
  448. /package/{lib → dist/lib}/kerror/errors/internalError.d.ts +0 -0
  449. /package/{lib → dist/lib}/kerror/errors/internalError.js +0 -0
  450. /package/{lib → dist/lib}/kerror/errors/kuzzleError.d.ts +0 -0
  451. /package/{lib → dist/lib}/kerror/errors/kuzzleError.js +0 -0
  452. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.d.ts +0 -0
  453. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.js +0 -0
  454. /package/{lib → dist/lib}/kerror/errors/notFoundError.d.ts +0 -0
  455. /package/{lib → dist/lib}/kerror/errors/notFoundError.js +0 -0
  456. /package/{lib → dist/lib}/kerror/errors/partialError.d.ts +0 -0
  457. /package/{lib → dist/lib}/kerror/errors/partialError.js +0 -0
  458. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.d.ts +0 -0
  459. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.js +0 -0
  460. /package/{lib → dist/lib}/kerror/errors/preconditionError.d.ts +0 -0
  461. /package/{lib → dist/lib}/kerror/errors/preconditionError.js +0 -0
  462. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.d.ts +0 -0
  463. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.js +0 -0
  464. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.d.ts +0 -0
  465. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.js +0 -0
  466. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.d.ts +0 -0
  467. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.js +0 -0
  468. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.d.ts +0 -0
  469. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.js +0 -0
  470. /package/{lib → dist/lib}/kerror/index.js +0 -0
  471. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.d.ts +0 -0
  472. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.js +0 -0
  473. /package/{lib → dist/lib}/kuzzle/index.d.ts +0 -0
  474. /package/{lib → dist/lib}/kuzzle/index.js +0 -0
  475. /package/{lib → dist/lib}/model/security/profile.d.ts +0 -0
  476. /package/{lib → dist/lib}/model/security/profile.js +0 -0
  477. /package/{lib → dist/lib}/model/security/role.js +0 -0
  478. /package/{lib → dist/lib}/model/security/token.d.ts +0 -0
  479. /package/{lib → dist/lib}/model/security/token.js +0 -0
  480. /package/{lib → dist/lib}/model/security/user.js +0 -0
  481. /package/{lib → dist/lib}/service/storage/8/elasticsearch.d.ts +0 -0
  482. /package/{lib → dist/lib}/service/storage/Elasticsearch.d.ts +0 -0
  483. /package/{lib → dist/lib}/service/storage/Elasticsearch.js +0 -0
  484. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.d.ts +0 -0
  485. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.js +0 -0
  486. /package/{lib → dist/lib}/types/ClientConnection.d.ts +0 -0
  487. /package/{lib → dist/lib}/types/ClientConnection.js +0 -0
  488. /package/{lib → dist/lib}/types/Deprecation.d.ts +0 -0
  489. /package/{lib → dist/lib}/types/Deprecation.js +0 -0
  490. /package/{lib → dist/lib}/types/EventHandler.d.ts +0 -0
  491. /package/{lib → dist/lib}/types/EventHandler.js +0 -0
  492. /package/{lib → dist/lib}/types/Global.d.ts +0 -0
  493. /package/{lib → dist/lib}/types/Global.js +0 -0
  494. /package/{lib → dist/lib}/types/HttpMessage.d.ts +0 -0
  495. /package/{lib → dist/lib}/types/HttpMessage.js +0 -0
  496. /package/{lib → dist/lib}/types/HttpStream.d.ts +0 -0
  497. /package/{lib → dist/lib}/types/HttpStream.js +0 -0
  498. /package/{lib → dist/lib}/types/Kuzzle.d.ts +0 -0
  499. /package/{lib → dist/lib}/types/Kuzzle.js +0 -0
  500. /package/{lib → dist/lib}/types/KuzzleDocument.d.ts +0 -0
  501. /package/{lib → dist/lib}/types/KuzzleDocument.js +0 -0
  502. /package/{lib → dist/lib}/types/OpenApiDefinition.d.ts +0 -0
  503. /package/{lib → dist/lib}/types/OpenApiDefinition.js +0 -0
  504. /package/{lib → dist/lib}/types/PasswordPolicy.d.ts +0 -0
  505. /package/{lib → dist/lib}/types/PasswordPolicy.js +0 -0
  506. /package/{lib → dist/lib}/types/Plugin.js +0 -0
  507. /package/{lib → dist/lib}/types/PluginManifest.d.ts +0 -0
  508. /package/{lib → dist/lib}/types/PluginManifest.js +0 -0
  509. /package/{lib → dist/lib}/types/Policy.d.ts +0 -0
  510. /package/{lib → dist/lib}/types/Policy.js +0 -0
  511. /package/{lib → dist/lib}/types/PolicyRestrictions.d.ts +0 -0
  512. /package/{lib → dist/lib}/types/PolicyRestrictions.js +0 -0
  513. /package/{lib → dist/lib}/types/ProfileDefinition.d.ts +0 -0
  514. /package/{lib → dist/lib}/types/ProfileDefinition.js +0 -0
  515. /package/{lib → dist/lib}/types/RoleDefinition.d.ts +0 -0
  516. /package/{lib → dist/lib}/types/RoleDefinition.js +0 -0
  517. /package/{lib → dist/lib}/types/StrategyDefinition.d.ts +0 -0
  518. /package/{lib → dist/lib}/types/StrategyDefinition.js +0 -0
  519. /package/{lib → dist/lib}/types/Target.d.ts +0 -0
  520. /package/{lib → dist/lib}/types/Target.js +0 -0
  521. /package/{lib → dist/lib}/types/Token.d.ts +0 -0
  522. /package/{lib → dist/lib}/types/Token.js +0 -0
  523. /package/{lib → dist/lib}/types/User.d.ts +0 -0
  524. /package/{lib → dist/lib}/types/User.js +0 -0
  525. /package/{lib → dist/lib}/types/config/DumpConfiguration.d.ts +0 -0
  526. /package/{lib → dist/lib}/types/config/DumpConfiguration.js +0 -0
  527. /package/{lib → dist/lib}/types/config/HttpConfiguration.d.ts +0 -0
  528. /package/{lib → dist/lib}/types/config/HttpConfiguration.js +0 -0
  529. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.d.ts +0 -0
  530. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.js +0 -0
  531. /package/{lib → dist/lib}/types/config/LimitsConfiguration.d.ts +0 -0
  532. /package/{lib → dist/lib}/types/config/LimitsConfiguration.js +0 -0
  533. /package/{lib → dist/lib}/types/config/PluginsConfiguration.d.ts +0 -0
  534. /package/{lib → dist/lib}/types/config/PluginsConfiguration.js +0 -0
  535. /package/{lib → dist/lib}/types/config/SecurityConfiguration.d.ts +0 -0
  536. /package/{lib → dist/lib}/types/config/SecurityConfiguration.js +0 -0
  537. /package/{lib → dist/lib}/types/config/ServerConfiguration.d.ts +0 -0
  538. /package/{lib → dist/lib}/types/config/ServerConfiguration.js +0 -0
  539. /package/{lib → dist/lib}/types/config/ServicesConfiguration.d.ts +0 -0
  540. /package/{lib → dist/lib}/types/config/ServicesConfiguration.js +0 -0
  541. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +0 -0
  542. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.js +0 -0
  543. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +0 -0
  544. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.js +0 -0
  545. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +0 -0
  546. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.js +0 -0
  547. /package/{lib/types → dist/lib/types/controllers}/Controller.js +0 -0
  548. /package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.js +0 -0
  549. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.d.ts +0 -0
  550. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.js +0 -0
  551. /package/{lib → dist/lib}/types/errors/ErrorDefinition.d.ts +0 -0
  552. /package/{lib → dist/lib}/types/errors/ErrorDefinition.js +0 -0
  553. /package/{lib → dist/lib}/types/errors/ErrorDomains.d.ts +0 -0
  554. /package/{lib → dist/lib}/types/errors/ErrorDomains.js +0 -0
  555. /package/{lib → dist/lib}/types/events/EventGenericDocument.d.ts +0 -0
  556. /package/{lib → dist/lib}/types/events/EventGenericDocument.js +0 -0
  557. /package/{lib → dist/lib}/types/events/EventProtocol.d.ts +0 -0
  558. /package/{lib → dist/lib}/types/events/EventProtocol.js +0 -0
  559. /package/{lib → dist/lib}/types/realtime/RealtimeScope.d.ts +0 -0
  560. /package/{lib → dist/lib}/types/realtime/RealtimeScope.js +0 -0
  561. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.d.ts +0 -0
  562. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.js +0 -0
  563. /package/{lib → dist/lib}/types/realtime/RoomList.d.ts +0 -0
  564. /package/{lib → dist/lib}/types/realtime/RoomList.js +0 -0
  565. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.d.ts +0 -0
  566. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.js +0 -0
  567. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.d.ts +0 -0
  568. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.js +0 -0
  569. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.d.ts +0 -0
  570. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.js +0 -0
  571. /package/{lib → dist/lib}/util/Inflector.d.ts +0 -0
  572. /package/{lib → dist/lib}/util/Inflector.js +0 -0
  573. /package/{lib → dist/lib}/util/array.d.ts +0 -0
  574. /package/{lib → dist/lib}/util/array.js +0 -0
  575. /package/{lib → dist/lib}/util/async.d.ts +0 -0
  576. /package/{lib → dist/lib}/util/async.js +0 -0
  577. /package/{lib → dist/lib}/util/bufferedPassThrough.d.ts +0 -0
  578. /package/{lib → dist/lib}/util/bufferedPassThrough.js +0 -0
  579. /package/{lib → dist/lib}/util/crypto.d.ts +0 -0
  580. /package/{lib → dist/lib}/util/crypto.js +0 -0
  581. /package/{lib → dist/lib}/util/dump-collection.d.ts +0 -0
  582. /package/{lib → dist/lib}/util/dump-collection.js +0 -0
  583. /package/{lib → dist/lib}/util/esRequest.d.ts +0 -0
  584. /package/{lib → dist/lib}/util/esRequest.js +0 -0
  585. /package/{lib → dist/lib}/util/koncordeCompat.d.ts +0 -0
  586. /package/{lib → dist/lib}/util/koncordeCompat.js +0 -0
  587. /package/{lib → dist/lib}/util/mutex.d.ts +0 -0
  588. /package/{lib → dist/lib}/util/mutex.js +0 -0
  589. /package/{lib → dist/lib}/util/name-generator.d.ts +0 -0
  590. /package/{lib → dist/lib}/util/name-generator.js +0 -0
  591. /package/{lib → dist/lib}/util/time.d.ts +0 -0
  592. /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