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
@@ -60,3 +60,21 @@ message HandshakeResponse {
60
60
  bool added = 1;
61
61
  uint64 lastMessageId = 2;
62
62
  }
63
+
64
+ // Retransmit request: the messages a subscriber missed from this node's sync
65
+ // stream, by message id, both ends included (#2785)
66
+ message RetransmitRequest {
67
+ uint64 from = 1;
68
+ uint64 to = 2;
69
+ }
70
+
71
+ // Retransmit response: the missed messages, in order, exactly as they were
72
+ // published (topic + encoded sync message)
73
+ message RetransmitResponse {
74
+ message Frame {
75
+ string topic = 1;
76
+ bytes data = 2;
77
+ }
78
+
79
+ repeated Frame frames = 1;
80
+ }
@@ -0,0 +1,104 @@
1
+ import type Long from "long";
2
+ import type { NewAuthStrategyMessage } from "./syncMessages";
3
+ /**
4
+ * The shapes `command.proto` puts on the wire, as `protobufjs`' `toObject()`
5
+ * returns them.
6
+ *
7
+ * Same contract as [`syncMessages.ts`](./syncMessages.ts): `command.proto` is
8
+ * the source of truth and these types mirror it field for field, so the command
9
+ * layer is checked against the schema rather than against a reader's memory of
10
+ * it. Keep them in step with the `.proto`.
11
+ *
12
+ * The two decoding details `syncMessages.ts` documents apply here too: a proto
13
+ * `uint64` comes back as a **`Long`** (`lastMessageId`, `messageId`), a `uint32`
14
+ * as a plain number (`subscribers`, `event`), and a field the schema comments as
15
+ * needing to be "stringified beforehand" is a **string** its reader parses.
16
+ */
17
+ /**
18
+ * A message as `toObject()` hands it back, before anything has established that
19
+ * its fields are there. Every proto3 field is optional on the wire, and
20
+ * `toObject()` returns an index-signature object — so this is what a decode
21
+ * actually yields, and narrowing it is the reader's job. `subscriber.ts`'s
22
+ * `DecodedMessage` is the same admission for `sync.proto`.
23
+ */
24
+ export type Decoded<T> = Partial<T> & Record<string, unknown>;
25
+ /** `FullStateResponse.NodeSubscribers` — who subscribed to a realtime room. */
26
+ export type NodeSubscribers = {
27
+ nodeId: string;
28
+ subscribers: number;
29
+ messageId: Long;
30
+ };
31
+ /** `FullStateResponse.RealtimeRoom`. */
32
+ export type RealtimeRoom = {
33
+ roomId: string;
34
+ index: string;
35
+ collection: string;
36
+ /**
37
+ * Serialized JSON. The schema says so explicitly: protobuf cannot carry an
38
+ * array of polymorphic objects, so the filters travel stringified.
39
+ */
40
+ filters: string;
41
+ nodes: NodeSubscribers[];
42
+ };
43
+ /**
44
+ * `FullStateResponse.Activity`. `event` is a `nodeActivityEnum` value, which
45
+ * the schema can only express as a `uint32`.
46
+ */
47
+ export type Activity = {
48
+ id: string;
49
+ date: string;
50
+ address: string;
51
+ event: number;
52
+ reason?: string;
53
+ };
54
+ /** `FullStateResponse.NodeState` — a node and the last message it published. */
55
+ export type NodeState = {
56
+ id: string;
57
+ lastMessageId: Long;
58
+ };
59
+ /**
60
+ * `command.proto` declares `authStrategies` as `repeated sync.NewAuthStrategy`,
61
+ * but the `messageId` that message carries is **never populated on this path**:
62
+ * the full state stores the strategy triple exactly as `addAuthStrategy()`
63
+ * received it, with no message id. The schema reuses a type that has a field
64
+ * this payload has no value for; the `Omit` says so rather than inventing one.
65
+ */
66
+ export type FullStateAuthStrategy = Omit<NewAuthStrategyMessage, "messageId">;
67
+ export type FullStateResponse = {
68
+ rooms: RealtimeRoom[];
69
+ authStrategies: FullStateAuthStrategy[];
70
+ activity: Activity[];
71
+ nodesState: NodeState[];
72
+ };
73
+ export type HandshakeRequest = {
74
+ nodeId: string;
75
+ lastMessageId: Long;
76
+ ip: string;
77
+ };
78
+ export type HandshakeResponse = {
79
+ added: boolean;
80
+ lastMessageId: Long;
81
+ };
82
+ /**
83
+ * The topics the command REP/REQ socket answers on. `DISCARDED` is the reply to
84
+ * anything else: REQ/REP requires a reply to every request, so an unknown topic
85
+ * still gets an (empty) answer rather than leaving the peer waiting.
86
+ */
87
+ export type RetransmitRequest = {
88
+ from: Long;
89
+ to: Long;
90
+ };
91
+ /** One sync message as it was published: its topic and its encoded payload. */
92
+ export type RetransmitFrame = {
93
+ topic: string;
94
+ data: Uint8Array;
95
+ };
96
+ export type RetransmitResponse = {
97
+ frames: RetransmitFrame[];
98
+ };
99
+ export declare const commandTopic: Readonly<{
100
+ DISCARDED: "discarded";
101
+ FULLSTATE: "fullstate";
102
+ HANDSHAKE: "handshake";
103
+ RETRANSMIT: "retransmit";
104
+ }>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /*
3
+ * Kuzzle, a backend software, self-hostable and ready to use
4
+ * to power modern apps
5
+ *
6
+ * Copyright 2015-2022 Kuzzle
7
+ * mailto: support AT kuzzle.io
8
+ * website: http://kuzzle.io
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * https://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.commandTopic = void 0;
24
+ exports.commandTopic = Object.freeze({
25
+ DISCARDED: "discarded",
26
+ FULLSTATE: "fullstate",
27
+ HANDSHAKE: "handshake",
28
+ RETRANSMIT: "retransmit",
29
+ });
30
+ //# sourceMappingURL=commandMessages.js.map
@@ -0,0 +1,184 @@
1
+ import type Long from "long";
2
+ /**
3
+ * The shapes `sync.proto` puts on the wire, as `protobufjs`' `toObject()`
4
+ * returns them.
5
+ *
6
+ * `sync.proto` is the source of truth: these types mirror it field for field
7
+ * and exist so the cluster's message handlers are checked against the schema
8
+ * rather than against a reader's memory of it. Keep them in step with the
9
+ * `.proto` — a field added there and forgotten here is a field the compiler
10
+ * will say does not exist.
11
+ *
12
+ * Two decoding details are load-bearing:
13
+ * - a proto `uint64` comes back as a **`Long`**, not a number, because the
14
+ * `long` package is installed (`messageId` and `timestamp`);
15
+ * - a proto `uint32` comes back as a plain number (`status`);
16
+ * - fields commented "serialized JSON" in the schema are **strings** here, and
17
+ * every handler that reads one calls `JSON.parse` on it.
18
+ */
19
+ /**
20
+ * Every sync message carries a `messageId`: it is what lets a subscriber detect
21
+ * that it missed one. `sync.proto` states the rule in its header comment, and
22
+ * `validateMessage()` enforces it on the wire.
23
+ */
24
+ export type SyncMessage = {
25
+ messageId: Long;
26
+ };
27
+ export type HeartbeatMessage = SyncMessage & {
28
+ address: string;
29
+ };
30
+ export type NodeEvictedMessage = SyncMessage & {
31
+ nodeId: string;
32
+ reason: string;
33
+ evictor: string;
34
+ };
35
+ export type NodeShutdownMessage = SyncMessage & {
36
+ nodeId: string;
37
+ };
38
+ export type NodePreventEvictionMessage = SyncMessage & {
39
+ evictionPrevented: boolean;
40
+ };
41
+ export type NewRealtimeRoomMessage = SyncMessage & {
42
+ /** Koncorde index, i.e. an index/collection pair encoded as one string */
43
+ index: string;
44
+ id: string;
45
+ /** serialized JSON */
46
+ filter: string;
47
+ };
48
+ export type RemoveRealtimeRoomMessage = SyncMessage & {
49
+ roomId: string;
50
+ };
51
+ export type SubscriptionMessage = SyncMessage & {
52
+ roomId: string;
53
+ };
54
+ export type UnsubscriptionMessage = SyncMessage & {
55
+ roomId: string;
56
+ };
57
+ export type DocumentNotificationMessage = SyncMessage & {
58
+ rooms: string[];
59
+ status: number;
60
+ requestId: string;
61
+ timestamp: Long;
62
+ index: string;
63
+ collection: string;
64
+ controller: string;
65
+ action: string;
66
+ protocol: string;
67
+ scope: string;
68
+ /** serialized JSON */
69
+ volatile: string;
70
+ /** serialized JSON */
71
+ result: string;
72
+ };
73
+ export type UserNotificationMessage = SyncMessage & {
74
+ room: string;
75
+ status: number;
76
+ timestamp: Long;
77
+ index: string;
78
+ collection: string;
79
+ controller: string;
80
+ action: string;
81
+ protocol: string;
82
+ user: string;
83
+ /** serialized JSON */
84
+ volatile: string;
85
+ /** serialized JSON */
86
+ result: string;
87
+ };
88
+ export type AuthStrategyConfig = {
89
+ authenticator: string;
90
+ fields: string[];
91
+ /** serialized JSON */
92
+ authenticateOptions: string;
93
+ /** serialized JSON */
94
+ strategyOptions: string;
95
+ };
96
+ export type AuthStrategyMethods = {
97
+ create: string;
98
+ delete: string;
99
+ exists: string;
100
+ update: string;
101
+ validate: string;
102
+ verify: string;
103
+ getById?: string;
104
+ getInfo?: string;
105
+ afterRegister?: string;
106
+ };
107
+ export type AuthStrategy = {
108
+ methods: AuthStrategyMethods;
109
+ config: AuthStrategyConfig;
110
+ };
111
+ export type NewAuthStrategyMessage = SyncMessage & {
112
+ strategyName: string;
113
+ pluginName: string;
114
+ strategy: AuthStrategy;
115
+ };
116
+ export type RemoveAuthStrategyMessage = SyncMessage & {
117
+ strategyName: string;
118
+ pluginName: string;
119
+ };
120
+ export type DumpRequestMessage = SyncMessage & {
121
+ suffix: string;
122
+ };
123
+ export type InvalidateProfileMessage = SyncMessage & {
124
+ profileId: string;
125
+ };
126
+ export type InvalidateRoleMessage = SyncMessage & {
127
+ roleId: string;
128
+ };
129
+ export type AddIndexMessage = SyncMessage & {
130
+ scope: string;
131
+ index: string;
132
+ };
133
+ export type AddCollectionMessage = SyncMessage & {
134
+ scope: string;
135
+ index: string;
136
+ collection: string;
137
+ };
138
+ export type RemoveIndexesMessage = SyncMessage & {
139
+ scope: string;
140
+ indexes: string[];
141
+ };
142
+ export type RemoveCollectionMessage = SyncMessage & {
143
+ scope: string;
144
+ index: string;
145
+ collection: string;
146
+ };
147
+ export type ClusterWideEventMessage = SyncMessage & {
148
+ event: string;
149
+ /** serialized JSON */
150
+ payload: string;
151
+ };
152
+ /**
153
+ * Topic name → the message that topic carries. A topic is a protobuf type name,
154
+ * so this map is the same list as `sync.proto`'s, and `ClusterSubscriber`'s
155
+ * handler table is typed against it: a handler registered under the wrong topic
156
+ * stops compiling.
157
+ */
158
+ export type SyncMessages = {
159
+ AddCollection: AddCollectionMessage;
160
+ AddIndex: AddIndexMessage;
161
+ ClusterWideEvent: ClusterWideEventMessage;
162
+ DocumentNotification: DocumentNotificationMessage;
163
+ DumpRequest: DumpRequestMessage;
164
+ Heartbeat: HeartbeatMessage;
165
+ InvalidateProfile: InvalidateProfileMessage;
166
+ InvalidateRole: InvalidateRoleMessage;
167
+ NewAuthStrategy: NewAuthStrategyMessage;
168
+ NewRealtimeRoom: NewRealtimeRoomMessage;
169
+ NodeEvicted: NodeEvictedMessage;
170
+ NodePreventEviction: NodePreventEvictionMessage;
171
+ NodeShutdown: NodeShutdownMessage;
172
+ RefreshIndexCache: SyncMessage;
173
+ RefreshValidators: SyncMessage;
174
+ RemoveAuthStrategy: RemoveAuthStrategyMessage;
175
+ RemoveCollection: RemoveCollectionMessage;
176
+ RemoveIndexes: RemoveIndexesMessage;
177
+ RemoveRealtimeRoom: RemoveRealtimeRoomMessage;
178
+ ResetSecurity: SyncMessage;
179
+ Shutdown: SyncMessage;
180
+ Subscription: SubscriptionMessage;
181
+ Unsubscription: UnsubscriptionMessage;
182
+ UserNotification: UserNotificationMessage;
183
+ };
184
+ export type SyncTopic = keyof SyncMessages;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /*
3
+ * Kuzzle, a backend software, self-hostable and ready to use
4
+ * to power modern apps
5
+ *
6
+ * Copyright 2015-2022 Kuzzle
7
+ * mailto: support AT kuzzle.io
8
+ * website: http://kuzzle.io
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * https://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ //# sourceMappingURL=syncMessages.js.map
@@ -1,164 +1,196 @@
1
- export = ClusterPublisher;
1
+ import Long from "long";
2
+ import type { JSONObject } from "../types/JSONObject";
3
+ import type { NormalizedFilter } from "koncorde";
4
+ import type DocumentNotification from "../core/realtime/notification/document";
5
+ import type UserNotification from "../core/realtime/notification/user";
6
+ import type { storeScopeEnum } from "../core/storage/storeScopeEnum";
7
+ import type { IKuzzleConfiguration } from "../types/config/KuzzleConfiguration";
8
+ /**
9
+ * What the publisher needs from the node that owns it. `node.js` is converted
10
+ * in J3; this is the part of its surface this file actually reads, not a
11
+ * placeholder for the whole class.
12
+ */
13
+ type PublishingNode = {
14
+ config: IKuzzleConfiguration["cluster"];
15
+ };
16
+ type BufferedMessage = {
17
+ topic: string;
18
+ /**
19
+ * protobuf's `finish()` returns a `Uint8Array`, not a `Buffer` — the JSDoc on
20
+ * `bufferSend` claimed `Buffer` for as long as the file was JavaScript.
21
+ */
22
+ data: Uint8Array;
23
+ };
2
24
  declare class ClusterPublisher {
25
+ private readonly node;
3
26
  /**
4
- * @constructor
5
- * @param {ClusterNode} node
27
+ * ID of the last message sent. Read by `command.js` to answer a handshake,
28
+ * and by every `send*` caller that needs to name the message it just queued.
6
29
  */
7
- constructor(node: ClusterNode);
8
- node: ClusterNode;
9
30
  lastMessageId: Long;
10
- socket: Publisher;
11
- protoroot: protobuf.Root;
12
- state: 1;
13
- buffer: any[];
31
+ private socket;
32
+ private protoroot;
33
+ private state;
34
+ private buffer;
35
+ /**
36
+ * The last messages sent, oldest first, with contiguous ids: what
37
+ * `replay()` answers from. Bounded by `cluster.retransmitBuffer`.
38
+ */
39
+ private readonly history;
40
+ private historyBytes;
41
+ private readonly dropHeartbeatEvery;
42
+ private heartbeatsSent;
43
+ /**
44
+ * @param node the cluster node this publisher belongs to
45
+ */
46
+ constructor(node: PublishingNode);
14
47
  init(): Promise<void>;
15
48
  /**
16
49
  * Publishes an event telling them that this node has created a new room
17
50
  *
18
- * @param {NormalizedFilter} normalized - Obtained with Koncorde.normalize()
19
- * @return {Long} ID of the message sent to other nodes
51
+ * @param normalized - Obtained with Koncorde.normalize()
52
+ * @return ID of the message sent to other nodes
20
53
  */
21
54
  sendNewRealtimeRoom(normalized: NormalizedFilter): Long;
22
55
  /**
23
56
  * Publishes an event telling telling them that this node
24
57
  * no longer has subscribers on the provided realtime room.
25
58
  *
26
- * @param {string} roomId
27
- * @return {Long} ID of the message sent to other nodes
59
+ * @param roomId
60
+ * @return ID of the message sent to other nodes
28
61
  */
29
62
  sendRemoveRealtimeRoom(roomId: string): Long;
30
63
  /**
31
64
  * Publishes an event telling that a room has one less subscriber
32
- * @param {string} roomId
33
- * @return {Long} ID of the message sent to other nodes
65
+ * @param roomId
66
+ * @return ID of the message sent to other nodes
34
67
  */
35
68
  sendUnsubscription(roomId: string): Long;
36
69
  /**
37
70
  * Publishes an event telling that a new subscription has been made
38
71
  * made to an existing room
39
72
  *
40
- * @param {string} roomId
41
- * @return {Long} Id of the message sent to other nodes
73
+ * @param roomId
74
+ * @return Id of the message sent to other nodes
42
75
  */
43
76
  sendSubscription(roomId: string): Long;
44
77
  /**
45
78
  * Publishes an event telling that a document notification must be
46
79
  * propagated
47
80
  *
48
- * @param {Array.<string>} rooms - Koncorde rooms
49
- * @param {DocumentNotification} notification
50
- * @return {Long} Id of the message sent to other nodes
81
+ * @param rooms - Koncorde rooms
82
+ * @param notification
83
+ * @return Id of the message sent to other nodes
51
84
  */
52
- sendDocumentNotification(rooms: Array<string>, notification: DocumentNotification): Long;
85
+ sendDocumentNotification(rooms: string[], notification: DocumentNotification): Long;
53
86
  /**
54
87
  * Publishes an event telling that a user notification must be
55
88
  * propagated
56
89
  *
57
- * @param {string} room - Koncorde room
58
- * @param {UserNotification} notification
59
- * @return {Long} Id of the message sent to other nodes
90
+ * @param room - Koncorde room
91
+ * @param notification
92
+ * @return Id of the message sent to other nodes
60
93
  */
61
94
  sendUserNotification(room: string, notification: UserNotification): Long;
62
95
  /**
63
96
  * Publishes an event telling that a new authentication strategy has been
64
97
  * dynamically added
65
98
  *
66
- * @param {string} strategyName
67
- * @param {string} pluginName
68
- * @param {Object} strategy
69
- * @return {Long} Id of the message sent to other nodes
99
+ * @param strategyName
100
+ * @param pluginName
101
+ * @param strategy
102
+ * @return Id of the message sent to other nodes
70
103
  */
71
- sendNewAuthStrategy(strategyName: string, pluginName: string, strategy: any): Long;
104
+ sendNewAuthStrategy(strategyName: string, pluginName: string, strategy: JSONObject): Long;
72
105
  /**
73
106
  * Publishes an event telling that a new authentication strategy has been
74
107
  * dynamically added
75
108
  *
76
- * @param {string} strategyName
77
- * @param {string} pluginName
78
- * @param {Object} strategyObject
79
- * @return {Long} Id of the message sent to other nodes
109
+ * @param strategyName
110
+ * @param pluginName
111
+ * @return Id of the message sent to other nodes
80
112
  */
81
113
  sendRemoveAuthStrategy(strategyName: string, pluginName: string): Long;
82
114
  /**
83
115
  * Publishes an event telling other nodes to create an info dump
84
116
  *
85
- * @param {string} suffix - dump directory suffix name
86
- * @returns {Long} ID of the message sent
117
+ * @param suffix - dump directory suffix name
118
+ * @returns ID of the message sent
87
119
  */
88
120
  sendDumpRequest(suffix: string): Long;
89
121
  /**
90
122
  * Publishes an event about a new index being added
91
123
  *
92
- * @param {storeScopeEnum} scope
93
- * @param {string} index
94
- * @returns {Long} ID of the message sent
124
+ * @param scope
125
+ * @param index
126
+ * @returns ID of the message sent
95
127
  */
96
128
  sendAddIndex(scope: storeScopeEnum, index: string): Long;
97
129
  /**
98
130
  * Publishes an event about a new collection being added
99
131
  *
100
- * @param {storeScopeEnum} scope
101
- * @param {string} index
102
- * @param {string} collection
103
- * @returns {Long} ID of the message sent
132
+ * @param scope
133
+ * @param index
134
+ * @param collection
135
+ * @returns ID of the message sent
104
136
  */
105
137
  sendAddCollection(scope: storeScopeEnum, index: string, collection: string): Long;
106
138
  /**
107
139
  * Publishes an event about indexes been removed
108
140
  *
109
- * @param {storeScopeEnum} scope
110
- * @param {Array.<string>} indexes
111
- * @returns {Long} ID of the message sent
141
+ * @param scope
142
+ * @param indexes
143
+ * @returns ID of the message sent
112
144
  */
113
- sendRemoveIndexes(scope: storeScopeEnum, indexes: Array<string>): Long;
145
+ sendRemoveIndexes(scope: storeScopeEnum, indexes: string[]): Long;
114
146
  /**
115
147
  * Publishes an event about a collection been removed
116
148
  *
117
- * @param {storeScopeEnum} scope
118
- * @param {string} index
119
- * @param {string} collection
120
- * @returns {Long} ID of the message sent
149
+ * @param scope
150
+ * @param index
151
+ * @param collection
152
+ * @returns ID of the message sent
121
153
  */
122
154
  sendRemoveCollection(scope: storeScopeEnum, index: string, collection: string): Long;
123
155
  /**
124
156
  * Publishes an event about a cluster-wide event emission
125
157
  *
126
- * @param {string} event name
127
- * @param {Object} payload - event payload
128
- * @returns {Long} ID of the message sent
158
+ * @param event name
159
+ * @param payload - event payload
160
+ * @returns ID of the message sent
129
161
  */
130
- sendClusterWideEvent(event: string, payload: any): Long;
162
+ sendClusterWideEvent(event: string, payload: JSONObject): Long;
131
163
  /**
132
164
  * Publishes an event about shutdown
133
165
  *
134
- * @param {Object} nodeId - node ID
166
+ * @param nodeId - node ID
135
167
  *
136
- * @returns {Long} ID of the message sent
168
+ * @returns ID of the message sent
137
169
  */
138
- sendNodeShutdown(nodeId: any): Long;
170
+ sendNodeShutdown(nodeId: string): Long;
139
171
  /**
140
172
  * Publishes an event about the node being in debug mode
141
- * @param {bool} evictionPrevented
173
+ * @param evictionPrevented
142
174
  *
143
- * @returns {Long} ID of the message sent
175
+ * @returns ID of the message sent
144
176
  */
145
- sendNodePreventEviction(evictionPrevented: bool): Long;
177
+ sendNodePreventEviction(evictionPrevented: boolean): Long;
146
178
  /**
147
179
  * Publishes an event about a node being evicted
148
180
  *
149
- * @param {string} evictor node ID of the evictor
150
- * @param {Object} nodeId - node ID of the node being evicted
151
- * @param {Object} reason - reason of the eviction
181
+ * @param evictor node ID of the evictor
182
+ * @param nodeId - node ID of the node being evicted
183
+ * @param reason - reason of the eviction
152
184
  *
153
- * @returns {Long} ID of the message sent
185
+ * @returns ID of the message sent
154
186
  */
155
- sendNodeEvicted(evictor: string, nodeId: any, reason: any): Long;
187
+ sendNodeEvicted(evictor: string, nodeId: string, reason: string): Long;
156
188
  /**
157
189
  * Publishes an event about heartbeat
158
190
  *
159
- * @param {string} address node sync address
191
+ * @param address node sync address
160
192
  *
161
- * @returns {Long} ID of the message sent
193
+ * @returns ID of the message sent
162
194
  */
163
195
  sendHeartbeat(address: string): Long;
164
196
  /**
@@ -166,23 +198,31 @@ declare class ClusterPublisher {
166
198
  * Returns immediately, but the message to be sent migh be bufferized and send
167
199
  * later.
168
200
  *
169
- * @param {String} topic name
170
- * @param {Object} data
171
- * @returns {Long} ID of the message sent
201
+ * @param topic name
202
+ * @param data
203
+ * @returns ID of the message sent
172
204
  * @throws If the topic's protobuf type cannot be found
173
205
  */
174
- send(topic: string, data: any): Long;
206
+ send(topic: string, data: JSONObject): Long;
207
+ /**
208
+ * The messages sent with ids `from` to `to`, both included, in order — or
209
+ * `null` if any of them is no longer kept (or never was).
210
+ */
211
+ replay(from: Long, to: Long): BufferedMessage[] | null;
212
+ /**
213
+ * Keeps a sent message for `replay()`, then trims the oldest ones until
214
+ * both of `cluster.retransmitBuffer`'s bounds hold. A bound of 0 keeps
215
+ * nothing: retransmission is disabled.
216
+ */
217
+ private remember;
175
218
  /**
176
219
  * Sends the provided message, and then sends all pending ones waiting in
177
220
  * the buffer, in order
178
221
  *
179
- * @param {string} topic
180
- * @param {Buffer} data
181
- * @return {void}
222
+ * @param topic
223
+ * @param data
182
224
  */
183
- bufferSend(topic: string, data: Buffer): void;
225
+ bufferSend(topic: string, data: Uint8Array): Promise<void>;
184
226
  dispose(): Promise<void>;
185
227
  }
186
- import Long = require("long/umd/types");
187
- import { Publisher } from "zeromq";
188
- import protobuf = require("protobufjs");
228
+ export = ClusterPublisher;