kuzzle 2.56.0 → 2.57.0-beta.2

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 (408) hide show
  1. package/dist/bin/copy-binaries.js +71 -4
  2. package/dist/bin/start-kuzzle-server +191 -97
  3. package/dist/index.d.ts +31 -1
  4. package/dist/index.js +45 -2
  5. package/dist/lib/api/controllers/adminController.d.ts +4 -3
  6. package/dist/lib/api/controllers/adminController.js +1 -2
  7. package/dist/lib/api/controllers/authController.d.ts +37 -16
  8. package/dist/lib/api/controllers/authController.js +88 -39
  9. package/dist/lib/api/controllers/baseController.d.ts +10 -5
  10. package/dist/lib/api/controllers/baseController.js +36 -15
  11. package/dist/lib/api/controllers/bulkController.d.ts +11 -7
  12. package/dist/lib/api/controllers/bulkController.js +28 -5
  13. package/dist/lib/api/controllers/clusterController.d.ts +2 -2
  14. package/dist/lib/api/controllers/clusterController.js +3 -3
  15. package/dist/lib/api/controllers/collectionController.d.ts +57 -21
  16. package/dist/lib/api/controllers/collectionController.js +40 -11
  17. package/dist/lib/api/controllers/debugController.d.ts +1 -1
  18. package/dist/lib/api/controllers/documentController.d.ts +137 -28
  19. package/dist/lib/api/controllers/documentController.js +156 -125
  20. package/dist/lib/api/controllers/index.d.ts +27 -12
  21. package/dist/lib/api/controllers/index.js +28 -13
  22. package/dist/lib/api/controllers/indexController.d.ts +17 -10
  23. package/dist/lib/api/controllers/indexController.js +13 -11
  24. package/dist/lib/api/controllers/memoryStorageController.d.ts +2 -5
  25. package/dist/lib/api/controllers/memoryStorageController.js +199 -127
  26. package/dist/lib/api/controllers/realtimeController.d.ts +19 -9
  27. package/dist/lib/api/controllers/realtimeController.js +8 -4
  28. package/dist/lib/api/controllers/securityController.d.ts +42 -29
  29. package/dist/lib/api/controllers/securityController.js +35 -19
  30. package/dist/lib/api/controllers/serverController.d.ts +114 -19
  31. package/dist/lib/api/controllers/serverController.js +69 -29
  32. package/dist/lib/api/documentExtractor.d.ts +9 -7
  33. package/dist/lib/api/documentExtractor.js +105 -41
  34. package/dist/lib/api/funnel.d.ts +131 -29
  35. package/dist/lib/api/funnel.js +436 -225
  36. package/dist/lib/api/httpRoutes.d.ts +16 -11
  37. package/dist/lib/api/httpRoutes.js +272 -2
  38. package/dist/lib/api/openapi/OpenApiManager.d.ts +1 -1
  39. package/dist/lib/api/openapi/openApiGenerator.d.ts +1 -1
  40. package/dist/lib/api/rateLimiter.d.ts +15 -5
  41. package/dist/lib/api/rateLimiter.js +42 -14
  42. package/dist/lib/api/request/kuzzleRequest.d.ts +83 -12
  43. package/dist/lib/api/request/kuzzleRequest.js +88 -23
  44. package/dist/lib/api/request/requestContext.d.ts +20 -5
  45. package/dist/lib/api/request/requestContext.js +14 -4
  46. package/dist/lib/api/request/requestInput.d.ts +37 -6
  47. package/dist/lib/api/request/requestInput.js +22 -9
  48. package/dist/lib/api/request/requestResponse.d.ts +45 -9
  49. package/dist/lib/api/request/requestResponse.js +34 -3
  50. package/dist/lib/cluster/command.d.ts +131 -37
  51. package/dist/lib/cluster/command.js +243 -71
  52. package/dist/lib/cluster/idCardHandler.d.ts +18 -5
  53. package/dist/lib/cluster/idCardHandler.js +52 -19
  54. package/dist/lib/cluster/index.d.ts +8 -2
  55. package/dist/lib/cluster/index.js +6 -2
  56. package/dist/lib/cluster/node.d.ts +127 -49
  57. package/dist/lib/cluster/node.js +412 -179
  58. package/dist/lib/cluster/protobuf/command.proto +18 -0
  59. package/dist/lib/cluster/protobuf/commandMessages.d.ts +104 -0
  60. package/dist/lib/cluster/protobuf/commandMessages.js +30 -0
  61. package/dist/lib/cluster/protobuf/syncMessages.d.ts +184 -0
  62. package/dist/lib/cluster/protobuf/syncMessages.js +23 -0
  63. package/dist/lib/cluster/publisher.d.ts +118 -78
  64. package/dist/lib/cluster/publisher.js +174 -72
  65. package/dist/lib/cluster/state.d.ts +15 -9
  66. package/dist/lib/cluster/state.js +12 -8
  67. package/dist/lib/cluster/subscriber.d.ts +185 -131
  68. package/dist/lib/cluster/subscriber.js +357 -95
  69. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +39 -8
  70. package/dist/lib/cluster/workers/IDCardRenewer.js +88 -23
  71. package/dist/lib/config/default.config.d.ts +2 -2
  72. package/dist/lib/config/default.config.js +10 -3
  73. package/dist/lib/config/documentEventAliases.d.ts +1 -1
  74. package/dist/lib/config/index.d.ts +2 -5
  75. package/dist/lib/config/index.js +30 -17
  76. package/dist/lib/core/auth/formatProcessing.d.ts +3 -3
  77. package/dist/lib/core/auth/passportResponse.d.ts +1 -1
  78. package/dist/lib/core/auth/passportWrapper.d.ts +1 -1
  79. package/dist/lib/core/auth/passportWrapper.js +14 -13
  80. package/dist/lib/core/auth/tokenManager.d.ts +24 -3
  81. package/dist/lib/core/auth/tokenManager.js +47 -19
  82. package/dist/lib/core/backend/applicationManager.d.ts +2 -2
  83. package/dist/lib/core/backend/backend.d.ts +16 -5
  84. package/dist/lib/core/backend/backend.js +14 -6
  85. package/dist/lib/core/backend/backendCluster.d.ts +1 -1
  86. package/dist/lib/core/backend/backendConfig.d.ts +17 -5
  87. package/dist/lib/core/backend/backendConfig.js +1 -0
  88. package/dist/lib/core/backend/backendController.d.ts +1 -1
  89. package/dist/lib/core/backend/backendController.js +8 -1
  90. package/dist/lib/core/backend/backendErrors.d.ts +15 -8
  91. package/dist/lib/core/backend/backendErrors.js +5 -0
  92. package/dist/lib/core/backend/backendHook.d.ts +1 -1
  93. package/dist/lib/core/backend/backendImport.d.ts +1 -1
  94. package/dist/lib/core/backend/backendOpenApi.d.ts +3 -2
  95. package/dist/lib/core/backend/backendPipe.d.ts +1 -1
  96. package/dist/lib/core/backend/backendPipe.js +9 -1
  97. package/dist/lib/core/backend/backendPlugin.d.ts +2 -2
  98. package/dist/lib/core/backend/backendSubscription.d.ts +2 -2
  99. package/dist/lib/core/backend/backendVault.d.ts +1 -1
  100. package/dist/lib/core/backend/backendVault.js +8 -1
  101. package/dist/lib/core/cache/cacheEngine.d.ts +7 -4
  102. package/dist/lib/core/cache/cacheEngine.js +25 -8
  103. package/dist/lib/core/debug/kuzzleDebugger.d.ts +2 -1
  104. package/dist/lib/core/debug/kuzzleDebugger.js +31 -17
  105. package/dist/lib/core/network/accessLogger.d.ts +33 -18
  106. package/dist/lib/core/network/accessLogger.js +135 -73
  107. package/dist/lib/core/network/clientConnection.d.ts +13 -11
  108. package/dist/lib/core/network/clientConnection.js +33 -9
  109. package/dist/lib/core/network/context.d.ts +17 -22
  110. package/dist/lib/core/network/context.js +43 -26
  111. package/dist/lib/core/network/entryPoint.d.ts +38 -16
  112. package/dist/lib/core/network/entryPoint.js +119 -48
  113. package/dist/lib/core/network/httpRouter/index.d.ts +20 -50
  114. package/dist/lib/core/network/httpRouter/index.js +61 -75
  115. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +17 -32
  116. package/dist/lib/core/network/httpRouter/routeHandler.js +26 -36
  117. package/dist/lib/core/network/httpRouter/routePart.d.ts +9 -18
  118. package/dist/lib/core/network/httpRouter/routePart.js +61 -43
  119. package/dist/lib/core/network/httpRouter/routeTypes.d.ts +3 -0
  120. package/dist/lib/core/network/httpRouter/routeTypes.js +23 -0
  121. package/dist/lib/core/network/networkEntryPoint.d.ts +20 -0
  122. package/dist/lib/core/network/networkEntryPoint.js +23 -0
  123. package/dist/lib/core/network/protocolManifest.d.ts +5 -4
  124. package/dist/lib/core/network/protocolManifest.js +6 -3
  125. package/dist/lib/core/network/protocols/httpMessage.d.ts +25 -18
  126. package/dist/lib/core/network/protocols/httpMessage.js +14 -11
  127. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +84 -93
  128. package/dist/lib/core/network/protocols/httpwsProtocol.js +284 -129
  129. package/dist/lib/core/network/protocols/internalProtocol.d.ts +26 -15
  130. package/dist/lib/core/network/protocols/internalProtocol.js +17 -16
  131. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +56 -32
  132. package/dist/lib/core/network/protocols/mqttProtocol.js +91 -44
  133. package/dist/lib/core/network/protocols/protocol.d.ts +85 -21
  134. package/dist/lib/core/network/protocols/protocol.js +83 -27
  135. package/dist/lib/core/network/router.d.ts +13 -22
  136. package/dist/lib/core/network/router.js +59 -46
  137. package/dist/lib/core/plugin/plugin.d.ts +57 -51
  138. package/dist/lib/core/plugin/plugin.js +218 -103
  139. package/dist/lib/core/plugin/pluginContext.d.ts +54 -11
  140. package/dist/lib/core/plugin/pluginContext.js +99 -58
  141. package/dist/lib/core/plugin/pluginManifest.d.ts +6 -2
  142. package/dist/lib/core/plugin/pluginManifest.js +18 -11
  143. package/dist/lib/core/plugin/pluginRepository.d.ts +35 -44
  144. package/dist/lib/core/plugin/pluginRepository.js +35 -50
  145. package/dist/lib/core/plugin/pluginsManager.d.ts +128 -46
  146. package/dist/lib/core/plugin/pluginsManager.js +468 -231
  147. package/dist/lib/core/plugin/privilegedContext.d.ts +4 -9
  148. package/dist/lib/core/plugin/privilegedContext.js +5 -10
  149. package/dist/lib/core/realtime/actionEnum.d.ts +12 -21
  150. package/dist/lib/core/realtime/actionEnum.js +6 -7
  151. package/dist/lib/core/realtime/channel.d.ts +11 -5
  152. package/dist/lib/core/realtime/channel.js +17 -2
  153. package/dist/lib/core/realtime/connectionRooms.d.ts +2 -2
  154. package/dist/lib/core/realtime/hotelClerk.d.ts +12 -6
  155. package/dist/lib/core/realtime/hotelClerk.js +29 -11
  156. package/dist/lib/core/realtime/index.d.ts +8 -3
  157. package/dist/lib/core/realtime/index.js +12 -5
  158. package/dist/lib/core/realtime/notification/document.d.ts +54 -25
  159. package/dist/lib/core/realtime/notification/document.js +10 -13
  160. package/dist/lib/core/realtime/notification/index.d.ts +9 -3
  161. package/dist/lib/core/realtime/notification/index.js +10 -4
  162. package/dist/lib/core/realtime/notification/server.d.ts +7 -10
  163. package/dist/lib/core/realtime/notification/server.js +4 -7
  164. package/dist/lib/core/realtime/notification/user.d.ts +45 -21
  165. package/dist/lib/core/realtime/notification/user.js +8 -9
  166. package/dist/lib/core/realtime/notifier.d.ts +52 -40
  167. package/dist/lib/core/realtime/notifier.js +60 -25
  168. package/dist/lib/core/realtime/room.d.ts +1 -1
  169. package/dist/lib/core/realtime/subscription.d.ts +11 -6
  170. package/dist/lib/core/realtime/subscription.js +5 -1
  171. package/dist/lib/core/security/index.d.ts +14 -6
  172. package/dist/lib/core/security/index.js +27 -13
  173. package/dist/lib/core/security/profileRepository.d.ts +24 -19
  174. package/dist/lib/core/security/profileRepository.js +23 -10
  175. package/dist/lib/core/security/roleRepository.d.ts +60 -23
  176. package/dist/lib/core/security/roleRepository.js +122 -53
  177. package/dist/lib/core/security/securityLoader.d.ts +33 -18
  178. package/dist/lib/core/security/securityLoader.js +43 -16
  179. package/dist/lib/core/security/tokenRepository.d.ts +21 -7
  180. package/dist/lib/core/security/tokenRepository.js +50 -23
  181. package/dist/lib/core/security/userRepository.d.ts +44 -21
  182. package/dist/lib/core/security/userRepository.js +59 -19
  183. package/dist/lib/core/shared/KoncordeWrapper.d.ts +1 -1
  184. package/dist/lib/core/shared/ObjectRepository.d.ts +80 -18
  185. package/dist/lib/core/shared/ObjectRepository.js +57 -29
  186. package/dist/lib/core/shared/abstractManifest.d.ts +21 -8
  187. package/dist/lib/core/shared/abstractManifest.js +57 -17
  188. package/dist/lib/core/shared/sdk/embeddedSdk.d.ts +3 -1
  189. package/dist/lib/core/shared/sdk/embeddedSdk.js +8 -7
  190. package/dist/lib/core/shared/sdk/funnelProtocol.d.ts +2 -1
  191. package/dist/lib/core/shared/sdk/funnelProtocol.js +12 -3
  192. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +11 -5
  193. package/dist/lib/core/shared/sdk/impersonatedSdk.js +22 -9
  194. package/dist/lib/core/shared/store.d.ts +45 -29
  195. package/dist/lib/core/shared/store.js +48 -27
  196. package/dist/lib/core/statistics/statistics.d.ts +1 -1
  197. package/dist/lib/core/storage/clientAdapter.d.ts +39 -21
  198. package/dist/lib/core/storage/clientAdapter.js +88 -48
  199. package/dist/lib/core/storage/indexCache.d.ts +8 -0
  200. package/dist/lib/core/storage/indexCache.js +16 -7
  201. package/dist/lib/core/storage/storageEngine.d.ts +7 -6
  202. package/dist/lib/core/storage/storageEngine.js +11 -8
  203. package/dist/lib/core/validation/baseType.d.ts +22 -22
  204. package/dist/lib/core/validation/baseType.js +11 -26
  205. package/dist/lib/core/validation/specification.d.ts +148 -0
  206. package/dist/lib/core/validation/specification.js +34 -0
  207. package/dist/lib/core/validation/typeOptions.d.ts +62 -0
  208. package/dist/lib/core/validation/typeOptions.js +23 -0
  209. package/dist/lib/core/validation/types/anything.d.ts +3 -6
  210. package/dist/lib/core/validation/types/anything.js +7 -7
  211. package/dist/lib/core/validation/types/boolean.d.ts +5 -12
  212. package/dist/lib/core/validation/types/boolean.js +7 -12
  213. package/dist/lib/core/validation/types/date.d.ts +19 -11
  214. package/dist/lib/core/validation/types/date.js +212 -161
  215. package/dist/lib/core/validation/types/email.d.ts +7 -11
  216. package/dist/lib/core/validation/types/email.js +13 -17
  217. package/dist/lib/core/validation/types/enum.d.ts +7 -11
  218. package/dist/lib/core/validation/types/enum.js +39 -20
  219. package/dist/lib/core/validation/types/geoPoint.d.ts +5 -13
  220. package/dist/lib/core/validation/types/geoPoint.js +10 -15
  221. package/dist/lib/core/validation/types/geoShape.d.ts +22 -21
  222. package/dist/lib/core/validation/types/geoShape.js +113 -129
  223. package/dist/lib/core/validation/types/geoShapeUtils.d.ts +15 -0
  224. package/dist/lib/core/validation/types/geoShapeUtils.js +75 -0
  225. package/dist/lib/core/validation/types/integer.d.ts +7 -5
  226. package/dist/lib/core/validation/types/integer.js +7 -13
  227. package/dist/lib/core/validation/types/ipAddress.d.ts +7 -11
  228. package/dist/lib/core/validation/types/ipAddress.js +13 -17
  229. package/dist/lib/core/validation/types/numeric.d.ts +7 -11
  230. package/dist/lib/core/validation/types/numeric.js +22 -29
  231. package/dist/lib/core/validation/types/object.d.ts +8 -15
  232. package/dist/lib/core/validation/types/object.js +12 -21
  233. package/dist/lib/core/validation/types/string.d.ts +7 -11
  234. package/dist/lib/core/validation/types/string.js +22 -29
  235. package/dist/lib/core/validation/types/url.d.ts +7 -11
  236. package/dist/lib/core/validation/types/url.js +14 -18
  237. package/dist/lib/core/validation/validation.d.ts +119 -80
  238. package/dist/lib/core/validation/validation.js +470 -412
  239. package/dist/lib/core/validation/validationUtils.d.ts +31 -0
  240. package/dist/lib/core/validation/validationUtils.js +190 -0
  241. package/dist/lib/kerror/codes/4-plugin.json +0 -12
  242. package/dist/lib/kerror/codes/index.d.ts +12 -2
  243. package/dist/lib/kerror/codes/index.js +5 -4
  244. package/dist/lib/kerror/errors/badRequestError.d.ts +1 -1
  245. package/dist/lib/kerror/errors/badRequestError.js +1 -1
  246. package/dist/lib/kerror/errors/externalServiceError.d.ts +1 -1
  247. package/dist/lib/kerror/errors/externalServiceError.js +1 -1
  248. package/dist/lib/kerror/errors/forbiddenError.d.ts +1 -1
  249. package/dist/lib/kerror/errors/forbiddenError.js +1 -1
  250. package/dist/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
  251. package/dist/lib/kerror/errors/gatewayTimeoutError.js +1 -1
  252. package/dist/lib/kerror/errors/internalError.d.ts +1 -1
  253. package/dist/lib/kerror/errors/internalError.js +1 -1
  254. package/dist/lib/kerror/errors/kuzzleError.d.ts +32 -3
  255. package/dist/lib/kerror/errors/kuzzleError.js +21 -7
  256. package/dist/lib/kerror/errors/multipleErrorsError.d.ts +2 -2
  257. package/dist/lib/kerror/errors/multipleErrorsError.js +2 -2
  258. package/dist/lib/kerror/errors/notFoundError.d.ts +1 -1
  259. package/dist/lib/kerror/errors/notFoundError.js +1 -1
  260. package/dist/lib/kerror/errors/partialError.d.ts +8 -2
  261. package/dist/lib/kerror/errors/partialError.js +22 -9
  262. package/dist/lib/kerror/errors/pluginImplementationError.d.ts +9 -1
  263. package/dist/lib/kerror/errors/pluginImplementationError.js +9 -3
  264. package/dist/lib/kerror/errors/preconditionError.d.ts +1 -1
  265. package/dist/lib/kerror/errors/preconditionError.js +1 -1
  266. package/dist/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
  267. package/dist/lib/kerror/errors/serviceUnavailableError.js +1 -1
  268. package/dist/lib/kerror/errors/sizeLimitError.d.ts +1 -1
  269. package/dist/lib/kerror/errors/sizeLimitError.js +1 -1
  270. package/dist/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
  271. package/dist/lib/kerror/errors/tooManyRequestsError.js +1 -1
  272. package/dist/lib/kerror/errors/unauthorizedError.d.ts +1 -1
  273. package/dist/lib/kerror/errors/unauthorizedError.js +1 -1
  274. package/dist/lib/kerror/index.d.ts +19 -13
  275. package/dist/lib/kerror/index.js +60 -19
  276. package/dist/lib/kuzzle/Logger.d.ts +2 -2
  277. package/dist/lib/kuzzle/dumpGenerator.d.ts +12 -8
  278. package/dist/lib/kuzzle/dumpGenerator.js +130 -62
  279. package/dist/lib/kuzzle/event/KuzzleEventEmitter.d.ts +18 -9
  280. package/dist/lib/kuzzle/event/KuzzleEventEmitter.js +45 -18
  281. package/dist/lib/kuzzle/event/pipeRunner.d.ts +37 -16
  282. package/dist/lib/kuzzle/event/pipeRunner.js +73 -26
  283. package/dist/lib/kuzzle/event/waterfall.d.ts +11 -1
  284. package/dist/lib/kuzzle/event/waterfall.js +38 -13
  285. package/dist/lib/kuzzle/internalIndexHandler.d.ts +11 -174
  286. package/dist/lib/kuzzle/internalIndexHandler.js +58 -29
  287. package/dist/lib/kuzzle/kuzzle.d.ts +25 -10
  288. package/dist/lib/kuzzle/kuzzle.js +74 -17
  289. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +16 -12
  290. package/dist/lib/kuzzle/kuzzleStateEnum.js +5 -7
  291. package/dist/lib/kuzzle/vault.d.ts +5 -1
  292. package/dist/lib/kuzzle/vault.js +29 -17
  293. package/dist/lib/model/security/profile.d.ts +34 -5
  294. package/dist/lib/model/security/profile.js +6 -5
  295. package/dist/lib/model/security/rights.d.ts +12 -4
  296. package/dist/lib/model/security/rights.js +7 -6
  297. package/dist/lib/model/security/role.d.ts +8 -4
  298. package/dist/lib/model/security/role.js +12 -6
  299. package/dist/lib/model/security/token.d.ts +8 -0
  300. package/dist/lib/model/security/user.d.ts +8 -2
  301. package/dist/lib/model/security/user.js +7 -4
  302. package/dist/lib/model/storage/apiKey.d.ts +55 -26
  303. package/dist/lib/model/storage/apiKey.js +97 -24
  304. package/dist/lib/model/storage/baseModel.d.ts +77 -66
  305. package/dist/lib/model/storage/baseModel.js +21 -34
  306. package/dist/lib/service/cache/redis.d.ts +53 -36
  307. package/dist/lib/service/cache/redis.js +148 -71
  308. package/dist/lib/service/service.d.ts +14 -19
  309. package/dist/lib/service/service.js +41 -22
  310. package/dist/lib/service/storage/7/elasticsearch.d.ts +136 -93
  311. package/dist/lib/service/storage/7/elasticsearch.js +218 -165
  312. package/dist/lib/service/storage/7/esWrapper.d.ts +30 -13
  313. package/dist/lib/service/storage/7/esWrapper.js +58 -37
  314. package/dist/lib/service/storage/8/elasticsearch.d.ts +153 -119
  315. package/dist/lib/service/storage/8/elasticsearch.js +286 -213
  316. package/dist/lib/service/storage/8/esWrapper.d.ts +30 -13
  317. package/dist/lib/service/storage/8/esWrapper.js +59 -38
  318. package/dist/lib/service/storage/commons/queryTranslator.d.ts +3 -3
  319. package/dist/lib/service/storage/commons/queryTranslator.js +71 -35
  320. package/dist/lib/types/ApiRoute.d.ts +12 -0
  321. package/dist/lib/types/ApiRoute.js +23 -0
  322. package/dist/lib/types/ClientConnection.d.ts +1 -1
  323. package/dist/lib/types/EventHandler.d.ts +10 -0
  324. package/dist/lib/types/Global.d.ts +8 -3
  325. package/dist/lib/types/HttpMessage.d.ts +2 -2
  326. package/dist/lib/types/HttpStream.d.ts +1 -1
  327. package/dist/lib/types/HttpStream.js +3 -1
  328. package/dist/lib/types/JSONObject.d.ts +9 -0
  329. package/dist/lib/types/JSONObject.js +23 -0
  330. package/dist/lib/types/Kuzzle.d.ts +5 -3
  331. package/dist/lib/types/KuzzleDocument.d.ts +1 -1
  332. package/dist/lib/types/KuzzleWebSocket.d.ts +24 -0
  333. package/dist/lib/types/KuzzleWebSocket.js +23 -0
  334. package/dist/lib/types/OpenApiDefinition.d.ts +1 -1
  335. package/dist/lib/types/Plugin.d.ts +33 -8
  336. package/dist/lib/types/PluginInstance.d.ts +67 -0
  337. package/dist/lib/types/PluginInstance.js +23 -0
  338. package/dist/lib/types/Policy.d.ts +1 -1
  339. package/dist/lib/types/Target.d.ts +8 -0
  340. package/dist/lib/types/Token.d.ts +14 -2
  341. package/dist/lib/types/config/HttpConfiguration.d.ts +5 -0
  342. package/dist/lib/types/config/KuzzleConfiguration.d.ts +102 -1
  343. package/dist/lib/types/config/PluginsConfiguration.d.ts +3 -2
  344. package/dist/lib/types/config/SecurityConfiguration.d.ts +6 -2
  345. package/dist/lib/types/config/ServerConfiguration.d.ts +2 -2
  346. package/dist/lib/types/config/ServicesConfiguration.d.ts +1 -1
  347. package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.d.ts +131 -0
  348. package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.js +3 -0
  349. package/dist/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +2 -106
  350. package/dist/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +2 -26
  351. package/dist/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +3 -0
  352. package/dist/lib/types/controllers/Controller.d.ts +12 -3
  353. package/dist/lib/types/controllers/ControllerDefinition.d.ts +2 -2
  354. package/dist/lib/types/controllers/{adminControlller.type.js → adminController.type.js} +1 -1
  355. package/dist/lib/types/controllers/authController.type.d.ts +2 -2
  356. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -1
  357. package/dist/lib/types/errors/ErrorDomains.d.ts +1 -1
  358. package/dist/lib/types/events/EventGenericDocument.d.ts +10 -9
  359. package/dist/lib/types/events/EventProtocol.d.ts +4 -4
  360. package/dist/lib/types/index.d.ts +7 -0
  361. package/dist/lib/types/index.js +7 -0
  362. package/dist/lib/types/shared/StoreCollectionsDefinition.d.ts +1 -1
  363. package/dist/lib/types/storage/7/Elasticsearch.d.ts +62 -13
  364. package/dist/lib/types/storage/8/Elasticsearch.d.ts +62 -13
  365. package/dist/lib/util/Inflector.d.ts +4 -1
  366. package/dist/lib/util/Inflector.js +0 -3
  367. package/dist/lib/util/assertType.d.ts +24 -27
  368. package/dist/lib/util/assertType.js +28 -39
  369. package/dist/lib/util/async.js +19 -6
  370. package/dist/lib/util/asyncStore.js +1 -1
  371. package/dist/lib/util/bufferedPassThrough.d.ts +9 -0
  372. package/dist/lib/util/bufferedPassThrough.js +27 -13
  373. package/dist/lib/util/bytes.d.ts +1 -1
  374. package/dist/lib/util/bytes.js +6 -2
  375. package/dist/lib/util/debug.d.ts +3 -1
  376. package/dist/lib/util/debug.js +42 -10
  377. package/dist/lib/util/deprecate.d.ts +9 -1
  378. package/dist/lib/util/deprecate.js +10 -6
  379. package/dist/lib/util/didYouMean.d.ts +2 -1
  380. package/dist/lib/util/didYouMean.js +8 -4
  381. package/dist/lib/util/distributedLock.d.ts +56 -0
  382. package/dist/lib/util/distributedLock.js +166 -0
  383. package/dist/lib/util/dump-collection.d.ts +1 -1
  384. package/dist/lib/util/dump-collection.js +4 -5
  385. package/dist/lib/util/extractFields.d.ts +15 -11
  386. package/dist/lib/util/extractFields.js +8 -9
  387. package/dist/lib/util/koncordeCompat.d.ts +2 -2
  388. package/dist/lib/util/koncordeCompat.js +33 -0
  389. package/dist/lib/util/memoize.d.ts +7 -6
  390. package/dist/lib/util/memoize.js +3 -3
  391. package/dist/lib/util/mutex.d.ts +22 -2
  392. package/dist/lib/util/mutex.js +39 -1
  393. package/dist/lib/util/name-generator.js +14 -2
  394. package/dist/lib/util/promback.d.ts +20 -11
  395. package/dist/lib/util/promback.js +14 -7
  396. package/dist/lib/util/requestAssertions.d.ts +30 -10
  397. package/dist/lib/util/requestAssertions.js +125 -121
  398. package/dist/lib/util/safeObject.d.ts +3 -3
  399. package/dist/lib/util/safeObject.js +7 -3
  400. package/dist/lib/util/stackTrace.d.ts +13 -5
  401. package/dist/lib/util/stackTrace.js +17 -12
  402. package/dist/lib/util/thrown.d.ts +13 -0
  403. package/dist/lib/util/thrown.js +46 -0
  404. package/dist/package.json +26 -19
  405. package/package.json +26 -19
  406. package/dist/lib/util/wildcard.d.ts +0 -1
  407. package/dist/lib/util/wildcard.js +0 -46
  408. /package/dist/lib/types/controllers/{adminControlller.type.d.ts → adminController.type.d.ts} +0 -0
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /*
2
3
  * Kuzzle, a backend software, self-hostable and ready to use
3
4
  * to power modern apps
@@ -18,12 +19,47 @@
18
19
  * See the License for the specific language governing permissions and
19
20
  * limitations under the License.
20
21
  */
