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
@@ -1,1045 +0,0 @@
1
- /*
2
- * Kuzzle, a backend software, self-hostable and ready to use
3
- * to power modern apps
4
- *
5
- * Copyright 2015-2022 Kuzzle
6
- * mailto: support AT kuzzle.io
7
- * website: http://kuzzle.io
8
- *
9
- * Licensed under the Apache License, Version 2.0 (the "License");
10
- * you may not use this file except in compliance with the License.
11
- * You may obtain a copy of the License at
12
- *
13
- * https://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS,
17
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- * See the License for the specific language governing permissions and
19
- * limitations under the License.
20
- */
21
-
22
- "use strict";
23
-
24
- const { Elasticsearch } = require("../../service/storage/Elasticsearch");
25
- const { IndexCache } = require("./indexCache");
26
- const { isPlainObject } = require("../../util/safeObject");
27
- const kerror = require("../../kerror");
28
- const { Mutex } = require("../../util/mutex");
29
-
30
- const servicesError = kerror.wrap("services", "storage");
31
-
32
- /**
33
- * Storage client adapter to perform validation on index/collection existence
34
- * and to maintain the index/collection cache.
35
- */
36
- class ClientAdapter {
37
- /**
38
- * @param {storeScopeEnum} scope
39
- */
40
- constructor(scope) {
41
- this.es = new Elasticsearch(
42
- global.kuzzle.config.services.storageEngine,
43
- scope,
44
- );
45
- this.client = this.es.client;
46
- this.scope = scope;
47
- this.cache = new IndexCache();
48
- }
49
-
50
- async init() {
51
- await this.es.init();
52
- await this.populateCache();
53
-
54
- this.registerCollectionEvents();
55
- this.registerIndexEvents();
56
- this.registerDocumentEvents();
57
- this.registerMappingEvents();
58
- this.registerCacheEvents();
59
-
60
- // Global store events registration
61
-
62
- /**
63
- * Manually refresh the index cache (e.g. after alias creation)
64
- */
65
- global.kuzzle.onAsk(`core:storage:${this.scope}:cache:refresh`, () =>
66
- this.populateCache(),
67
- );
68
-
69
- /**
70
- * Return information about the instantiated ES service
71
- * @returns {Promise.<Object>}
72
- */
73
- global.kuzzle.onAsk(`core:storage:${this.scope}:info:get`, () =>
74
- this.client.info(),
75
- );
76
-
77
- /**
78
- * Translate Koncorde filters to Elasticsearch query
79
- *
80
- * @param {Object} koncordeFilters - Set of valid Koncorde filters
81
- * @returns {Object} Equivalent Elasticsearch query
82
- */
83
- global.kuzzle.onAsk(`core:storage:${this.scope}:translate`, (filters) =>
84
- this.client.translateKoncordeFilters(filters),
85
- );
86
- }
87
-
88
- async createIndex(index, { indexCacheOnly = false, propagate = true } = {}) {
89
- if (this.cache.hasIndex(index)) {
90
- throw servicesError.get("index_already_exists", this.scope, index);
91
- }
92
-
93
- if (!indexCacheOnly) {
94
- await this.client.createIndex(index);
95
- }
96
-
97
- this.cache.addIndex(index);
98
-
99
- if (propagate) {
100
- global.kuzzle.emit("core:storage:index:create:after", {
101
- index,
102
- scope: this.scope,
103
- });
104
- }
105
- }
106
-
107
- async createCollection(
108
- index,
109
- collection,
110
- opts,
111
- { indexCacheOnly = false, propagate = true } = {},
112
- ) {
113
- if (!indexCacheOnly) {
114
- await this.client.createCollection(index, collection, opts);
115
- }
116
-
117
- this.cache.addCollection(index, collection);
118
-
119
- if (propagate) {
120
- global.kuzzle.emit("core:storage:collection:create:after", {
121
- collection,
122
- index,
123
- scope: this.scope,
124
- });
125
- }
126
- }
127
-
128
- async deleteIndex(index) {
129
- this.cache.assertIndexExists(index);
130
-
131
- await this.client.deleteIndex(index);
132
-
133
- this.cache.removeIndex(index);
134
-
135
- global.kuzzle.emit("core:storage:index:delete:after", {
136
- index,
137
- scope: this.scope,
138
- });
139
- }
140
-
141
- async deleteIndexes(indexes) {
142
- for (const index of indexes) {
143
- this.cache.assertIndexExists(index);
144
- }
145
-
146
- const deleted = await this.client.deleteIndexes(indexes);
147
-
148
- if (deleted.length > 0) {
149
- for (const index of deleted) {
150
- this.cache.removeIndex(index);
151
- }
152
-
153
- global.kuzzle.emit("core:storage:index:mDelete:after", {
154
- indexes: deleted,
155
- scope: this.scope,
156
- });
157
- }
158
-
159
- return deleted;
160
- }
161
-
162
- async deleteCollection(index, collection) {
163
- this.cache.assertCollectionExists(index, collection);
164
-
165
- await this.client.deleteCollection(index, collection);
166
-
167
- this.cache.removeCollection(index, collection);
168
-
169
- global.kuzzle.emit("core:storage:collection:delete:after", {
170
- collection,
171
- index,
172
- scope: this.scope,
173
- });
174
- }
175
-
176
- /**
177
- * Populates the index cache with existing index/collection.
178
- * Also checks for duplicated index names.
179
- */
180
- async populateCache() {
181
- if (global.kuzzle.config.services.storageEngine.generateMissingAliases) {
182
- await this.client.generateMissingAliases();
183
- }
184
-
185
- const schema = await this.client.getSchema();
186
-
187
- for (const [index, collections] of Object.entries(schema)) {
188
- this.cache.addIndex(index);
189
-
190
- for (const collection of collections) {
191
- this.cache.addCollection(index, collection);
192
- }
193
- }
194
- }
195
-
196
- registerCollectionEvents() {
197
- /**
198
- * Create a new collection in a given index, and optionally configure it
199
- * @param {string} index
200
- * @param {string} collection
201
- * @param {Object.<settings: {}, mappings: {}} [opts]
202
- * @param {Object} creationOptions
203
- * @return {Promise}
204
- * @throws
205
- */
206
-
207
- global.kuzzle.onAsk(
208
- `core:storage:${this.scope}:collection:create`,
209
- (index, collection, opts, creationOptions) =>
210
- this.createCollection(index, collection, opts, creationOptions),
211
- );
212
-
213
- /**
214
- * Delete a collection
215
- * @param {string} index
216
- * @param {string} collection
217
- * @return {Promise}
218
- * @throws If the index or the collection does not exist
219
- */
220
- global.kuzzle.onAsk(
221
- `core:storage:${this.scope}:collection:delete`,
222
- (index, collection) => this.deleteCollection(index, collection),
223
- );
224
-
225
- /**
226
- * Get settings of a collection
227
- * @param {string} index
228
- * @param {string} collection
229
- */
230
- global.kuzzle.onAsk(
231
- `core:storage:${this.scope}:collection:settings:get`,
232
- (index, collection) => {
233
- this.cache.assertCollectionExists(index, collection);
234
- return this.client.getSettings(index, collection);
235
- },
236
- );
237
-
238
- /**
239
- * Check a collection existence
240
- * @param {string} index
241
- * @param {string} collection
242
- */
243
- global.kuzzle.onAsk(
244
- `core:storage:${this.scope}:collection:exist`,
245
- (index, collection) => this.cache.hasCollection(index, collection),
246
- );
247
-
248
- /**
249
- * Return a list of an index' collections within this adapter's scope
250
- * @param {string} index
251
- * @returns {Promise.<string[]>}
252
- */
253
- global.kuzzle.onAsk(`core:storage:${this.scope}:collection:list`, (index) =>
254
- this.cache.listCollections(index),
255
- );
256
-
257
- /**
258
- * Refresh a collection
259
- * @param {string} index
260
- * @param {string} collection
261
- * @returns {Promise}
262
- */
263
- global.kuzzle.onAsk(
264
- `core:storage:${this.scope}:collection:refresh`,
265
- (index, collection) => {
266
- this.cache.assertCollectionExists(index, collection);
267
- return this.client.refreshCollection(index, collection);
268
- },
269
- );
270
-
271
- /**
272
- * Remove all documents from an existing collection
273
- * @param {string} index
274
- * @param {string} collection
275
- * @returns {Promise}
276
- */
277
- global.kuzzle.onAsk(
278
- `core:storage:${this.scope}:collection:truncate`,
279
- (index, collection) => {
280
- this.cache.assertCollectionExists(index, collection);
281
- return this.client.truncateCollection(index, collection);
282
- },
283
- );
284
-
285
- /**
286
- * Update a collection settings and mappings
287
- * @param {string} index
288
- * @param {string} collection
289
- * @param {Object} changes
290
- * @returns {Promise}
291
- */
292
- global.kuzzle.onAsk(
293
- `core:storage:${this.scope}:collection:update`,
294
- (index, collection, changes) => {
295
- this.cache.assertCollectionExists(index, collection);
296
- return this.client.updateCollection(index, collection, changes);
297
- },
298
- );
299
- }
300
-
301
- registerIndexEvents() {
302
- /**
303
- * Create a new index within this adapter scope
304
- * @param {string} index
305
- * @param {Object} options
306
- * @returns {Promise}
307
- * @throws
308
- */
309
- global.kuzzle.onAsk(
310
- `core:storage:${this.scope}:index:create`,
311
- (index, options) => this.createIndex(index, options),
312
- );
313
-
314
- /**
315
- * Delete an index
316
- * @param {string} index
317
- * @return {Promise}
318
- * @throws If the index does not exist
319
- */
320
- global.kuzzle.onAsk(`core:storage:${this.scope}:index:delete`, (index) =>
321
- this.deleteIndex(index),
322
- );
323
-
324
- /**
325
- * Check an index existence
326
- * @param {string} index
327
- * @return {Promise.<boolean>}
328
- */
329
- global.kuzzle.onAsk(`core:storage:${this.scope}:index:exist`, (index) =>
330
- this.cache.hasIndex(index),
331
- );
332
-
333
- /**
334
- * Return a list of all indexes within this adapter's scope
335
- * @returns {string[]}
336
- */
337
- global.kuzzle.onAsk(`core:storage:${this.scope}:index:list`, () =>
338
- this.cache.listIndexes(),
339
- );
340
-
341
- /**
342
- * Delete multiple indexes
343
- * @param {string[]} indexes
344
- * @return {Promise}
345
- * @throws If at least one index does not exist
346
- */
347
- global.kuzzle.onAsk(`core:storage:${this.scope}:index:mDelete`, (indexes) =>
348
- this.deleteIndexes(indexes),
349
- );
350
-
351
- /**
352
- * Return detailed storage stats within this adapter's scope
353
- * @returns {Promise.<Object>}
354
- */
355
- global.kuzzle.onAsk(`core:storage:${this.scope}:index:stats`, () =>
356
- this.client.stats(),
357
- );
358
- }
359
-
360
- registerDocumentEvents() {
361
- /**
362
- * Execute actions on documents in bulk
363
- *
364
- * @param {string} index
365
- * @param {string} collection
366
- * @param {Object[]} bulk data, in ES format
367
- * @param {Object} [opts] -- see Elasticsearch "import" options
368
- * @returns {Promise.<{ items, errors }>
369
- */
370
- global.kuzzle.onAsk(
371
- `core:storage:${this.scope}:document:bulk`,
372
- (index, collection, bulk, opts) => {
373
- this.cache.assertCollectionExists(index, collection);
374
- return this.client.import(index, collection, bulk, opts);
375
- },
376
- );
377
-
378
- /**
379
- * Count how many documents match the provided query
380
- *
381
- * @param {string} index
382
- * @param {string} collection
383
- * @param {Object} query -- search query
384
- * @return {Promise.<Number>}
385
- */
386
- global.kuzzle.onAsk(
387
- `core:storage:${this.scope}:document:count`,
388
- (index, collection, query) => {
389
- this.cache.assertCollectionExists(index, collection);
390
- return this.client.count(index, collection, query);
391
- },
392
- );
393
-
394
- /**
395
- * Create a document
396
- *
397
- * @param {string} index
398
- * @param {string} collection
399
- * @param {Object} content
400
- * @param {Object} [opts] -- see Elasticsearch "create" options
401
- * @returns {Promise.<{ _id, _version, _source }>}
402
- */
403
- global.kuzzle.onAsk(
404
- `core:storage:${this.scope}:document:create`,
405
- (index, collection, content, opts) => {
406
- this.cache.assertCollectionExists(index, collection);
407
- return this.client.create(index, collection, content, opts);
408
- },
409
- );
410
-
411
- /**
412
- * Create or replace a document
413
- *
414
- * @param {string} index
415
- * @param {string} collection
416
- * @param {string} id -- document unique identifier
417
- * @param {Object} content
418
- * @param {Object} [opts] -- see Elasticsearch "createOrReplace" options
419
- * @returns {Promise.<{ _id, _version, _source, created }>}
420
- */
421
- global.kuzzle.onAsk(
422
- `core:storage:${this.scope}:document:createOrReplace`,
423
- (index, collection, id, content, opts) => {
424
- this.cache.assertCollectionExists(index, collection);
425
- return this.client.createOrReplace(
426
- index,
427
- collection,
428
- id,
429
- content,
430
- opts,
431
- );
432
- },
433
- );
434
-
435
- /**
436
- * Delete a document
437
- *
438
- * @param {string} index
439
- * @param {string} collection
440
- * @param {string} id
441
- * @param {Object} [opts] -- see Elasticsearch "delete" options
442
- * @returns {Promise}
443
- */
444
- global.kuzzle.onAsk(
445
- `core:storage:${this.scope}:document:delete`,
446
- (index, collection, id, opts) => {
447
- this.cache.assertCollectionExists(index, collection);
448
- return this.client.delete(index, collection, id, opts);
449
- },
450
- );
451
-
452
- /**
453
- * Delete all documents matching the provided search query
454
- *
455
- * @param {string} index
456
- * @param {string} collection
457
- * @param {Object} query
458
- * @param {Object} [opts] -- see Elasticsearch "deleteByQuery" options
459
- * @returns {Promise.<{ documents, total, deleted, failures: [ id, reason ] }>}
460
- */
461
- global.kuzzle.onAsk(
462
- `core:storage:${this.scope}:document:deleteByQuery`,
463
- (index, collection, query, opts) => {
464
- this.cache.assertCollectionExists(index, collection);
465
- return this.client.deleteByQuery(index, collection, query, opts);
466
- },
467
- );
468
-
469
- /**
470
- * Delete fields of a document
471
- *
472
- * @param {string} index
473
- * @param {string} collection
474
- * @param {string} id
475
- * @param {Array} fields -- fields to delete
476
- * @param {Object} [opts] -- see Elasticsearch "deleteFields" options
477
- * @returns {Promise.<{ _id, _version, _source }>}
478
- */
479
- global.kuzzle.onAsk(
480
- `core:storage:${this.scope}:document:deleteFields`,
481
- (index, collection, id, fields, opts) => {
482
- this.cache.assertCollectionExists(index, collection);
483
- return this.client.deleteFields(index, collection, id, fields, opts);
484
- },
485
- );
486
-
487
- /**
488
- * Check if a document exists
489
- *
490
- * @param {string} index
491
- * @param {string} collection
492
- * @param {string} id -- document unique identifier
493
- * @returns {Promise.<boolean>}
494
- */
495
- global.kuzzle.onAsk(
496
- `core:storage:${this.scope}:document:exist`,
497
- (index, collection, id) => {
498
- this.cache.assertCollectionExists(index, collection);
499
- return this.client.exists(index, collection, id);
500
- },
501
- );
502
-
503
- /**
504
- * Check if a document multiple document Exists
505
- *
506
- * @param {string} index
507
- * @param {string} collection
508
- * @param {string} id -- document unique identifier
509
- * @returns {Promise.<boolean>}
510
- */
511
- global.kuzzle.onAsk(
512
- `core:storage:${this.scope}:document:mExists`,
513
- (index, collection, ids) => {
514
- this.cache.assertCollectionExists(index, collection);
515
- return this.client.mExists(index, collection, ids);
516
- },
517
- );
518
-
519
- /**
520
- * Get a document using its unique id
521
- *
522
- * @param {string} index
523
- * @param {string} collection
524
- * @param {string} id -- document unique identifier
525
- * @returns {Promise.<{ _id, _version, _source }>}
526
- */
527
- global.kuzzle.onAsk(
528
- `core:storage:${this.scope}:document:get`,
529
- (index, collection, id) => {
530
- this.cache.assertCollectionExists(index, collection);
531
- return this.client.get(index, collection, id);
532
- },
533
- );
534
-
535
- /**
536
- * Import documents as fixtures
537
- * @param {Objects} fixtures
538
- * @return {Promise}
539
- */
540
- global.kuzzle.onAsk(
541
- `core:storage:${this.scope}:document:import`,
542
- (fixtures, options) => this.loadFixtures(fixtures, options),
543
- );
544
-
545
- /**
546
- * Create multiple documents
547
- *
548
- * @param {string} index
549
- * @param {string} collection
550
- * @param {Object[]} documents
551
- * @param {Object} [opts] -- see Elasticsearch "mCreate" options
552
- * @returns {Promise.<{ items, errors }>
553
- */
554
- global.kuzzle.onAsk(
555
- `core:storage:${this.scope}:document:mCreate`,
556
- (index, collection, documents, opts) => {
557
- this.cache.assertCollectionExists(index, collection);
558
- return this.client.mCreate(index, collection, documents, opts);
559
- },
560
- );
561
-
562
- /**
563
- * Create or replace multiple documents
564
- *
565
- * @param {string} index
566
- * @param {string} collection
567
- * @param {Object[]} documents
568
- * @param {Object} [opts] -- see Elasticsearch "mCreateOrReplace" options
569
- * @returns {Promise.<{ items, errors }>
570
- */
571
- global.kuzzle.onAsk(
572
- `core:storage:${this.scope}:document:mCreateOrReplace`,
573
- (index, collection, documents, opts) => {
574
- this.cache.assertCollectionExists(index, collection);
575
- return this.client.mCreateOrReplace(index, collection, documents, opts);
576
- },
577
- );
578
-
579
- /**
580
- * Delete multiple documents
581
- *
582
- * @param {string} index
583
- * @param {string} collection
584
- * @param {string[]} ids
585
- * @param {Object} [opts] -- see Elasticsearch "mDelete" options
586
- * @returns {Promise.<{ documents, errors }>
587
- */
588
- global.kuzzle.onAsk(
589
- `core:storage:${this.scope}:document:mDelete`,
590
- (index, collection, ids, opts) => {
591
- this.cache.assertCollectionExists(index, collection);
592
- return this.client.mDelete(index, collection, ids, opts);
593
- },
594
- );
595
-
596
- /**
597
- * Replace multiple documents
598
- *
599
- * @param {string} index
600
- * @param {string} collection
601
- * @param {Object[]} documents
602
- * @param {Object} [opts] -- see Elasticsearch "mReplace" options
603
- * @returns {Promise.<{ items, errors }>
604
- */
605
- global.kuzzle.onAsk(
606
- `core:storage:${this.scope}:document:mReplace`,
607
- (index, collection, documents, opts) => {
608
- this.cache.assertCollectionExists(index, collection);
609
- return this.client.mReplace(index, collection, documents, opts);
610
- },
611
- );
612
-
613
- /**
614
- * Update multiple documents
615
- *
616
- * @param {string} index
617
- * @param {string} collection
618
- * @param {Object[]} documents
619
- * @param {Object} [opts] -- see Elasticsearch "mUpdate" options
620
- * @returns {Promise.<{ items, errors }>
621
- */
622
- global.kuzzle.onAsk(
623
- `core:storage:${this.scope}:document:mUpdate`,
624
- (index, collection, documents, opts) => {
625
- this.cache.assertCollectionExists(index, collection);
626
- return this.client.mUpdate(index, collection, documents, opts);
627
- },
628
- );
629
-
630
- /**
631
- * Applies a partial update to documents provided in the body.
632
- * If some of the documents don't already exist, they will be created.
633
- *
634
- * @param {string} index
635
- * @param {string} collection
636
- * @param {Object[]} documents
637
- * @param {Object} [opts] -- see Elasticsearch "mUpsert" options
638
- * @returns {Promise.<{ items, errors }>
639
- */
640
- global.kuzzle.onAsk(
641
- `core:storage:${this.scope}:document:mUpsert`,
642
- (index, collection, documents, opts) => {
643
- this.cache.assertCollectionExists(index, collection);
644
- return this.client.mUpsert(index, collection, documents, opts);
645
- },
646
- );
647
-
648
- /**
649
- * Apply the provided callback to all documents matching a search query
650
- *
651
- * @param {string} index
652
- * @param {string} collection
653
- * @param {Object} query -- search query (ES format)
654
- * @param {Function} callback -- callback applied to matched documents
655
- * @param {Object} [opts] -- see Elasticsearch "mExecute" options
656
- * @returns {Promise.<any[]>} Array of results returned by the callback
657
- */
658
- global.kuzzle.onAsk(
659
- `core:storage:${this.scope}:document:mExecute`,
660
- (index, collection, query, callback, opts) => {
661
- this.cache.assertCollectionExists(index, collection);
662
- return this.client.mExecute(index, collection, query, callback, opts);
663
- },
664
- );
665
-
666
- /**
667
- * Get multiple documents using their ids
668
- *
669
- * @param {string} index
670
- * @param {string} collection
671
- * @param {string[]} ids
672
- * @returns {Promise.<{ items: [ _id, _source, _version ], errors }>}
673
- */
674
- global.kuzzle.onAsk(
675
- `core:storage:${this.scope}:document:mGet`,
676
- (index, collection, ids) => {
677
- this.cache.assertCollectionExists(index, collection);
678
- return this.client.mGet(index, collection, ids);
679
- },
680
- );
681
-
682
- /**
683
- * Replace the content of a document
684
- *
685
- * @param {string} index
686
- * @param {string} collection
687
- * @param {string} id
688
- * @param {Object} content -- new document content
689
- * @param {Object} [opts] -- see Elasticsearch "replace" options
690
- * @returns {Promise.<{ _id, _version, _source }>}
691
- */
692
- global.kuzzle.onAsk(
693
- `core:storage:${this.scope}:document:replace`,
694
- (index, collection, id, content, opts) => {
695
- this.cache.assertCollectionExists(index, collection);
696
- return this.client.replace(index, collection, id, content, opts);
697
- },
698
- );
699
-
700
- /**
701
- * Fetch the next page of results of a search query
702
- *
703
- * @param {string} scrollId
704
- * @param {Object} [opts] -- see Elasticsearch "scroll" options
705
- * @returns {Promise.<{ scrollId, hits, aggregations, total }>}
706
- */
707
- global.kuzzle.onAsk(
708
- `core:storage:${this.scope}:document:scroll`,
709
- (scrollId, opts) => this.client.scroll(scrollId, opts),
710
- );
711
-
712
- /**
713
- * Search for documents
714
- *
715
- * @param {string} index
716
- * @param {string} collection
717
- * @param {Object} searchBody -- search query, in ES format
718
- * @param {Object} [opts] -- see Elasticsearch "search" options
719
- * @returns {Promise.<{ scrollId, hits, aggregations, total }>}
720
- */
721
- global.kuzzle.onAsk(
722
- `core:storage:${this.scope}:document:search`,
723
- (index, collection, searchBody, opts) => {
724
- this.cache.assertCollectionExists(index, collection);
725
- return this.client.search({ collection, index, searchBody }, opts);
726
- },
727
- );
728
-
729
- /**
730
- * Search for multiples documents
731
- *
732
- * @param {Object[]} targets
733
- * @param {Object} searchBody -- search query, in ES format
734
- * @param {Object} [opts] -- see Elasticsearch "search" options
735
- * @returns {Promise.<{ scrollId, hits, aggregations, total }>}
736
- */
737
- global.kuzzle.onAsk(
738
- `core:storage:${this.scope}:document:multiSearch`,
739
- (targets, searchBody, opts) => {
740
- for (const target of targets) {
741
- for (const collection of target.collections) {
742
- this.cache.assertCollectionExists(target.index, collection);
743
- }
744
- }
745
-
746
- return this.client.search({ searchBody, targets }, opts);
747
- },
748
- );
749
-
750
- /**
751
- * Update a document
752
- *
753
- * @param {string} index
754
- * @param {string} collection
755
- * @param {string} id -- document unique identifier
756
- * @param {Object} content -- partial content to update
757
- * @param {Object} [opts] -- see Elasticsearch "update" options
758
- * @returns {Promise.<{ _id, _version }>}
759
- */
760
- global.kuzzle.onAsk(
761
- `core:storage:${this.scope}:document:update`,
762
- (index, collection, id, content, opts) => {
763
- this.cache.assertCollectionExists(index, collection);
764
- return this.client.update(index, collection, id, content, opts);
765
- },
766
- );
767
-
768
- /**
769
- * Update all documents matching the search query, by applying the same
770
- * changes to all of them.
771
- *
772
- * @param {string} index
773
- * @param {string} collection
774
- * @param {Object} query -- search query, in ES format
775
- * @param {Object} changes -- partial changes to apply to matched documents
776
- * @param {Object} [opts] -- see Elasticsearch "updateByQuery" options
777
- * @returns {Promise.<{ successes: [_id, _source, _status], errors: [ document, status, reason ] }>}
778
- */
779
- global.kuzzle.onAsk(
780
- `core:storage:${this.scope}:document:updateByQuery`,
781
- (index, collection, query, changes, opts) => {
782
- this.cache.assertCollectionExists(index, collection);
783
- return this.client.updateByQuery(
784
- index,
785
- collection,
786
- query,
787
- changes,
788
- opts,
789
- );
790
- },
791
- );
792
-
793
- /**
794
- * Directly Update all documents matching the search query (without regards
795
- * to max documents write limit), by applying the same changes to all of them.
796
- *
797
- * @param {string} index
798
- * @param {string} collection
799
- * @param {Object} query -- search query, in ES format
800
- * @param {Object} changes -- partial changes to apply to matched documents
801
- * @param {Object} [opts] -- see Elasticsearch "updateByQuery" options
802
- * @returns {Promise.<{ successes: [_id, _source, _status], errors: [ document, status, reason ] }>}
803
- */
804
- global.kuzzle.onAsk(
805
- `core:storage:${this.scope}:bulk:updateByQuery`,
806
- (index, collection, query, changes, opts) => {
807
- this.cache.assertCollectionExists(index, collection);
808
- return this.client.bulkUpdateByQuery(
809
- index,
810
- collection,
811
- query,
812
- changes,
813
- opts,
814
- );
815
- },
816
- );
817
-
818
- /**
819
- * Applies a partial update to an existing document.
820
- * If the document doesn't already exist, a new document is created.
821
- *
822
- * @param {string} index
823
- * @param {string} collection
824
- * @param {string} id -- document unique identifier
825
- * @param {Object} content -- partial content to update
826
- * @param {Object} [opts] -- see Elasticsearch "upsert" options
827
- * @returns {Promise.<{ _id, _version }>}
828
- */
829
- global.kuzzle.onAsk(
830
- `core:storage:${this.scope}:document:upsert`,
831
- (index, collection, id, content, opts) => {
832
- this.cache.assertCollectionExists(index, collection);
833
- return this.client.upsert(index, collection, id, content, opts);
834
- },
835
- );
836
- }
837
-
838
- registerMappingEvents() {
839
- /**
840
- * Return a collection's mapping
841
- *
842
- * @param {string} index
843
- * @param {string} collection
844
- * @param {Object} [opts] -- see Elasticsearch "getMapping" options
845
- *
846
- * @returns {Promise.<{ dynamic, _meta, properties }>}
847
- */
848
- global.kuzzle.onAsk(
849
- `core:storage:${this.scope}:mappings:get`,
850
- (index, collection, opts) => {
851
- this.cache.assertCollectionExists(index, collection);
852
- return this.client.getMapping(index, collection, opts);
853
- },
854
- );
855
-
856
- /**
857
- * Import mappings as fixtures. Create non-existing indexes and collections
858
- * in the process.
859
- *
860
- * @param {Object} fixtures
861
- * @param {Object} options
862
- * @return {Promise}
863
- */
864
- global.kuzzle.onAsk(
865
- `core:storage:${this.scope}:mappings:import`,
866
- (fixtures, options) => this.loadMappings(fixtures, options),
867
- );
868
-
869
- /**
870
- * Update a collection mappings
871
- *
872
- * @param {string} index
873
- * @param {string} collection
874
- * @param {Object} mappings
875
- * @returns {Promise.<{ dynamic, _meta, properties }>}
876
- */
877
- global.kuzzle.onAsk(
878
- `core:storage:${this.scope}:mappings:update`,
879
- (index, collection, mappings) => {
880
- this.cache.assertCollectionExists(index, collection);
881
- return this.client.updateMapping(index, collection, mappings);
882
- },
883
- );
884
- }
885
-
886
- /**
887
- * Cache update operations. These events trigger neither any actual change
888
- * in the storage layer, nor kuzzle events.
889
- */
890
- registerCacheEvents() {
891
- /**
892
- * Adds a new index to the cache
893
- * @param {string} index
894
- */
895
- global.kuzzle.onAsk(`core:storage:${this.scope}:cache:addIndex`, (index) =>
896
- this.cache.addIndex(index),
897
- );
898
-
899
- /**
900
- * Adds a new collection to the cache
901
- * @param {string} index
902
- * @param {string} collection
903
- */
904
- global.kuzzle.onAsk(
905
- `core:storage:${this.scope}:cache:addCollection`,
906
- (index, collection) => this.cache.addCollection(index, collection),
907
- );
908
-
909
- /**
910
- * Removes indexes from the cache
911
- * @param {Array.<string>} indexes
912
- */
913
- global.kuzzle.onAsk(
914
- `core:storage:${this.scope}:cache:removeIndexes`,
915
- (indexes) => {
916
- for (const index of indexes) {
917
- this.cache.removeIndex(index);
918
- }
919
- },
920
- );
921
-
922
- /**
923
- * Removes a collection from the cache
924
- * @param {string} index
925
- * @param {string} collection
926
- */
927
- global.kuzzle.onAsk(
928
- `core:storage:${this.scope}:cache:removeCollection`,
929
- (index, collection) => this.cache.removeCollection(index, collection),
930
- );
931
- }
932
-
933
- /**
934
- * Load database fixtures into Kuzzle
935
- *
936
- * @param {String} fixturesId
937
- * @returns {Promise}
938
- */
939
- async loadFixtures(fixtures = {}, { refresh = "wait_for" } = {}) {
940
- if (!isPlainObject(fixtures)) {
941
- throw kerror.get("api", "assert", "invalid_argument", fixtures, "object");
942
- }
943
-
944
- for (const index of Object.keys(fixtures)) {
945
- if (!isPlainObject(fixtures[index])) {
946
- throw kerror.get(
947
- "api",
948
- "assert",
949
- "invalid_argument",
950
- fixtures[index],
951
- "object",
952
- );
953
- }
954
-
955
- for (const [collection, payload] of Object.entries(fixtures[index])) {
956
- this.cache.assertCollectionExists(index, collection);
957
-
958
- const { errors } = await this.client.import(
959
- index,
960
- collection,
961
- payload,
962
- { refresh },
963
- );
964
-
965
- if (errors.length > 0) {
966
- throw servicesError.get("import_failed", errors);
967
- }
968
- }
969
- }
970
- }
971
-
972
- /**
973
- * Load database mappings into Kuzzle
974
- *
975
- * @param {String} mappings
976
- * @param {String} options rawMappings (false)
977
- * - propagate (true): notify the other nodes of the cluster
978
- * - indexCacheOnly (false): only update the cache, don't update the database
979
- * @returns {Promise}
980
- */
981
- async loadMappings(
982
- fixtures = {},
983
- options = {
984
- indexCacheOnly: false,
985
- propagate: true,
986
- rawMappings: false,
987
- refresh: false,
988
- },
989
- ) {
990
- if (!isPlainObject(fixtures)) {
991
- throw kerror.get("api", "assert", "invalid_argument", fixtures, "object");
992
- }
993
-
994
- const mutex = new Mutex("loadMappings", { timeout: -1, ttl: 60000 });
995
-
996
- await mutex.lock();
997
-
998
- try {
999
- for (const index of Object.keys(fixtures)) {
1000
- if (!isPlainObject(fixtures[index])) {
1001
- throw kerror.get(
1002
- "api",
1003
- "assert",
1004
- "invalid_argument",
1005
- fixtures[index],
1006
- "object",
1007
- );
1008
- }
1009
-
1010
- for (const [collection, mappings] of Object.entries(fixtures[index])) {
1011
- try {
1012
- await this.createIndex(index, {
1013
- indexCacheOnly: options.indexCacheOnly,
1014
- propagate: options.propagate,
1015
- });
1016
- } catch (error) {
1017
- // @cluster: ignore if the index already exists to prevent race
1018
- // conditions with index cache propagation
1019
- if (error.id !== "services.storage.index_already_exists") {
1020
- throw error;
1021
- }
1022
- }
1023
-
1024
- await this.createCollection(
1025
- index,
1026
- collection,
1027
- options.rawMappings ? { mappings } : mappings,
1028
- {
1029
- indexCacheOnly: options.indexCacheOnly,
1030
- propagate: options.propagate,
1031
- },
1032
- );
1033
-
1034
- if (options.refresh && !options.indexCacheOnly) {
1035
- await this.client.refreshCollection(index, collection);
1036
- }
1037
- }
1038
- }
1039
- } finally {
1040
- await mutex.unlock();
1041
- }
1042
- }
1043
- }
1044
-
1045
- module.exports = ClientAdapter;