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,756 @@
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 { Elasticsearch } = require("../../service/storage/Elasticsearch");
23
+ const { IndexCache } = require("./indexCache");
24
+ const { isPlainObject } = require("../../util/safeObject");
25
+ const kerror = require("../../kerror");
26
+ const { Mutex } = require("../../util/mutex");
27
+ const servicesError = kerror.wrap("services", "storage");
28
+ /**
29
+ * Storage client adapter to perform validation on index/collection existence
30
+ * and to maintain the index/collection cache.
31
+ */
32
+ class ClientAdapter {
33
+ /**
34
+ * @param {storeScopeEnum} scope
35
+ */
36
+ constructor(scope) {
37
+ this.es = new Elasticsearch(global.kuzzle.config.services.storageEngine, scope);
38
+ this.client = this.es.client;
39
+ this.scope = scope;
40
+ this.cache = new IndexCache();
41
+ }
42
+ async init() {
43
+ await this.es.init();
44
+ await this.populateCache();
45
+ this.registerCollectionEvents();
46
+ this.registerIndexEvents();
47
+ this.registerDocumentEvents();
48
+ this.registerMappingEvents();
49
+ this.registerCacheEvents();
50
+ // Global store events registration
51
+ /**
52
+ * Manually refresh the index cache (e.g. after alias creation)
53
+ */
54
+ global.kuzzle.onAsk(`core:storage:${this.scope}:cache:refresh`, () => this.populateCache());
55
+ /**
56
+ * Return information about the instantiated ES service
57
+ * @returns {Promise.<Object>}
58
+ */
59
+ global.kuzzle.onAsk(`core:storage:${this.scope}:info:get`, () => this.client.info());
60
+ /**
61
+ * Translate Koncorde filters to Elasticsearch query
62
+ *
63
+ * @param {Object} koncordeFilters - Set of valid Koncorde filters
64
+ * @returns {Object} Equivalent Elasticsearch query
65
+ */
66
+ global.kuzzle.onAsk(`core:storage:${this.scope}:translate`, (filters) => this.client.translateKoncordeFilters(filters));
67
+ }
68
+ async createIndex(index, { indexCacheOnly = false, propagate = true } = {}) {
69
+ if (this.cache.hasIndex(index)) {
70
+ throw servicesError.get("index_already_exists", this.scope, index);
71
+ }
72
+ if (!indexCacheOnly) {
73
+ await this.client.createIndex(index);
74
+ }
75
+ this.cache.addIndex(index);
76
+ if (propagate) {
77
+ global.kuzzle.emit("core:storage:index:create:after", {
78
+ index,
79
+ scope: this.scope,
80
+ });
81
+ }
82
+ }
83
+ async createCollection(index, collection, opts, { indexCacheOnly = false, propagate = true } = {}) {
84
+ if (!indexCacheOnly) {
85
+ await this.client.createCollection(index, collection, opts);
86
+ }
87
+ this.cache.addCollection(index, collection);
88
+ if (propagate) {
89
+ global.kuzzle.emit("core:storage:collection:create:after", {
90
+ collection,
91
+ index,
92
+ scope: this.scope,
93
+ });
94
+ }
95
+ }
96
+ async deleteIndex(index) {
97
+ this.cache.assertIndexExists(index);
98
+ await this.client.deleteIndex(index);
99
+ this.cache.removeIndex(index);
100
+ global.kuzzle.emit("core:storage:index:delete:after", {
101
+ index,
102
+ scope: this.scope,
103
+ });
104
+ }
105
+ async deleteIndexes(indexes) {
106
+ for (const index of indexes) {
107
+ this.cache.assertIndexExists(index);
108
+ }
109
+ const deleted = await this.client.deleteIndexes(indexes);
110
+ if (deleted.length > 0) {
111
+ for (const index of deleted) {
112
+ this.cache.removeIndex(index);
113
+ }
114
+ global.kuzzle.emit("core:storage:index:mDelete:after", {
115
+ indexes: deleted,
116
+ scope: this.scope,
117
+ });
118
+ }
119
+ return deleted;
120
+ }
121
+ async deleteCollection(index, collection) {
122
+ this.cache.assertCollectionExists(index, collection);
123
+ await this.client.deleteCollection(index, collection);
124
+ this.cache.removeCollection(index, collection);
125
+ global.kuzzle.emit("core:storage:collection:delete:after", {
126
+ collection,
127
+ index,
128
+ scope: this.scope,
129
+ });
130
+ }
131
+ /**
132
+ * Populates the index cache with existing index/collection.
133
+ * Also checks for duplicated index names.
134
+ */
135
+ async populateCache() {
136
+ if (global.kuzzle.config.services.storageEngine.generateMissingAliases) {
137
+ await this.client.generateMissingAliases();
138
+ }
139
+ const schema = await this.client.getSchema();
140
+ for (const [index, collections] of Object.entries(schema)) {
141
+ this.cache.addIndex(index);
142
+ for (const collection of collections) {
143
+ this.cache.addCollection(index, collection);
144
+ }
145
+ }
146
+ }
147
+ registerCollectionEvents() {
148
+ /**
149
+ * Create a new collection in a given index, and optionally configure it
150
+ * @param {string} index
151
+ * @param {string} collection
152
+ * @param {Object.<settings: {}, mappings: {}} [opts]
153
+ * @param {Object} creationOptions
154
+ * @return {Promise}
155
+ * @throws
156
+ */
157
+ global.kuzzle.onAsk(`core:storage:${this.scope}:collection:create`, (index, collection, opts, creationOptions) => this.createCollection(index, collection, opts, creationOptions));
158
+ /**
159
+ * Delete a collection
160
+ * @param {string} index
161
+ * @param {string} collection
162
+ * @return {Promise}
163
+ * @throws If the index or the collection does not exist
164
+ */
165
+ global.kuzzle.onAsk(`core:storage:${this.scope}:collection:delete`, (index, collection) => this.deleteCollection(index, collection));
166
+ /**
167
+ * Get settings of a collection
168
+ * @param {string} index
169
+ * @param {string} collection
170
+ */
171
+ global.kuzzle.onAsk(`core:storage:${this.scope}:collection:settings:get`, (index, collection) => {
172
+ this.cache.assertCollectionExists(index, collection);
173
+ return this.client.getSettings(index, collection);
174
+ });
175
+ /**
176
+ * Check a collection existence
177
+ * @param {string} index
178
+ * @param {string} collection
179
+ */
180
+ global.kuzzle.onAsk(`core:storage:${this.scope}:collection:exist`, (index, collection) => this.cache.hasCollection(index, collection));
181
+ /**
182
+ * Return a list of an index' collections within this adapter's scope
183
+ * @param {string} index
184
+ * @returns {Promise.<string[]>}
185
+ */
186
+ global.kuzzle.onAsk(`core:storage:${this.scope}:collection:list`, (index) => this.cache.listCollections(index));
187
+ /**
188
+ * Refresh a collection
189
+ * @param {string} index
190
+ * @param {string} collection
191
+ * @returns {Promise}
192
+ */
193
+ global.kuzzle.onAsk(`core:storage:${this.scope}:collection:refresh`, (index, collection) => {
194
+ this.cache.assertCollectionExists(index, collection);
195
+ return this.client.refreshCollection(index, collection);
196
+ });
197
+ /**
198
+ * Remove all documents from an existing collection
199
+ * @param {string} index
200
+ * @param {string} collection
201
+ * @returns {Promise}
202
+ */
203
+ global.kuzzle.onAsk(`core:storage:${this.scope}:collection:truncate`, (index, collection) => {
204
+ this.cache.assertCollectionExists(index, collection);
205
+ return this.client.truncateCollection(index, collection);
206
+ });
207
+ /**
208
+ * Update a collection settings and mappings
209
+ * @param {string} index
210
+ * @param {string} collection
211
+ * @param {Object} changes
212
+ * @returns {Promise}
213
+ */
214
+ global.kuzzle.onAsk(`core:storage:${this.scope}:collection:update`, (index, collection, changes) => {
215
+ this.cache.assertCollectionExists(index, collection);
216
+ return this.client.updateCollection(index, collection, changes);
217
+ });
218
+ }
219
+ registerIndexEvents() {
220
+ /**
221
+ * Create a new index within this adapter scope
222
+ * @param {string} index
223
+ * @param {Object} options
224
+ * @returns {Promise}
225
+ * @throws
226
+ */
227
+ global.kuzzle.onAsk(`core:storage:${this.scope}:index:create`, (index, options) => this.createIndex(index, options));
228
+ /**
229
+ * Delete an index
230
+ * @param {string} index
231
+ * @return {Promise}
232
+ * @throws If the index does not exist
233
+ */
234
+ global.kuzzle.onAsk(`core:storage:${this.scope}:index:delete`, (index) => this.deleteIndex(index));
235
+ /**
236
+ * Check an index existence
237
+ * @param {string} index
238
+ * @return {Promise.<boolean>}
239
+ */
240
+ global.kuzzle.onAsk(`core:storage:${this.scope}:index:exist`, (index) => this.cache.hasIndex(index));
241
+ /**
242
+ * Return a list of all indexes within this adapter's scope
243
+ * @returns {string[]}
244
+ */
245
+ global.kuzzle.onAsk(`core:storage:${this.scope}:index:list`, () => this.cache.listIndexes());
246
+ /**
247
+ * Delete multiple indexes
248
+ * @param {string[]} indexes
249
+ * @return {Promise}
250
+ * @throws If at least one index does not exist
251
+ */
252
+ global.kuzzle.onAsk(`core:storage:${this.scope}:index:mDelete`, (indexes) => this.deleteIndexes(indexes));
253
+ /**
254
+ * Return detailed storage stats within this adapter's scope
255
+ * @returns {Promise.<Object>}
256
+ */
257
+ global.kuzzle.onAsk(`core:storage:${this.scope}:index:stats`, () => this.client.stats());
258
+ }
259
+ registerDocumentEvents() {
260
+ /**
261
+ * Execute actions on documents in bulk
262
+ *
263
+ * @param {string} index
264
+ * @param {string} collection
265
+ * @param {Object[]} bulk data, in ES format
266
+ * @param {Object} [opts] -- see Elasticsearch "import" options
267
+ * @returns {Promise.<{ items, errors }>
268
+ */
269
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:bulk`, (index, collection, bulk, opts) => {
270
+ this.cache.assertCollectionExists(index, collection);
271
+ return this.client.import(index, collection, bulk, opts);
272
+ });
273
+ /**
274
+ * Count how many documents match the provided query
275
+ *
276
+ * @param {string} index
277
+ * @param {string} collection
278
+ * @param {Object} query -- search query
279
+ * @return {Promise.<Number>}
280
+ */
281
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:count`, (index, collection, query) => {
282
+ this.cache.assertCollectionExists(index, collection);
283
+ return this.client.count(index, collection, query);
284
+ });
285
+ /**
286
+ * Create a document
287
+ *
288
+ * @param {string} index
289
+ * @param {string} collection
290
+ * @param {Object} content
291
+ * @param {Object} [opts] -- see Elasticsearch "create" options
292
+ * @returns {Promise.<{ _id, _version, _source }>}
293
+ */
294
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:create`, (index, collection, content, opts) => {
295
+ this.cache.assertCollectionExists(index, collection);
296
+ return this.client.create(index, collection, content, opts);
297
+ });
298
+ /**
299
+ * Create or replace a document
300
+ *
301
+ * @param {string} index
302
+ * @param {string} collection
303
+ * @param {string} id -- document unique identifier
304
+ * @param {Object} content
305
+ * @param {Object} [opts] -- see Elasticsearch "createOrReplace" options
306
+ * @returns {Promise.<{ _id, _version, _source, created }>}
307
+ */
308
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:createOrReplace`, (index, collection, id, content, opts) => {
309
+ this.cache.assertCollectionExists(index, collection);
310
+ return this.client.createOrReplace(index, collection, id, content, opts);
311
+ });
312
+ /**
313
+ * Delete a document
314
+ *
315
+ * @param {string} index
316
+ * @param {string} collection
317
+ * @param {string} id
318
+ * @param {Object} [opts] -- see Elasticsearch "delete" options
319
+ * @returns {Promise}
320
+ */
321
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:delete`, (index, collection, id, opts) => {
322
+ this.cache.assertCollectionExists(index, collection);
323
+ return this.client.delete(index, collection, id, opts);
324
+ });
325
+ /**
326
+ * Delete all documents matching the provided search query
327
+ *
328
+ * @param {string} index
329
+ * @param {string} collection
330
+ * @param {Object} query
331
+ * @param {Object} [opts] -- see Elasticsearch "deleteByQuery" options
332
+ * @returns {Promise.<{ documents, total, deleted, failures: [ id, reason ] }>}
333
+ */
334
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:deleteByQuery`, (index, collection, query, opts) => {
335
+ this.cache.assertCollectionExists(index, collection);
336
+ return this.client.deleteByQuery(index, collection, query, opts);
337
+ });
338
+ /**
339
+ * Delete fields of a document
340
+ *
341
+ * @param {string} index
342
+ * @param {string} collection
343
+ * @param {string} id
344
+ * @param {Array} fields -- fields to delete
345
+ * @param {Object} [opts] -- see Elasticsearch "deleteFields" options
346
+ * @returns {Promise.<{ _id, _version, _source }>}
347
+ */
348
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:deleteFields`, (index, collection, id, fields, opts) => {
349
+ this.cache.assertCollectionExists(index, collection);
350
+ return this.client.deleteFields(index, collection, id, fields, opts);
351
+ });
352
+ /**
353
+ * Check if a document exists
354
+ *
355
+ * @param {string} index
356
+ * @param {string} collection
357
+ * @param {string} id -- document unique identifier
358
+ * @returns {Promise.<boolean>}
359
+ */
360
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:exist`, (index, collection, id) => {
361
+ this.cache.assertCollectionExists(index, collection);
362
+ return this.client.exists(index, collection, id);
363
+ });
364
+ /**
365
+ * Check if a document multiple document Exists
366
+ *
367
+ * @param {string} index
368
+ * @param {string} collection
369
+ * @param {string} id -- document unique identifier
370
+ * @returns {Promise.<boolean>}
371
+ */
372
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:mExists`, (index, collection, ids) => {
373
+ this.cache.assertCollectionExists(index, collection);
374
+ return this.client.mExists(index, collection, ids);
375
+ });
376
+ /**
377
+ * Get a document using its unique id
378
+ *
379
+ * @param {string} index
380
+ * @param {string} collection
381
+ * @param {string} id -- document unique identifier
382
+ * @returns {Promise.<{ _id, _version, _source }>}
383
+ */
384
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:get`, (index, collection, id) => {
385
+ this.cache.assertCollectionExists(index, collection);
386
+ return this.client.get(index, collection, id);
387
+ });
388
+ /**
389
+ * Import documents as fixtures
390
+ * @param {Objects} fixtures
391
+ * @return {Promise}
392
+ */
393
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:import`, (fixtures, options) => this.loadFixtures(fixtures, options));
394
+ /**
395
+ * Create multiple documents
396
+ *
397
+ * @param {string} index
398
+ * @param {string} collection
399
+ * @param {Object[]} documents
400
+ * @param {Object} [opts] -- see Elasticsearch "mCreate" options
401
+ * @returns {Promise.<{ items, errors }>
402
+ */
403
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:mCreate`, (index, collection, documents, opts) => {
404
+ this.cache.assertCollectionExists(index, collection);
405
+ return this.client.mCreate(index, collection, documents, opts);
406
+ });
407
+ /**
408
+ * Create or replace multiple documents
409
+ *
410
+ * @param {string} index
411
+ * @param {string} collection
412
+ * @param {Object[]} documents
413
+ * @param {Object} [opts] -- see Elasticsearch "mCreateOrReplace" options
414
+ * @returns {Promise.<{ items, errors }>
415
+ */
416
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:mCreateOrReplace`, (index, collection, documents, opts) => {
417
+ this.cache.assertCollectionExists(index, collection);
418
+ return this.client.mCreateOrReplace(index, collection, documents, opts);
419
+ });
420
+ /**
421
+ * Delete multiple documents
422
+ *
423
+ * @param {string} index
424
+ * @param {string} collection
425
+ * @param {string[]} ids
426
+ * @param {Object} [opts] -- see Elasticsearch "mDelete" options
427
+ * @returns {Promise.<{ documents, errors }>
428
+ */
429
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:mDelete`, (index, collection, ids, opts) => {
430
+ this.cache.assertCollectionExists(index, collection);
431
+ return this.client.mDelete(index, collection, ids, opts);
432
+ });
433
+ /**
434
+ * Replace multiple documents
435
+ *
436
+ * @param {string} index
437
+ * @param {string} collection
438
+ * @param {Object[]} documents
439
+ * @param {Object} [opts] -- see Elasticsearch "mReplace" options
440
+ * @returns {Promise.<{ items, errors }>
441
+ */
442
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:mReplace`, (index, collection, documents, opts) => {
443
+ this.cache.assertCollectionExists(index, collection);
444
+ return this.client.mReplace(index, collection, documents, opts);
445
+ });
446
+ /**
447
+ * Update multiple documents
448
+ *
449
+ * @param {string} index
450
+ * @param {string} collection
451
+ * @param {Object[]} documents
452
+ * @param {Object} [opts] -- see Elasticsearch "mUpdate" options
453
+ * @returns {Promise.<{ items, errors }>
454
+ */
455
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:mUpdate`, (index, collection, documents, opts) => {
456
+ this.cache.assertCollectionExists(index, collection);
457
+ return this.client.mUpdate(index, collection, documents, opts);
458
+ });
459
+ /**
460
+ * Applies a partial update to documents provided in the body.
461
+ * If some of the documents don't already exist, they will be created.
462
+ *
463
+ * @param {string} index
464
+ * @param {string} collection
465
+ * @param {Object[]} documents
466
+ * @param {Object} [opts] -- see Elasticsearch "mUpsert" options
467
+ * @returns {Promise.<{ items, errors }>
468
+ */
469
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:mUpsert`, (index, collection, documents, opts) => {
470
+ this.cache.assertCollectionExists(index, collection);
471
+ return this.client.mUpsert(index, collection, documents, opts);
472
+ });
473
+ /**
474
+ * Apply the provided callback to all documents matching a search query
475
+ *
476
+ * @param {string} index
477
+ * @param {string} collection
478
+ * @param {Object} query -- search query (ES format)
479
+ * @param {Function} callback -- callback applied to matched documents
480
+ * @param {Object} [opts] -- see Elasticsearch "mExecute" options
481
+ * @returns {Promise.<any[]>} Array of results returned by the callback
482
+ */
483
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:mExecute`, (index, collection, query, callback, opts) => {
484
+ this.cache.assertCollectionExists(index, collection);
485
+ return this.client.mExecute(index, collection, query, callback, opts);
486
+ });
487
+ /**
488
+ * Get multiple documents using their ids
489
+ *
490
+ * @param {string} index
491
+ * @param {string} collection
492
+ * @param {string[]} ids
493
+ * @returns {Promise.<{ items: [ _id, _source, _version ], errors }>}
494
+ */
495
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:mGet`, (index, collection, ids) => {
496
+ this.cache.assertCollectionExists(index, collection);
497
+ return this.client.mGet(index, collection, ids);
498
+ });
499
+ /**
500
+ * Replace the content of a document
501
+ *
502
+ * @param {string} index
503
+ * @param {string} collection
504
+ * @param {string} id
505
+ * @param {Object} content -- new document content
506
+ * @param {Object} [opts] -- see Elasticsearch "replace" options
507
+ * @returns {Promise.<{ _id, _version, _source }>}
508
+ */
509
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:replace`, (index, collection, id, content, opts) => {
510
+ this.cache.assertCollectionExists(index, collection);
511
+ return this.client.replace(index, collection, id, content, opts);
512
+ });
513
+ /**
514
+ * Fetch the next page of results of a search query
515
+ *
516
+ * @param {string} scrollId
517
+ * @param {Object} [opts] -- see Elasticsearch "scroll" options
518
+ * @returns {Promise.<{ scrollId, hits, aggregations, total }>}
519
+ */
520
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:scroll`, (scrollId, opts) => this.client.scroll(scrollId, opts));
521
+ /**
522
+ * Search for documents
523
+ *
524
+ * @param {string} index
525
+ * @param {string} collection
526
+ * @param {Object} searchBody -- search query, in ES format
527
+ * @param {Object} [opts] -- see Elasticsearch "search" options
528
+ * @returns {Promise.<{ scrollId, hits, aggregations, total }>}
529
+ */
530
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:search`, (index, collection, searchBody, opts) => {
531
+ this.cache.assertCollectionExists(index, collection);
532
+ return this.client.search({ collection, index, searchBody }, opts);
533
+ });
534
+ /**
535
+ * Search for multiples documents
536
+ *
537
+ * @param {Object[]} targets
538
+ * @param {Object} searchBody -- search query, in ES format
539
+ * @param {Object} [opts] -- see Elasticsearch "search" options
540
+ * @returns {Promise.<{ scrollId, hits, aggregations, total }>}
541
+ */
542
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:multiSearch`, (targets, searchBody, opts) => {
543
+ for (const target of targets) {
544
+ for (const collection of target.collections) {
545
+ this.cache.assertCollectionExists(target.index, collection);
546
+ }
547
+ }
548
+ return this.client.search({ searchBody, targets }, opts);
549
+ });
550
+ /**
551
+ * Update a document
552
+ *
553
+ * @param {string} index
554
+ * @param {string} collection
555
+ * @param {string} id -- document unique identifier
556
+ * @param {Object} content -- partial content to update
557
+ * @param {Object} [opts] -- see Elasticsearch "update" options
558
+ * @returns {Promise.<{ _id, _version }>}
559
+ */
560
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:update`, (index, collection, id, content, opts) => {
561
+ this.cache.assertCollectionExists(index, collection);
562
+ return this.client.update(index, collection, id, content, opts);
563
+ });
564
+ /**
565
+ * Update all documents matching the search query, by applying the same
566
+ * changes to all of them.
567
+ *
568
+ * @param {string} index
569
+ * @param {string} collection
570
+ * @param {Object} query -- search query, in ES format
571
+ * @param {Object} changes -- partial changes to apply to matched documents
572
+ * @param {Object} [opts] -- see Elasticsearch "updateByQuery" options
573
+ * @returns {Promise.<{ successes: [_id, _source, _status], errors: [ document, status, reason ] }>}
574
+ */
575
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:updateByQuery`, (index, collection, query, changes, opts) => {
576
+ this.cache.assertCollectionExists(index, collection);
577
+ return this.client.updateByQuery(index, collection, query, changes, opts);
578
+ });
579
+ /**
580
+ * Directly Update all documents matching the search query (without regards
581
+ * to max documents write limit), by applying the same changes to all of them.
582
+ *
583
+ * @param {string} index
584
+ * @param {string} collection
585
+ * @param {Object} query -- search query, in ES format
586
+ * @param {Object} changes -- partial changes to apply to matched documents
587
+ * @param {Object} [opts] -- see Elasticsearch "updateByQuery" options
588
+ * @returns {Promise.<{ successes: [_id, _source, _status], errors: [ document, status, reason ] }>}
589
+ */
590
+ global.kuzzle.onAsk(`core:storage:${this.scope}:bulk:updateByQuery`, (index, collection, query, changes, opts) => {
591
+ this.cache.assertCollectionExists(index, collection);
592
+ return this.client.bulkUpdateByQuery(index, collection, query, changes, opts);
593
+ });
594
+ /**
595
+ * Applies a partial update to an existing document.
596
+ * If the document doesn't already exist, a new document is created.
597
+ *
598
+ * @param {string} index
599
+ * @param {string} collection
600
+ * @param {string} id -- document unique identifier
601
+ * @param {Object} content -- partial content to update
602
+ * @param {Object} [opts] -- see Elasticsearch "upsert" options
603
+ * @returns {Promise.<{ _id, _version }>}
604
+ */
605
+ global.kuzzle.onAsk(`core:storage:${this.scope}:document:upsert`, (index, collection, id, content, opts) => {
606
+ this.cache.assertCollectionExists(index, collection);
607
+ return this.client.upsert(index, collection, id, content, opts);
608
+ });
609
+ }
610
+ registerMappingEvents() {
611
+ /**
612
+ * Return a collection's mapping
613
+ *
614
+ * @param {string} index
615
+ * @param {string} collection
616
+ * @param {Object} [opts] -- see Elasticsearch "getMapping" options
617
+ *
618
+ * @returns {Promise.<{ dynamic, _meta, properties }>}
619
+ */
620
+ global.kuzzle.onAsk(`core:storage:${this.scope}:mappings:get`, (index, collection, opts) => {
621
+ this.cache.assertCollectionExists(index, collection);
622
+ return this.client.getMapping(index, collection, opts);
623
+ });
624
+ /**
625
+ * Import mappings as fixtures. Create non-existing indexes and collections
626
+ * in the process.
627
+ *
628
+ * @param {Object} fixtures
629
+ * @param {Object} options
630
+ * @return {Promise}
631
+ */
632
+ global.kuzzle.onAsk(`core:storage:${this.scope}:mappings:import`, (fixtures, options) => this.loadMappings(fixtures, options));
633
+ /**
634
+ * Update a collection mappings
635
+ *
636
+ * @param {string} index
637
+ * @param {string} collection
638
+ * @param {Object} mappings
639
+ * @returns {Promise.<{ dynamic, _meta, properties }>}
640
+ */
641
+ global.kuzzle.onAsk(`core:storage:${this.scope}:mappings:update`, (index, collection, mappings) => {
642
+ this.cache.assertCollectionExists(index, collection);
643
+ return this.client.updateMapping(index, collection, mappings);
644
+ });
645
+ }
646
+ /**
647
+ * Cache update operations. These events trigger neither any actual change
648
+ * in the storage layer, nor kuzzle events.
649
+ */
650
+ registerCacheEvents() {
651
+ /**
652
+ * Adds a new index to the cache
653
+ * @param {string} index
654
+ */
655
+ global.kuzzle.onAsk(`core:storage:${this.scope}:cache:addIndex`, (index) => this.cache.addIndex(index));
656
+ /**
657
+ * Adds a new collection to the cache
658
+ * @param {string} index
659
+ * @param {string} collection
660
+ */
661
+ global.kuzzle.onAsk(`core:storage:${this.scope}:cache:addCollection`, (index, collection) => this.cache.addCollection(index, collection));
662
+ /**
663
+ * Removes indexes from the cache
664
+ * @param {Array.<string>} indexes
665
+ */
666
+ global.kuzzle.onAsk(`core:storage:${this.scope}:cache:removeIndexes`, (indexes) => {
667
+ for (const index of indexes) {
668
+ this.cache.removeIndex(index);
669
+ }
670
+ });
671
+ /**
672
+ * Removes a collection from the cache
673
+ * @param {string} index
674
+ * @param {string} collection
675
+ */
676
+ global.kuzzle.onAsk(`core:storage:${this.scope}:cache:removeCollection`, (index, collection) => this.cache.removeCollection(index, collection));
677
+ }
678
+ /**
679
+ * Load database fixtures into Kuzzle
680
+ *
681
+ * @param {String} fixturesId
682
+ * @returns {Promise}
683
+ */
684
+ async loadFixtures(fixtures = {}, { refresh = "wait_for" } = {}) {
685
+ if (!isPlainObject(fixtures)) {
686
+ throw kerror.get("api", "assert", "invalid_argument", fixtures, "object");
687
+ }
688
+ for (const index of Object.keys(fixtures)) {
689
+ if (!isPlainObject(fixtures[index])) {
690
+ throw kerror.get("api", "assert", "invalid_argument", fixtures[index], "object");
691
+ }
692
+ for (const [collection, payload] of Object.entries(fixtures[index])) {
693
+ this.cache.assertCollectionExists(index, collection);
694
+ const { errors } = await this.client.import(index, collection, payload, { refresh });
695
+ if (errors.length > 0) {
696
+ throw servicesError.get("import_failed", errors);
697
+ }
698
+ }
699
+ }
700
+ }
701
+ /**
702
+ * Load database mappings into Kuzzle
703
+ *
704
+ * @param {String} mappings
705
+ * @param {String} options rawMappings (false)
706
+ * - propagate (true): notify the other nodes of the cluster
707
+ * - indexCacheOnly (false): only update the cache, don't update the database
708
+ * @returns {Promise}
709
+ */
710
+ async loadMappings(fixtures = {}, options = {
711
+ indexCacheOnly: false,
712
+ propagate: true,
713
+ rawMappings: false,
714
+ refresh: false,
715
+ }) {
716
+ if (!isPlainObject(fixtures)) {
717
+ throw kerror.get("api", "assert", "invalid_argument", fixtures, "object");
718
+ }
719
+ const mutex = new Mutex("loadMappings", { timeout: -1, ttl: 60000 });
720
+ await mutex.lock();
721
+ try {
722
+ for (const index of Object.keys(fixtures)) {
723
+ if (!isPlainObject(fixtures[index])) {
724
+ throw kerror.get("api", "assert", "invalid_argument", fixtures[index], "object");
725
+ }
726
+ for (const [collection, mappings] of Object.entries(fixtures[index])) {
727
+ try {
728
+ await this.createIndex(index, {
729
+ indexCacheOnly: options.indexCacheOnly,
730
+ propagate: options.propagate,
731
+ });
732
+ }
733
+ catch (error) {
734
+ // @cluster: ignore if the index already exists to prevent race
735
+ // conditions with index cache propagation
736
+ if (error.id !== "services.storage.index_already_exists") {
737
+ throw error;
738
+ }
739
+ }
740
+ await this.createCollection(index, collection, options.rawMappings ? { mappings } : mappings, {
741
+ indexCacheOnly: options.indexCacheOnly,
742
+ propagate: options.propagate,
743
+ });
744
+ if (options.refresh && !options.indexCacheOnly) {
745
+ await this.client.refreshCollection(index, collection);
746
+ }
747
+ }
748
+ }
749
+ }
750
+ finally {
751
+ await mutex.unlock();
752
+ }
753
+ }
754
+ }
755
+ module.exports = ClientAdapter;
756
+ //# sourceMappingURL=clientAdapter.js.map