21
- "use strict";
22
- const { sha256 } = require("../../util/crypto");
23
- const debug = require("../../util/debug")("models:storage:apiKey");
24
- const kerror = require("../../kerror");
25
- const BaseModel = require("./baseModel");
26
- class ApiKey extends BaseModel {
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
34
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
35
+ }) : function(o, v) {
36
+ o["default"] = v;
37
+ });
38
+ var __importStar = (this && this.__importStar) || function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
48
+ const crypto_1 = require("../../util/crypto");
49
+ const safeObject_1 = require("../../util/safeObject");
50
+ const debug_1 = __importDefault(require("../../util/debug"));
51
+ const kerror = __importStar(require("../../kerror"));
52
+ const baseModel_1 = __importDefault(require("./baseModel"));
53
+ const debug = (0, debug_1.default)("models:storage:apiKey");
54
+ /*
55
+ * ApiKey.load(userId, id) intentionally takes an extra ownership argument that
56
+ * BaseModel.load(id) does not, so the two static sides are deliberately not
57
+ * structurally compatible. This is an accepted, pre-existing design divergence
58
+ * (ApiKey scopes a load to its owner); the conversion changes no runtime
59
+ * behaviour.
60
+ */
61
+ // @ts-expect-error -- intentional static-signature divergence of load() vs BaseModel (TS2417)
62
+ class ApiKey extends baseModel_1.default {
27
63
  constructor(_source, _id = null) {
28
64
  super(_source, _id);
29
65
  }
@@ -66,20 +102,18 @@ class ApiKey extends BaseModel {
66
102
  /**
67
103
  * Creates a new API key for an user
68
104
  *
69
- * @param {User} user
70
- * @param {String} expiresIn - API key expiration date in ms format
71
- * @param {String} description
72
- * @param {Object} options - creatorId (null), apiKeyId (null), refresh (null), bypassMaxTTL (false)
73
- *
74
- * @returns {Promise<ApiKey>}
105
+ * @param user
106
+ * @param expiresIn - API key expiration date in ms format
107
+ * @param description
108
+ * @param options - creatorId (null), apiKeyId (null), refresh (null), bypassMaxTTL (false)
75
109
  */
76
- static async create(user, expiresIn, description, { creatorId = null, apiKeyId = null, refresh, bypassMaxTTL = false } = {}) {
110
+ static async create(user, expiresIn, description, { creatorId = null, apiKeyId = null, refresh, bypassMaxTTL = false, } = {}) {
77
111
  const token = await global.kuzzle.ask("core:security:token:create", user, {
78
112
  bypassMaxTTL,
79
113
  expiresIn,
80
114
  type: "apiKey",
81
115
  });
82
- const fingerprint = sha256(token.jwt);
116
+ const fingerprint = (0, crypto_1.sha256)(token.jwt);
83
117
  const apiKey = new ApiKey({
84
118
  description,
85
119
  expiresAt: token.expiresAt,
@@ -94,13 +128,11 @@ class ApiKey extends BaseModel {
94
128
  /**
95
129
  * Loads an user API key from the database
96
130
  *
97
- * @param {String} userId - User ID
98
- * @param {String} id - API key ID
99
- *
100
- * @returns {Promise<ApiKey>}
131
+ * @param userId - User ID
132
+ * @param id - API key ID
101
133
  */
102
134
  static async load(userId, id) {
103
- const apiKey = await super.load(id);
135
+ const apiKey = (await super.load(id));
104
136
  if (userId !== apiKey.userId) {
105
137
  throw kerror.get("services", "storage", "not_found", id, {
106
138
  message: `ApiKey "${id}" not found for user "${userId}".`,
@@ -109,18 +141,59 @@ class ApiKey extends BaseModel {
109
141
  return apiKey;
110
142
  }
111
143
  /**
112
- * Deletes API keys for an user
144
+ * Loads an user API key from the database by its fingerprint
145
+ *
146
+ * @param userId - User ID
147
+ * @param fingerprint - API key fingerprint
148
+ */
149
+ static async loadByFingerprint(userId, fingerprint) {
150
+ const [apiKey] = await this.search({
151
+ query: {
152
+ bool: {
153
+ filter: { term: { fingerprint } },
154
+ must: { term: { userId } },
155
+ },
156
+ },
157
+ }, { size: 1 });
158
+ if (!apiKey) {
159
+ throw kerror.get("services", "storage", "not_found", fingerprint, {
160
+ message: `ApiKey with fingerprint "${fingerprint}" not found for user "${userId}".`,
161
+ });
162
+ }
163
+ // @ts-expect-error We fetch from the api key collection so this is safe
164
+ return apiKey;
165
+ }
166
+ /**
167
+ * Loads a user's API key from a request, identified by its `_id`, its
168
+ * clear-text `key` or its `fingerprint` (in that order of precedence).
113
169
  *
114
- * @param {User} user
115
- * @param {Object} options - refresh (null)
170
+ * @param userId - User ID
171
+ * @param request - Request carrying the `_id`, `key` or `fingerprint` argument
172
+ */
173
+ static async loadFromRequest(userId, request) {
174
+ const apiKeyId = request.getId({ ifMissing: "ignore" });
175
+ if (apiKeyId) {
176
+ return this.load(userId, apiKeyId);
177
+ }
178
+ if ((0, safeObject_1.has)(request.input.args, "key")) {
179
+ return this.loadByFingerprint(userId, (0, crypto_1.sha256)(request.getString("key")));
180
+ }
181
+ if ((0, safeObject_1.has)(request.input.args, "fingerprint")) {
182
+ return this.loadByFingerprint(userId, request.getString("fingerprint"));
183
+ }
184
+ throw kerror.get("api", "assert", "missing_argument", "_id, key or fingerprint");
185
+ }
186
+ /**
187
+ * Deletes API keys for an user
116
188
  *
117
- * @returns {Promise}
189
+ * @param user
190
+ * @param options - refresh (null)
118
191
  */
119
192
  static deleteByUser(user, { refresh } = {}) {
120
193
  debug("Delete ApiKeys for user %a", user);
121
194
  return this.deleteByQuery({ term: { userId: user._id } }, { refresh });
122
195
  }
123
196
  }
124
- BaseModel.register(ApiKey);
197
+ baseModel_1.default.register(ApiKey);
125
198
  module.exports = ApiKey;
126
199
  //# sourceMappingURL=apiKey.js.map
@@ -1,100 +1,111 @@
1
- export = BaseModel;
1
+ import type { JSONObject } from "../../types/JSONObject";
2
+ /**
3
+ * Minimal shape of a model class handled by {@link BaseModel.register}.
4
+ */
5
+ interface RegisterableModel {
6
+ fields: string[];
7
+ prototype: object;
8
+ }
9
+ /**
10
+ * Plain document shape as stored/returned by the internal index.
11
+ */
12
+ interface StorageDocument {
13
+ _id: string;
14
+ _source: JSONObject;
15
+ }
2
16
  declare class BaseModel {
17
+ __id: string | null;
18
+ __source: JSONObject;
19
+ __persisted: boolean;
20
+ constructor(_source?: JSONObject, _id?: string | null);
3
21
  /**
4
22
  * Register a new model
5
23
  *
6
- * @param {Model} ModelClass
24
+ * @param ModelClass
7
25
  */
8
- static register(ModelClass: Model): void;
26
+ static register(ModelClass: RegisterableModel): void;
9
27
  /**
10
- * Loads an instance from the database
11
- *
12
- * @param {String} id
28
+ * Save the current instance in the database.
29
+ * - use update if the instance already exists
30
+ * - use create otherwise
13
31
  *
14
- * @returns {BaseModel}
32
+ * @param options - userId (null), refresh (undefined)
15
33
  */
16
- static load(id: string): BaseModel;
34
+ save({ userId, refresh, }?: {
35
+ userId?: string | null;
36
+ refresh?: boolean | string;
37
+ }): Promise<void>;
17
38
  /**
18
- * Deletes all instances matching the given query.
19
- * - the instance delete method will be called on each occurence
20
- *
21
- * @param {Object} query - Search query (e.g. { match_all: {} })
22
- * @param {Object} options - refresh (undefined)
39
+ * Delete the current instance from the database.
40
+ * - call the _afterDelete hook after deletion
23
41
  *
24
- * @returns {Promise}
42
+ * @param options - refresh (undefined)
25
43
  */
26
- static deleteByQuery(query: any, { refresh }?: any): Promise<any>;
44
+ delete({ refresh, }?: {
45
+ refresh?: boolean | string;
46
+ }): Promise<void>;
27
47
  /**
28
- * Returns instances matching the given query
29
- *
30
- * @param {Object} searchBody
31
- * @param {Object} options - from, size, scroll
32
- *
33
- * @returns {Promise<BaseModel[]>} - Array of instances
48
+ * Returns a plain object representing the instance
34
49
  */
35
- static search(searchBody: any, options: any): Promise<BaseModel[]>;
50
+ serialize(): {
51
+ _id: string | null;
52
+ _source: JSONObject;
53
+ };
36
54
  /**
37
- * Deletes all instances of the collection
38
- *
39
- * @param {Object} options - refresh (undefined)
40
- *
41
- * @returns {Promise}
55
+ * Hook called in the delete method after deletion from the database
42
56
  */
43
- static truncate({ refresh }?: any): Promise<any>;
44
- static batchExecute(query: any, callback: any): Promise<any>;
57
+ _afterDelete(): Promise<void>;
58
+ get _id(): string | null;
59
+ set _id(_id: string | null);
60
+ get _source(): JSONObject;
61
+ set _source(_source: JSONObject);
45
62
  /**
46
- * Must be overriden by children
63
+ * Loads an instance from the database
64
+ *
65
+ * @param id
47
66
  */
48
- static get collection(): void;
67
+ static load(id: string): Promise<BaseModel>;
49
68
  /**
50
- * Must be overriden by children
69
+ * Deletes all instances matching the given query.
70
+ * - the instance delete method will be called on each occurence
71
+ *
72
+ * @param query - Search query (e.g. { match_all: {} })
73
+ * @param options - refresh (undefined)
51
74
  */
52
- static get fields(): void;
75
+ static deleteByQuery(query: JSONObject, { refresh }?: {
76
+ refresh?: boolean | string;
77
+ }): Promise<void>;
53
78
  /**
54
- * Instantiate the model from a document
79
+ * Returns instances matching the given query
55
80
  *
56
- * @param {Object} document - { _id, _source }
81
+ * @param searchBody
82
+ * @param options - from, size, scroll
57
83
  *
58
- * @returns {BaseModel}
84
+ * @returns Array of instances
59
85
  */
60
- static _instantiateFromDb({ _id, _source }: any): BaseModel;
61
- constructor(_source?: {}, _id?: any);
62
- __id: any;
63
- __source: {};
64
- set _id(_id: any);
65
- get _id(): any;
66
- set _source(_source: {});
67
- get _source(): {};
86
+ static search(searchBody: JSONObject, options?: JSONObject): Promise<BaseModel[]>;
68
87
  /**
69
- * Save the current instance in the database.
70
- * - use update if the instance already exists
71
- * - use create otherwise
72
- *
73
- * @param {Object} options - userId (null), refresh (undefined)
88
+ * Deletes all instances of the collection
74
89
  *
75
- * @returns {Promise}
90
+ * @param options - refresh (undefined)
76
91
  */
77
- save({ userId, refresh }?: any): Promise<any>;
78
- __persisted: boolean;
92
+ static truncate({ refresh, }?: {
93
+ refresh?: boolean | string;
94
+ }): Promise<void>;
95
+ static batchExecute(query: JSONObject, callback: (...args: unknown[]) => unknown): Promise<any>;
79
96
  /**
80
- * Delete the current instance from the database.
81
- * - call the _afterDelete hook after deletion
82
- *
83
- * @param {Object} options - refresh (undefined)
84
- *
85
- * @returns {Promise}
97
+ * Must be overriden by children
86
98
  */
87
- delete({ refresh }?: any): Promise<any>;
99
+ static get collection(): string;
88
100
  /**
89
- * Returns a plain object representing the instance
90
- *
91
- * @returns {Object} { _id, _source }
101
+ * Must be overriden by children
92
102
  */
93
- serialize(): any;
103
+ static get fields(): string[];
94
104
  /**
95
- * Hook called in the delete method after deletion from the database
105
+ * Instantiate the model from a document
96
106
  *
97
- * @returns {Promise}
107
+ * @param document - { _id, _source }
98
108
  */
99
- _afterDelete(): Promise<any>;
109
+ static _instantiateFromDb({ _id, _source }: StorageDocument): BaseModel;
100
110
  }
111
+ export = BaseModel;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /*
2
3
  * Kuzzle, a backend software, self-hostable and ready to use
3
4
  * to power modern apps
@@ -18,8 +19,10 @@
18
19
  * See the License for the specific language governing permissions and
19
20
  * limitations under the License.
20
21
  */
21
- "use strict";
22
- const Bluebird = require("bluebird");
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ const bluebird_1 = __importDefault(require("bluebird"));
23
26
  class BaseModel {
24
27
  constructor(_source = {}, _id = null) {
25
28
  this.__id = null;
@@ -35,7 +38,7 @@ class BaseModel {
35
38
  /**
36
39
  * Register a new model
37
40
  *
38
- * @param {Model} ModelClass
41
+ * @param ModelClass
39
42
  */
40
43
  static register(ModelClass) {
41
44
  if (this !== BaseModel) {
@@ -59,11 +62,9 @@ class BaseModel {
59
62
  * - use update if the instance already exists
60
63
  * - use create otherwise
61
64
  *
62
- * @param {Object} options - userId (null), refresh (undefined)
63
- *
64
- * @returns {Promise}
65
+ * @param options - userId (null), refresh (undefined)
65
66
  */
66
- async save({ userId = null, refresh } = {}) {
67
+ async save({ userId = null, refresh, } = {}) {
67
68
  if (!this.__persisted) {
68
69
  const { _id, _source } = await global.kuzzle.internalIndex.create(this.constructor.collection, this._source, { id: this._id, refresh, userId });
69
70
  this._id = _id;
@@ -78,11 +79,9 @@ class BaseModel {
78
79
  * Delete the current instance from the database.
79
80
  * - call the _afterDelete hook after deletion
80
81
  *
81
- * @param {Object} options - refresh (undefined)
82
- *
83
- * @returns {Promise}
82
+ * @param options - refresh (undefined)
84
83
  */
85
- async delete({ refresh } = {}) {
84
+ async delete({ refresh, } = {}) {
86
85
  if (!this.__persisted) {
87
86
  return;
88
87
  }
@@ -92,8 +91,6 @@ class BaseModel {
92
91
  }
93
92
  /**
94
93
  * Returns a plain object representing the instance
95
- *
96
- * @returns {Object} { _id, _source }
97
94
  */
98
95
  serialize() {
99
96
  return {
@@ -104,11 +101,9 @@ class BaseModel {
104
101
  // Protected methods =========================================================
105
102
  /**
106
103
  * Hook called in the delete method after deletion from the database
107
- *
108
- * @returns {Promise}
109
104
  */
110
105
  async _afterDelete() {
111
- return null;
106
+ // Nothing to do by default; subclasses override this.
112
107
  }
113
108
  // Getter/Setter =============================================================
114
109
  get _id() {
@@ -131,9 +126,7 @@ class BaseModel {
131
126
  /**
132
127
  * Loads an instance from the database
133
128
  *
134
- * @param {String} id
135
- *
136
- * @returns {BaseModel}
129
+ * @param id
137
130
  */
138
131
  static async load(id) {
139
132
  const result = await global.kuzzle.internalIndex.get(this.collection, id);
@@ -143,14 +136,12 @@ class BaseModel {
143
136
  * Deletes all instances matching the given query.
144
137
  * - the instance delete method will be called on each occurence
145
138
  *
146
- * @param {Object} query - Search query (e.g. { match_all: {} })
147
- * @param {Object} options - refresh (undefined)
148
- *
149
- * @returns {Promise}
139
+ * @param query - Search query (e.g. { match_all: {} })
140
+ * @param options - refresh (undefined)
150
141
  */
151
142
  static async deleteByQuery(query, { refresh } = {}) {
152
143
  const { documents } = await global.kuzzle.internalIndex.deleteByQuery(this.collection, query);
153
- await Bluebird.map(documents, (document) => this._instantiateFromDb(document)._afterDelete(), { concurrency: 10 }); // limits the load on storage services
144
+ await bluebird_1.default.map(documents, (document) => this._instantiateFromDb(document)._afterDelete(), { concurrency: 10 }); // limits the load on storage services
154
145
  if (refresh) {
155
146
  await global.kuzzle.internalIndex.refreshCollection(this.collection);
156
147
  }
@@ -158,10 +149,10 @@ class BaseModel {
158
149
  /**
159
150
  * Returns instances matching the given query
160
151
  *
161
- * @param {Object} searchBody
162
- * @param {Object} options - from, size, scroll
152
+ * @param searchBody
153
+ * @param options - from, size, scroll
163
154
  *
164
- * @returns {Promise<BaseModel[]>} - Array of instances
155
+ * @returns Array of instances
165
156
  */
166
157
  static async search(searchBody, options) {
167
158
  const resp = await global.kuzzle.internalIndex.search(this.collection, searchBody, options);
@@ -170,11 +161,9 @@ class BaseModel {
170
161
  /**
171
162
  * Deletes all instances of the collection
172
163
  *
173
- * @param {Object} options - refresh (undefined)
174
- *
175
- * @returns {Promise}
164
+ * @param options - refresh (undefined)
176
165
  */
177
- static truncate({ refresh } = {}) {
166
+ static truncate({ refresh, } = {}) {
178
167
  return this.deleteByQuery({ match_all: {} }, { refresh });
179
168
  }
180
169
  // ? This looks not in use anymore ?
@@ -197,9 +186,7 @@ class BaseModel {
197
186
  /**
198
187
  * Instantiate the model from a document
199
188
  *
200
- * @param {Object} document - { _id, _source }
201
- *
202
- * @returns {BaseModel}
189
+ * @param document - { _id, _source }
203
190
  */
204
191
  static _instantiateFromDb({ _id, _source }) {
205
192
  const model = new this(_source, _id); // NOSONAR
@@ -1,74 +1,91 @@
1
- export = Redis;
1
+ import type { RedisCommander } from "ioredis";
2
+ import IORedis, { Cluster } from "ioredis";
3
+ import Service from "../service";
4
+ import "../../types/Global";
5
+ import type { InternalCacheConfiguration } from "../../types/config/internalCache/InternalCacheRedisConfiguration";
6
+ import type { PublicCacheRedisConfiguration } from "../../types/config/publicCache/PublicCacheRedisConfiguration";
7
+ type RedisClient = IORedis | Cluster;
8
+ type RedisServiceConfig = InternalCacheConfiguration | PublicCacheRedisConfiguration;
9
+ interface RedisInfo {
10
+ memoryPeak: string;
11
+ memoryUsed: string;
12
+ mode: string;
13
+ type: "redis";
14
+ version: string;
15
+ }
2
16
  /**
3
17
  * @class Redis
4
18
  * @extends Service
5
- * @param {object} config
6
- * @property service
7
19
  */
8
- declare class Redis extends Service {
20
+ declare class Redis extends Service<RedisServiceConfig, RedisInfo> {
9
21
  connected: boolean;
10
- client: any;
11
- commands: {};
12
- adapterName: any;
13
- pingIntervalID: NodeJS.Timeout;
14
- logger: import("../../kuzzle/Logger").Logger;
22
+ client: RedisClient | null;
23
+ commands: RedisCommander;
24
+ adapterName: string;
25
+ private pingIntervalID;
26
+ private readonly logger;
27
+ /**
28
+ * The connected client.
29
+ *
30
+ * `client` is null until `init()` builds it, and every consumer is wired up
31
+ * by `cacheEngine.init()` *after* that — so "not connected" is a programming
32
+ * error, stated once here where it can actually happen, rather than a null
33
+ * check at each call site where it cannot.
34
+ */
35
+ get connectedClient(): RedisClient;
36
+ constructor(config: RedisServiceConfig, name: string);
37
+ /**
38
+ * Initialize the redis client, select the service associated database and
39
+ * flush it to make sure we start from a clean state
40
+ */
41
+ protected _initSequence(): Promise<void>;
15
42
  /**
16
43
  * Setup a ping interval to keep the connection alive
17
44
  * Every 60 seconds a ping is sent to Redis
18
45
  */
19
- _setupKeepAlive(delay: any): void;
46
+ private _setupKeepAlive;
20
47
  /**
21
48
  * Ping Redis
22
49
  */
23
- _ping(): Promise<void>;
50
+ private _ping;
24
51
  /**
25
52
  * Initializes the Redis commands list, and add transformers when necessary
26
53
  */
27
54
  setCommands(): void;
55
+ /**
56
+ * Return some basic information about this service
57
+ * @override
58
+ */
59
+ info(): Promise<RedisInfo>;
28
60
  /**
29
61
  * Returns all the keys matching a given pattern.
30
62
  *
31
63
  * /!\ We don't use `keys` to avoid blocking Redis if using a big dataset
32
64
  * cf: http://redis.io/commands/keys
33
65
  * and http://redis.io/commands/scan
34
- *
35
- * @param pattern
36
- * @returns {Promise.<string[]>} promise resolving to an array of keys
37
66
  */
38
- searchKeys(pattern: any): Promise<string[]>;
67
+ searchKeys(pattern: string): Promise<string[]>;
39
68
  /**
40
69
  * Executes multiple client commands in a single action
41
- *
42
- * @returns {Promise}
43
70
  */
44
- mExecute(commands: any): Promise<any>;
45
- _searchNodeKeys(node: any, pattern: any): Bluebird<any>;
46
- _buildClient(options: any): any;
47
- _buildClusterClient(options: any): IORedis.Cluster;
71
+ mExecute(commands: unknown[][]): Promise<[error: Error | null, result: unknown][] | null>;
72
+ private _searchNodeKeys;
73
+ private _buildClient;
74
+ private _buildClusterClient;
48
75
  /**
49
76
  * Convenience method: set a key and its value
50
77
  *
51
78
  * Options:
52
79
  * - onlyIfNew: if true, set the NX option
53
80
  * - ttl: if true, set the PX option
54
- *
55
- * @param {string} key
56
- * @param {string} value
57
- * @param {{onlyIfNew: boolean, ttl: number}} [options]
58
- * @return {boolean} true if the key was set, false otherwise
59
81
  */
60
82
  store(key: string, value: string, { onlyIfNew, ttl }?: {
61
- onlyIfNew: boolean;
62
- ttl: number;
63
- }): boolean;
83
+ onlyIfNew?: boolean;
84
+ ttl?: number;
85
+ }): Promise<boolean>;
64
86
  /**
65
87
  * Executes a client command
66
- * @param {string} command
67
- * @param {Array} args
68
- * @return {Promise.<*>}
69
88
  */
70
- exec(command: string, ...args: any[]): Promise<any>;
89
+ exec(command: string, ...args: unknown[]): Promise<unknown>;
71
90
  }
72
- import Service = require("../service");
73
- import Bluebird = require("bluebird");
74
- import IORedis = require("ioredis");
91
+ export = Redis;