kuzzle 2.49.1 → 2.50.0-beta.4

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 (591) hide show
  1. package/dist/bin/copy-protobuf.js +17 -0
  2. package/dist/lib/api/controllers/adminController.d.ts +51 -0
  3. package/dist/lib/api/controllers/adminController.js +191 -0
  4. package/{lib → dist/lib}/api/controllers/authController.d.ts +20 -40
  5. package/{lib → dist/lib}/api/controllers/authController.js +23 -24
  6. package/dist/lib/api/controllers/bulkController.d.ts +46 -0
  7. package/dist/lib/api/controllers/bulkController.js +132 -0
  8. package/dist/lib/api/controllers/clusterController.d.ts +6 -0
  9. package/{lib → dist/lib}/api/controllers/clusterController.js +7 -11
  10. package/dist/lib/api/controllers/collectionController.d.ts +136 -0
  11. package/dist/lib/api/controllers/collectionController.js +356 -0
  12. package/dist/lib/api/controllers/documentController.d.ts +181 -0
  13. package/dist/lib/api/controllers/documentController.js +768 -0
  14. package/dist/lib/api/controllers/index.d.ts +12 -0
  15. package/{lib → dist/lib}/api/controllers/index.js +13 -14
  16. package/dist/lib/api/controllers/indexController.d.ts +65 -0
  17. package/dist/lib/api/controllers/indexController.js +139 -0
  18. package/dist/lib/api/controllers/memoryStorageController.d.ts +8 -0
  19. package/dist/lib/api/controllers/memoryStorageController.js +867 -0
  20. package/dist/lib/api/controllers/realtimeController.d.ts +47 -0
  21. package/dist/lib/api/controllers/realtimeController.js +128 -0
  22. package/dist/lib/api/controllers/securityController.d.ts +423 -0
  23. package/dist/lib/api/controllers/securityController.js +1139 -0
  24. package/dist/lib/api/controllers/serverController.d.ts +82 -0
  25. package/dist/lib/api/controllers/serverController.js +321 -0
  26. package/dist/lib/api/documentExtractor.d.ts +9 -0
  27. package/dist/lib/api/documentExtractor.js +274 -0
  28. package/dist/lib/api/funnel.d.ts +183 -0
  29. package/dist/lib/api/funnel.js +821 -0
  30. package/dist/lib/api/httpRoutes.d.ts +17 -0
  31. package/dist/lib/api/httpRoutes.js +1496 -0
  32. package/dist/lib/api/rateLimiter.d.ts +18 -0
  33. package/dist/lib/api/rateLimiter.js +74 -0
  34. package/{lib → dist/lib}/api/request/kuzzleRequest.d.ts +2 -2
  35. package/{lib → dist/lib}/api/request/requestContext.d.ts +2 -1
  36. package/dist/lib/cluster/command.d.ts +73 -0
  37. package/dist/lib/cluster/command.js +236 -0
  38. package/dist/lib/cluster/index.d.ts +2 -0
  39. package/{lib → dist/lib}/cluster/index.js +1 -2
  40. package/dist/lib/cluster/node.d.ts +278 -0
  41. package/dist/lib/cluster/node.js +876 -0
  42. package/dist/lib/cluster/publisher.d.ts +188 -0
  43. package/dist/lib/cluster/publisher.js +347 -0
  44. package/dist/lib/cluster/subscriber.d.ts +269 -0
  45. package/dist/lib/cluster/subscriber.js +555 -0
  46. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +13 -0
  47. package/dist/lib/cluster/workers/IDCardRenewer.js +120 -0
  48. package/{lib → dist/lib}/config/documentEventAliases.d.ts +1 -2
  49. package/dist/lib/config/index.d.ts +5 -0
  50. package/dist/lib/config/index.js +244 -0
  51. package/dist/lib/config/sdkCompatibility.json +9 -0
  52. package/dist/lib/core/auth/formatProcessing.d.ts +30 -0
  53. package/dist/lib/core/auth/formatProcessing.js +55 -0
  54. package/dist/lib/core/auth/passportResponse.d.ts +15 -0
  55. package/{lib → dist/lib}/core/auth/passportResponse.js +24 -30
  56. package/dist/lib/core/auth/passportWrapper.d.ts +28 -0
  57. package/dist/lib/core/auth/passportWrapper.js +126 -0
  58. package/{lib → dist/lib}/core/backend/backendConfig.js +2 -2
  59. package/{lib → dist/lib}/core/backend/backendErrors.js +9 -12
  60. package/dist/lib/core/cache/cacheEngine.d.ts +15 -0
  61. package/dist/lib/core/cache/cacheEngine.js +205 -0
  62. package/dist/lib/core/network/accessLogger.d.ts +29 -0
  63. package/dist/lib/core/network/accessLogger.js +250 -0
  64. package/dist/lib/core/network/clientConnection.d.ts +15 -0
  65. package/{lib → dist/lib}/core/network/clientConnection.js +17 -24
  66. package/dist/lib/core/network/context.d.ts +42 -0
  67. package/dist/lib/core/network/context.js +57 -0
  68. package/dist/lib/core/network/entryPoint.d.ts +62 -0
  69. package/dist/lib/core/network/entryPoint.js +261 -0
  70. package/dist/lib/core/network/httpRouter/index.d.ts +85 -0
  71. package/dist/lib/core/network/httpRouter/index.js +258 -0
  72. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +46 -0
  73. package/dist/lib/core/network/httpRouter/routeHandler.js +101 -0
  74. package/dist/lib/core/network/httpRouter/routePart.d.ts +35 -0
  75. package/dist/lib/core/network/httpRouter/routePart.js +117 -0
  76. package/dist/lib/core/network/protocolManifest.d.ts +6 -0
  77. package/{lib → dist/lib}/core/network/protocolManifest.js +5 -9
  78. package/dist/lib/core/network/protocols/httpMessage.d.ts +22 -0
  79. package/dist/lib/core/network/protocols/httpMessage.js +62 -0
  80. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +171 -0
  81. package/dist/lib/core/network/protocols/httpwsProtocol.js +921 -0
  82. package/dist/lib/core/network/protocols/internalProtocol.d.ts +27 -0
  83. package/dist/lib/core/network/protocols/internalProtocol.js +82 -0
  84. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +39 -0
  85. package/dist/lib/core/network/protocols/mqttProtocol.js +219 -0
  86. package/dist/lib/core/network/protocols/protocol.d.ts +26 -0
  87. package/dist/lib/core/network/protocols/protocol.js +74 -0
  88. package/dist/lib/core/network/router.d.ts +49 -0
  89. package/dist/lib/core/network/router.js +193 -0
  90. package/dist/lib/core/plugin/plugin.d.ts +56 -0
  91. package/dist/lib/core/plugin/plugin.js +282 -0
  92. package/{lib → dist/lib}/core/plugin/pluginContext.js +2 -2
  93. package/dist/lib/core/plugin/pluginManifest.d.ts +5 -0
  94. package/{lib → dist/lib}/core/plugin/pluginManifest.js +16 -27
  95. package/dist/lib/core/plugin/pluginRepository.d.ts +53 -0
  96. package/dist/lib/core/plugin/pluginRepository.js +112 -0
  97. package/dist/lib/core/plugin/pluginsManager.d.ts +190 -0
  98. package/dist/lib/core/plugin/pluginsManager.js +817 -0
  99. package/dist/lib/core/plugin/privilegedContext.d.ts +14 -0
  100. package/{lib → dist/lib}/core/plugin/privilegedContext.js +10 -14
  101. package/dist/lib/core/realtime/actionEnum.d.ts +25 -0
  102. package/{lib → dist/lib}/core/realtime/actionEnum.js +7 -10
  103. package/dist/lib/core/realtime/index.d.ts +8 -0
  104. package/{lib → dist/lib}/core/realtime/index.js +9 -13
  105. package/dist/lib/core/realtime/notification/document.d.ts +34 -0
  106. package/dist/lib/core/realtime/notification/document.js +98 -0
  107. package/dist/lib/core/realtime/notification/index.d.ts +3 -0
  108. package/{lib → dist/lib}/core/realtime/notification/index.js +4 -5
  109. package/dist/lib/core/realtime/notification/server.d.ts +17 -0
  110. package/{lib → dist/lib}/core/realtime/notification/server.js +8 -10
  111. package/dist/lib/core/realtime/notification/user.d.ts +29 -0
  112. package/dist/lib/core/realtime/notification/user.js +66 -0
  113. package/dist/lib/core/realtime/notifier.d.ts +171 -0
  114. package/dist/lib/core/realtime/notifier.js +405 -0
  115. package/dist/lib/core/security/index.d.ts +14 -0
  116. package/{lib → dist/lib}/core/security/index.js +15 -19
  117. package/dist/lib/core/security/roleRepository.d.ts +143 -0
  118. package/dist/lib/core/security/roleRepository.js +445 -0
  119. package/dist/lib/core/security/securityLoader.d.ts +24 -0
  120. package/dist/lib/core/security/securityLoader.js +125 -0
  121. package/{lib → dist/lib}/core/security/tokenRepository.js +1 -1
  122. package/dist/lib/core/security/userRepository.d.ts +81 -0
  123. package/dist/lib/core/security/userRepository.js +346 -0
  124. package/dist/lib/core/shared/abstractManifest.d.ts +27 -0
  125. package/dist/lib/core/shared/abstractManifest.js +85 -0
  126. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +7 -0
  127. package/dist/lib/core/shared/sdk/impersonatedSdk.js +80 -0
  128. package/{lib → dist/lib}/core/shared/store.d.ts +2 -2
  129. package/dist/lib/core/statistics/statistics.d.ts +94 -0
  130. package/dist/lib/core/statistics/statistics.js +287 -0
  131. package/dist/lib/core/storage/clientAdapter.d.ts +62 -0
  132. package/dist/lib/core/storage/clientAdapter.js +756 -0
  133. package/dist/lib/core/storage/storageEngine.d.ts +13 -0
  134. package/dist/lib/core/storage/storageEngine.js +52 -0
  135. package/dist/lib/core/validation/baseType.d.ts +35 -0
  136. package/dist/lib/core/validation/baseType.js +70 -0
  137. package/dist/lib/core/validation/types/anything.d.ts +10 -0
  138. package/{lib → dist/lib}/core/validation/types/anything.js +7 -10
  139. package/dist/lib/core/validation/types/boolean.d.ts +16 -0
  140. package/{lib → dist/lib}/core/validation/types/boolean.js +18 -23
  141. package/dist/lib/core/validation/types/date.d.ts +17 -0
  142. package/dist/lib/core/validation/types/date.js +215 -0
  143. package/dist/lib/core/validation/types/email.d.ts +17 -0
  144. package/dist/lib/core/validation/types/email.js +80 -0
  145. package/dist/lib/core/validation/types/enum.d.ts +17 -0
  146. package/dist/lib/core/validation/types/enum.js +70 -0
  147. package/dist/lib/core/validation/types/geoPoint.d.ts +17 -0
  148. package/{lib → dist/lib}/core/validation/types/geoPoint.js +19 -24
  149. package/dist/lib/core/validation/types/geoShape.d.ts +31 -0
  150. package/dist/lib/core/validation/types/geoShape.js +280 -0
  151. package/dist/lib/core/validation/types/integer.d.ts +7 -0
  152. package/{lib → dist/lib}/core/validation/types/integer.js +21 -27
  153. package/dist/lib/core/validation/types/ipAddress.d.ts +17 -0
  154. package/dist/lib/core/validation/types/ipAddress.js +73 -0
  155. package/dist/lib/core/validation/types/numeric.d.ts +17 -0
  156. package/dist/lib/core/validation/types/numeric.js +84 -0
  157. package/dist/lib/core/validation/types/object.d.ts +24 -0
  158. package/dist/lib/core/validation/types/object.js +74 -0
  159. package/dist/lib/core/validation/types/string.d.ts +17 -0
  160. package/dist/lib/core/validation/types/string.js +85 -0
  161. package/dist/lib/core/validation/types/url.d.ts +17 -0
  162. package/dist/lib/core/validation/types/url.js +73 -0
  163. package/dist/lib/core/validation/validation.d.ts +113 -0
  164. package/dist/lib/core/validation/validation.js +692 -0
  165. package/dist/lib/kerror/codes/0-core.json +194 -0
  166. package/dist/lib/kerror/codes/1-services.json +351 -0
  167. package/dist/lib/kerror/codes/2-api.json +195 -0
  168. package/dist/lib/kerror/codes/3-network.json +151 -0
  169. package/dist/lib/kerror/codes/4-plugin.json +498 -0
  170. package/dist/lib/kerror/codes/5-validation.json +158 -0
  171. package/dist/lib/kerror/codes/6-protocol.json +28 -0
  172. package/dist/lib/kerror/codes/7-security.json +283 -0
  173. package/dist/lib/kerror/codes/8-cluster.json +16 -0
  174. package/dist/lib/kerror/codes/index.d.ts +24 -0
  175. package/dist/lib/kerror/codes/index.js +140 -0
  176. package/{lib → dist/lib}/kerror/index.d.ts +5 -5
  177. package/{lib → dist/lib}/kuzzle/Logger.d.ts +6 -0
  178. package/{lib → dist/lib}/kuzzle/Logger.js +26 -5
  179. package/dist/lib/kuzzle/dumpGenerator.d.ts +14 -0
  180. package/dist/lib/kuzzle/dumpGenerator.js +180 -0
  181. package/dist/lib/kuzzle/event/pipeRunner.d.ts +30 -0
  182. package/dist/lib/kuzzle/event/pipeRunner.js +119 -0
  183. package/dist/lib/kuzzle/event/waterfall.d.ts +2 -0
  184. package/dist/lib/kuzzle/event/waterfall.js +90 -0
  185. package/dist/lib/kuzzle/internalIndexHandler.d.ts +186 -0
  186. package/dist/lib/kuzzle/internalIndexHandler.js +174 -0
  187. package/{lib → dist/lib}/kuzzle/kuzzle.d.ts +6 -7
  188. package/{lib → dist/lib}/kuzzle/kuzzle.js +5 -2
  189. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +20 -0
  190. package/{lib → dist/lib}/kuzzle/kuzzleStateEnum.js +5 -8
  191. package/dist/lib/kuzzle/vault.d.ts +2 -0
  192. package/dist/lib/kuzzle/vault.js +63 -0
  193. package/dist/lib/model/security/rights.d.ts +8 -0
  194. package/{lib → dist/lib}/model/security/rights.js +4 -8
  195. package/{lib → dist/lib}/model/security/role.d.ts +1 -1
  196. package/{lib → dist/lib}/model/security/user.d.ts +1 -0
  197. package/dist/lib/model/storage/apiKey.d.ts +49 -0
  198. package/dist/lib/model/storage/apiKey.js +126 -0
  199. package/dist/lib/model/storage/baseModel.d.ts +100 -0
  200. package/dist/lib/model/storage/baseModel.js +211 -0
  201. package/dist/lib/service/cache/redis.d.ts +74 -0
  202. package/dist/lib/service/cache/redis.js +237 -0
  203. package/dist/lib/service/service.d.ts +30 -0
  204. package/dist/lib/service/service.js +74 -0
  205. package/{lib → dist/lib}/service/storage/7/elasticsearch.d.ts +2 -2
  206. package/{lib → dist/lib}/service/storage/7/elasticsearch.js +23 -25
  207. package/dist/lib/service/storage/7/esWrapper.d.ts +19 -0
  208. package/dist/lib/service/storage/7/esWrapper.js +245 -0
  209. package/{lib → dist/lib}/service/storage/8/elasticsearch.js +23 -25
  210. package/dist/lib/service/storage/8/esWrapper.d.ts +19 -0
  211. package/dist/lib/service/storage/8/esWrapper.js +245 -0
  212. package/{lib → dist/lib}/types/Plugin.d.ts +1 -1
  213. package/{lib/types → dist/lib/types/controllers}/Controller.d.ts +2 -2
  214. package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.d.ts +1 -1
  215. package/dist/lib/types/controllers/adminControlller.type.d.ts +5 -0
  216. package/dist/lib/types/controllers/adminControlller.type.js +3 -0
  217. package/dist/lib/types/controllers/authController.type.d.ts +5 -0
  218. package/dist/lib/types/controllers/authController.type.js +3 -0
  219. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -0
  220. package/dist/lib/types/core/auth/formatProcessing.type.js +3 -0
  221. package/{lib → dist/lib}/types/index.d.ts +3 -3
  222. package/{lib → dist/lib}/types/index.js +3 -3
  223. package/dist/lib/util/assertType.d.ts +41 -0
  224. package/{lib → dist/lib}/util/assertType.js +38 -56
  225. package/dist/lib/util/asyncStore.d.ts +38 -0
  226. package/dist/lib/util/asyncStore.js +70 -0
  227. package/dist/lib/util/bytes.d.ts +2 -0
  228. package/dist/lib/util/bytes.js +33 -0
  229. package/dist/lib/util/debug.d.ts +2 -0
  230. package/{lib → dist/lib}/util/debug.js +15 -23
  231. package/dist/lib/util/deprecate.d.ts +1 -0
  232. package/dist/lib/util/deprecate.js +64 -0
  233. package/dist/lib/util/didYouMean.d.ts +2 -0
  234. package/{lib → dist/lib}/util/didYouMean.js +9 -15
  235. package/dist/lib/util/extractFields.d.ts +17 -0
  236. package/{lib → dist/lib}/util/extractFields.js +18 -32
  237. package/dist/lib/util/memoize.d.ts +7 -0
  238. package/{lib → dist/lib}/util/memoize.js +14 -21
  239. package/dist/lib/util/promback.d.ts +13 -0
  240. package/dist/lib/util/promback.js +60 -0
  241. package/dist/lib/util/requestAssertions.d.ts +10 -0
  242. package/dist/lib/util/requestAssertions.js +143 -0
  243. package/dist/lib/util/safeObject.d.ts +3 -0
  244. package/{lib → dist/lib}/util/safeObject.js +7 -13
  245. package/dist/lib/util/stackTrace.d.ts +19 -0
  246. package/{lib → dist/lib}/util/stackTrace.js +35 -41
  247. package/dist/lib/util/wildcard.d.ts +1 -0
  248. package/{lib → dist/lib}/util/wildcard.js +21 -30
  249. package/dist/package.json +119 -0
  250. package/package.json +44 -58
  251. package/bin/start-kuzzle-server +0 -126
  252. package/check-node-version.js +0 -17
  253. package/lib/api/controllers/adminController.js +0 -229
  254. package/lib/api/controllers/bulkController.js +0 -210
  255. package/lib/api/controllers/collectionController.js +0 -502
  256. package/lib/api/controllers/documentController.js +0 -1156
  257. package/lib/api/controllers/indexController.js +0 -179
  258. package/lib/api/controllers/memoryStorageController.js +0 -1023
  259. package/lib/api/controllers/realtimeController.js +0 -155
  260. package/lib/api/controllers/securityController.js +0 -1571
  261. package/lib/api/controllers/serverController.js +0 -381
  262. package/lib/api/documentExtractor.js +0 -309
  263. package/lib/api/funnel.js +0 -1143
  264. package/lib/api/httpRoutes.js +0 -1547
  265. package/lib/api/rateLimiter.js +0 -87
  266. package/lib/cluster/command.js +0 -284
  267. package/lib/cluster/node.js +0 -1203
  268. package/lib/cluster/publisher.js +0 -386
  269. package/lib/cluster/subscriber.js +0 -776
  270. package/lib/cluster/workers/IDCardRenewer.js +0 -144
  271. package/lib/config/index.js +0 -351
  272. package/lib/config/sdkCompatibility.json +0 -9
  273. package/lib/core/auth/formatProcessing.js +0 -66
  274. package/lib/core/auth/passportWrapper.js +0 -126
  275. package/lib/core/cache/cacheEngine.js +0 -278
  276. package/lib/core/network/accessLogger.js +0 -322
  277. package/lib/core/network/context.js +0 -80
  278. package/lib/core/network/entryPoint.js +0 -358
  279. package/lib/core/network/httpRouter/index.js +0 -316
  280. package/lib/core/network/httpRouter/routeHandler.js +0 -111
  281. package/lib/core/network/httpRouter/routePart.js +0 -147
  282. package/lib/core/network/protocols/httpMessage.js +0 -69
  283. package/lib/core/network/protocols/httpwsProtocol.js +0 -1254
  284. package/lib/core/network/protocols/internalProtocol.js +0 -109
  285. package/lib/core/network/protocols/mqttProtocol.js +0 -291
  286. package/lib/core/network/protocols/protocol.js +0 -102
  287. package/lib/core/network/router.js +0 -255
  288. package/lib/core/plugin/plugin.js +0 -436
  289. package/lib/core/plugin/pluginRepository.js +0 -132
  290. package/lib/core/plugin/pluginsManager.js +0 -1244
  291. package/lib/core/realtime/notification/document.js +0 -108
  292. package/lib/core/realtime/notification/user.js +0 -70
  293. package/lib/core/realtime/notifier.js +0 -541
  294. package/lib/core/security/README.md +0 -223
  295. package/lib/core/security/roleRepository.js +0 -569
  296. package/lib/core/security/securityLoader.js +0 -174
  297. package/lib/core/security/userRepository.js +0 -446
  298. package/lib/core/shared/README.md +0 -3
  299. package/lib/core/shared/abstractManifest.js +0 -102
  300. package/lib/core/shared/sdk/impersonatedSdk.js +0 -94
  301. package/lib/core/statistics/index.js +0 -24
  302. package/lib/core/statistics/statistics.js +0 -373
  303. package/lib/core/storage/clientAdapter.js +0 -1045
  304. package/lib/core/storage/storageEngine.js +0 -63
  305. package/lib/core/validation/baseType.js +0 -80
  306. package/lib/core/validation/index.js +0 -24
  307. package/lib/core/validation/types/date.js +0 -284
  308. package/lib/core/validation/types/email.js +0 -92
  309. package/lib/core/validation/types/enum.js +0 -100
  310. package/lib/core/validation/types/geoShape.js +0 -370
  311. package/lib/core/validation/types/ipAddress.js +0 -83
  312. package/lib/core/validation/types/numeric.js +0 -108
  313. package/lib/core/validation/types/object.js +0 -88
  314. package/lib/core/validation/types/string.js +0 -110
  315. package/lib/core/validation/types/url.js +0 -83
  316. package/lib/core/validation/validation.js +0 -1180
  317. package/lib/kerror/codes/0-core.json +0 -194
  318. package/lib/kerror/codes/1-services.json +0 -351
  319. package/lib/kerror/codes/2-api.json +0 -195
  320. package/lib/kerror/codes/3-network.json +0 -151
  321. package/lib/kerror/codes/4-plugin.json +0 -498
  322. package/lib/kerror/codes/5-validation.json +0 -158
  323. package/lib/kerror/codes/6-protocol.json +0 -28
  324. package/lib/kerror/codes/7-security.json +0 -283
  325. package/lib/kerror/codes/8-cluster.json +0 -16
  326. package/lib/kerror/codes/index.js +0 -208
  327. package/lib/kuzzle/dumpGenerator.js +0 -259
  328. package/lib/kuzzle/event/pipeRunner.js +0 -144
  329. package/lib/kuzzle/event/waterfall.js +0 -101
  330. package/lib/kuzzle/internalIndexHandler.js +0 -234
  331. package/lib/kuzzle/vault.js +0 -89
  332. package/lib/model/storage/apiKey.js +0 -158
  333. package/lib/model/storage/baseModel.js +0 -275
  334. package/lib/service/cache/redis.js +0 -282
  335. package/lib/service/service.js +0 -84
  336. package/lib/service/storage/7/esWrapper.js +0 -303
  337. package/lib/service/storage/8/esWrapper.js +0 -303
  338. package/lib/util/asyncStore.js +0 -112
  339. package/lib/util/bytes.js +0 -36
  340. package/lib/util/deprecate.js +0 -82
  341. package/lib/util/promback.js +0 -66
  342. package/lib/util/readYamlFile.d.ts +0 -2
  343. package/lib/util/readYamlFile.js +0 -10
  344. package/lib/util/requestAssertions.js +0 -157
  345. /package/{index.d.ts → dist/index.d.ts} +0 -0
  346. /package/{index.js → dist/index.js} +0 -0
  347. /package/{lib → dist/lib}/api/controllers/baseController.d.ts +0 -0
  348. /package/{lib → dist/lib}/api/controllers/baseController.js +0 -0
  349. /package/{lib → dist/lib}/api/controllers/debugController.d.ts +0 -0
  350. /package/{lib → dist/lib}/api/controllers/debugController.js +0 -0
  351. /package/{lib → dist/lib}/api/openapi/OpenApiManager.d.ts +0 -0
  352. /package/{lib → dist/lib}/api/openapi/OpenApiManager.js +0 -0
  353. /package/{lib → dist/lib}/api/openapi/index.d.ts +0 -0
  354. /package/{lib → dist/lib}/api/openapi/index.js +0 -0
  355. /package/{lib → dist/lib}/api/openapi/openApiGenerator.d.ts +0 -0
  356. /package/{lib → dist/lib}/api/openapi/openApiGenerator.js +0 -0
  357. /package/{lib → dist/lib}/api/request/index.d.ts +0 -0
  358. /package/{lib → dist/lib}/api/request/index.js +0 -0
  359. /package/{lib → dist/lib}/api/request/kuzzleRequest.js +0 -0
  360. /package/{lib → dist/lib}/api/request/requestContext.js +0 -0
  361. /package/{lib → dist/lib}/api/request/requestInput.d.ts +0 -0
  362. /package/{lib → dist/lib}/api/request/requestInput.js +0 -0
  363. /package/{lib → dist/lib}/api/request/requestResponse.d.ts +0 -0
  364. /package/{lib → dist/lib}/api/request/requestResponse.js +0 -0
  365. /package/{lib → dist/lib}/cluster/idCardHandler.d.ts +0 -0
  366. /package/{lib → dist/lib}/cluster/idCardHandler.js +0 -0
  367. /package/{lib → dist/lib}/cluster/protobuf/command.proto +0 -0
  368. /package/{lib → dist/lib}/cluster/protobuf/sync.proto +0 -0
  369. /package/{lib → dist/lib}/cluster/state.d.ts +0 -0
  370. /package/{lib → dist/lib}/cluster/state.js +0 -0
  371. /package/{lib → dist/lib}/config/default.config.d.ts +0 -0
  372. /package/{lib → dist/lib}/config/default.config.js +0 -0
  373. /package/{lib → dist/lib}/config/documentEventAliases.js +0 -0
  374. /package/{lib → dist/lib}/core/auth/tokenManager.d.ts +0 -0
  375. /package/{lib → dist/lib}/core/auth/tokenManager.js +0 -0
  376. /package/{lib → dist/lib}/core/backend/applicationManager.d.ts +0 -0
  377. /package/{lib → dist/lib}/core/backend/applicationManager.js +0 -0
  378. /package/{lib → dist/lib}/core/backend/backend.d.ts +0 -0
  379. /package/{lib → dist/lib}/core/backend/backend.js +0 -0
  380. /package/{lib → dist/lib}/core/backend/backendCluster.d.ts +0 -0
  381. /package/{lib → dist/lib}/core/backend/backendCluster.js +0 -0
  382. /package/{lib → dist/lib}/core/backend/backendConfig.d.ts +0 -0
  383. /package/{lib → dist/lib}/core/backend/backendController.d.ts +0 -0
  384. /package/{lib → dist/lib}/core/backend/backendController.js +0 -0
  385. /package/{lib → dist/lib}/core/backend/backendErrors.d.ts +0 -0
  386. /package/{lib → dist/lib}/core/backend/backendHook.d.ts +0 -0
  387. /package/{lib → dist/lib}/core/backend/backendHook.js +0 -0
  388. /package/{lib → dist/lib}/core/backend/backendImport.d.ts +0 -0
  389. /package/{lib → dist/lib}/core/backend/backendImport.js +0 -0
  390. /package/{lib → dist/lib}/core/backend/backendOpenApi.d.ts +0 -0
  391. /package/{lib → dist/lib}/core/backend/backendOpenApi.js +0 -0
  392. /package/{lib → dist/lib}/core/backend/backendPipe.d.ts +0 -0
  393. /package/{lib → dist/lib}/core/backend/backendPipe.js +0 -0
  394. /package/{lib → dist/lib}/core/backend/backendPlugin.d.ts +0 -0
  395. /package/{lib → dist/lib}/core/backend/backendPlugin.js +0 -0
  396. /package/{lib → dist/lib}/core/backend/backendStorage.d.ts +0 -0
  397. /package/{lib → dist/lib}/core/backend/backendStorage.js +0 -0
  398. /package/{lib → dist/lib}/core/backend/backendSubscription.d.ts +0 -0
  399. /package/{lib → dist/lib}/core/backend/backendSubscription.js +0 -0
  400. /package/{lib → dist/lib}/core/backend/backendVault.d.ts +0 -0
  401. /package/{lib → dist/lib}/core/backend/backendVault.js +0 -0
  402. /package/{lib → dist/lib}/core/backend/index.d.ts +0 -0
  403. /package/{lib → dist/lib}/core/backend/index.js +0 -0
  404. /package/{lib → dist/lib}/core/backend/internalLogger.d.ts +0 -0
  405. /package/{lib → dist/lib}/core/backend/internalLogger.js +0 -0
  406. /package/{lib → dist/lib}/core/cache/cacheDbEnum.d.ts +0 -0
  407. /package/{lib → dist/lib}/core/cache/cacheDbEnum.js +0 -0
  408. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.d.ts +0 -0
  409. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.js +0 -0
  410. /package/{lib → dist/lib}/core/plugin/pluginContext.d.ts +0 -0
  411. /package/{lib → dist/lib}/core/realtime/channel.d.ts +0 -0
  412. /package/{lib → dist/lib}/core/realtime/channel.js +0 -0
  413. /package/{lib → dist/lib}/core/realtime/connectionRooms.d.ts +0 -0
  414. /package/{lib → dist/lib}/core/realtime/connectionRooms.js +0 -0
  415. /package/{lib → dist/lib}/core/realtime/hotelClerk.d.ts +0 -0
  416. /package/{lib → dist/lib}/core/realtime/hotelClerk.js +0 -0
  417. /package/{lib → dist/lib}/core/realtime/room.d.ts +0 -0
  418. /package/{lib → dist/lib}/core/realtime/room.js +0 -0
  419. /package/{lib → dist/lib}/core/realtime/subscription.d.ts +0 -0
  420. /package/{lib → dist/lib}/core/realtime/subscription.js +0 -0
  421. /package/{lib → dist/lib}/core/security/profileRepository.d.ts +0 -0
  422. /package/{lib → dist/lib}/core/security/profileRepository.js +0 -0
  423. /package/{lib → dist/lib}/core/security/tokenRepository.d.ts +0 -0
  424. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.d.ts +0 -0
  425. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.js +0 -0
  426. /package/{lib → dist/lib}/core/shared/ObjectRepository.d.ts +0 -0
  427. /package/{lib → dist/lib}/core/shared/ObjectRepository.js +0 -0
  428. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.d.ts +0 -0
  429. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.js +0 -0
  430. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.d.ts +0 -0
  431. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.js +0 -0
  432. /package/{lib → dist/lib}/core/shared/store.js +0 -0
  433. /package/{lib → dist/lib}/core/storage/indexCache.d.ts +0 -0
  434. /package/{lib → dist/lib}/core/storage/indexCache.js +0 -0
  435. /package/{lib → dist/lib}/core/storage/storeScopeEnum.d.ts +0 -0
  436. /package/{lib → dist/lib}/core/storage/storeScopeEnum.js +0 -0
  437. /package/{lib → dist/lib}/kerror/errors/badRequestError.d.ts +0 -0
  438. /package/{lib → dist/lib}/kerror/errors/badRequestError.js +0 -0
  439. /package/{lib → dist/lib}/kerror/errors/externalServiceError.d.ts +0 -0
  440. /package/{lib → dist/lib}/kerror/errors/externalServiceError.js +0 -0
  441. /package/{lib → dist/lib}/kerror/errors/forbiddenError.d.ts +0 -0
  442. /package/{lib → dist/lib}/kerror/errors/forbiddenError.js +0 -0
  443. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.d.ts +0 -0
  444. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.js +0 -0
  445. /package/{lib → dist/lib}/kerror/errors/index.d.ts +0 -0
  446. /package/{lib → dist/lib}/kerror/errors/index.js +0 -0
  447. /package/{lib → dist/lib}/kerror/errors/internalError.d.ts +0 -0
  448. /package/{lib → dist/lib}/kerror/errors/internalError.js +0 -0
  449. /package/{lib → dist/lib}/kerror/errors/kuzzleError.d.ts +0 -0
  450. /package/{lib → dist/lib}/kerror/errors/kuzzleError.js +0 -0
  451. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.d.ts +0 -0
  452. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.js +0 -0
  453. /package/{lib → dist/lib}/kerror/errors/notFoundError.d.ts +0 -0
  454. /package/{lib → dist/lib}/kerror/errors/notFoundError.js +0 -0
  455. /package/{lib → dist/lib}/kerror/errors/partialError.d.ts +0 -0
  456. /package/{lib → dist/lib}/kerror/errors/partialError.js +0 -0
  457. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.d.ts +0 -0
  458. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.js +0 -0
  459. /package/{lib → dist/lib}/kerror/errors/preconditionError.d.ts +0 -0
  460. /package/{lib → dist/lib}/kerror/errors/preconditionError.js +0 -0
  461. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.d.ts +0 -0
  462. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.js +0 -0
  463. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.d.ts +0 -0
  464. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.js +0 -0
  465. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.d.ts +0 -0
  466. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.js +0 -0
  467. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.d.ts +0 -0
  468. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.js +0 -0
  469. /package/{lib → dist/lib}/kerror/index.js +0 -0
  470. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.d.ts +0 -0
  471. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.js +0 -0
  472. /package/{lib → dist/lib}/kuzzle/index.d.ts +0 -0
  473. /package/{lib → dist/lib}/kuzzle/index.js +0 -0
  474. /package/{lib → dist/lib}/model/security/profile.d.ts +0 -0
  475. /package/{lib → dist/lib}/model/security/profile.js +0 -0
  476. /package/{lib → dist/lib}/model/security/role.js +0 -0
  477. /package/{lib → dist/lib}/model/security/token.d.ts +0 -0
  478. /package/{lib → dist/lib}/model/security/token.js +0 -0
  479. /package/{lib → dist/lib}/model/security/user.js +0 -0
  480. /package/{lib → dist/lib}/service/storage/8/elasticsearch.d.ts +0 -0
  481. /package/{lib → dist/lib}/service/storage/Elasticsearch.d.ts +0 -0
  482. /package/{lib → dist/lib}/service/storage/Elasticsearch.js +0 -0
  483. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.d.ts +0 -0
  484. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.js +0 -0
  485. /package/{lib → dist/lib}/types/ClientConnection.d.ts +0 -0
  486. /package/{lib → dist/lib}/types/ClientConnection.js +0 -0
  487. /package/{lib → dist/lib}/types/Deprecation.d.ts +0 -0
  488. /package/{lib → dist/lib}/types/Deprecation.js +0 -0
  489. /package/{lib → dist/lib}/types/EventHandler.d.ts +0 -0
  490. /package/{lib → dist/lib}/types/EventHandler.js +0 -0
  491. /package/{lib → dist/lib}/types/Global.d.ts +0 -0
  492. /package/{lib → dist/lib}/types/Global.js +0 -0
  493. /package/{lib → dist/lib}/types/HttpMessage.d.ts +0 -0
  494. /package/{lib → dist/lib}/types/HttpMessage.js +0 -0
  495. /package/{lib → dist/lib}/types/HttpStream.d.ts +0 -0
  496. /package/{lib → dist/lib}/types/HttpStream.js +0 -0
  497. /package/{lib → dist/lib}/types/Kuzzle.d.ts +0 -0
  498. /package/{lib → dist/lib}/types/Kuzzle.js +0 -0
  499. /package/{lib → dist/lib}/types/KuzzleDocument.d.ts +0 -0
  500. /package/{lib → dist/lib}/types/KuzzleDocument.js +0 -0
  501. /package/{lib → dist/lib}/types/OpenApiDefinition.d.ts +0 -0
  502. /package/{lib → dist/lib}/types/OpenApiDefinition.js +0 -0
  503. /package/{lib → dist/lib}/types/PasswordPolicy.d.ts +0 -0
  504. /package/{lib → dist/lib}/types/PasswordPolicy.js +0 -0
  505. /package/{lib → dist/lib}/types/Plugin.js +0 -0
  506. /package/{lib → dist/lib}/types/PluginManifest.d.ts +0 -0
  507. /package/{lib → dist/lib}/types/PluginManifest.js +0 -0
  508. /package/{lib → dist/lib}/types/Policy.d.ts +0 -0
  509. /package/{lib → dist/lib}/types/Policy.js +0 -0
  510. /package/{lib → dist/lib}/types/PolicyRestrictions.d.ts +0 -0
  511. /package/{lib → dist/lib}/types/PolicyRestrictions.js +0 -0
  512. /package/{lib → dist/lib}/types/ProfileDefinition.d.ts +0 -0
  513. /package/{lib → dist/lib}/types/ProfileDefinition.js +0 -0
  514. /package/{lib → dist/lib}/types/RoleDefinition.d.ts +0 -0
  515. /package/{lib → dist/lib}/types/RoleDefinition.js +0 -0
  516. /package/{lib → dist/lib}/types/StrategyDefinition.d.ts +0 -0
  517. /package/{lib → dist/lib}/types/StrategyDefinition.js +0 -0
  518. /package/{lib → dist/lib}/types/Target.d.ts +0 -0
  519. /package/{lib → dist/lib}/types/Target.js +0 -0
  520. /package/{lib → dist/lib}/types/Token.d.ts +0 -0
  521. /package/{lib → dist/lib}/types/Token.js +0 -0
  522. /package/{lib → dist/lib}/types/User.d.ts +0 -0
  523. /package/{lib → dist/lib}/types/User.js +0 -0
  524. /package/{lib → dist/lib}/types/config/DumpConfiguration.d.ts +0 -0
  525. /package/{lib → dist/lib}/types/config/DumpConfiguration.js +0 -0
  526. /package/{lib → dist/lib}/types/config/HttpConfiguration.d.ts +0 -0
  527. /package/{lib → dist/lib}/types/config/HttpConfiguration.js +0 -0
  528. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.d.ts +0 -0
  529. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.js +0 -0
  530. /package/{lib → dist/lib}/types/config/LimitsConfiguration.d.ts +0 -0
  531. /package/{lib → dist/lib}/types/config/LimitsConfiguration.js +0 -0
  532. /package/{lib → dist/lib}/types/config/PluginsConfiguration.d.ts +0 -0
  533. /package/{lib → dist/lib}/types/config/PluginsConfiguration.js +0 -0
  534. /package/{lib → dist/lib}/types/config/SecurityConfiguration.d.ts +0 -0
  535. /package/{lib → dist/lib}/types/config/SecurityConfiguration.js +0 -0
  536. /package/{lib → dist/lib}/types/config/ServerConfiguration.d.ts +0 -0
  537. /package/{lib → dist/lib}/types/config/ServerConfiguration.js +0 -0
  538. /package/{lib → dist/lib}/types/config/ServicesConfiguration.d.ts +0 -0
  539. /package/{lib → dist/lib}/types/config/ServicesConfiguration.js +0 -0
  540. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +0 -0
  541. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.js +0 -0
  542. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +0 -0
  543. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.js +0 -0
  544. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +0 -0
  545. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.js +0 -0
  546. /package/{lib/types → dist/lib/types/controllers}/Controller.js +0 -0
  547. /package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.js +0 -0
  548. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.d.ts +0 -0
  549. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.js +0 -0
  550. /package/{lib → dist/lib}/types/errors/ErrorDefinition.d.ts +0 -0
  551. /package/{lib → dist/lib}/types/errors/ErrorDefinition.js +0 -0
  552. /package/{lib → dist/lib}/types/errors/ErrorDomains.d.ts +0 -0
  553. /package/{lib → dist/lib}/types/errors/ErrorDomains.js +0 -0
  554. /package/{lib → dist/lib}/types/events/EventGenericDocument.d.ts +0 -0
  555. /package/{lib → dist/lib}/types/events/EventGenericDocument.js +0 -0
  556. /package/{lib → dist/lib}/types/events/EventProtocol.d.ts +0 -0
  557. /package/{lib → dist/lib}/types/events/EventProtocol.js +0 -0
  558. /package/{lib → dist/lib}/types/realtime/RealtimeScope.d.ts +0 -0
  559. /package/{lib → dist/lib}/types/realtime/RealtimeScope.js +0 -0
  560. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.d.ts +0 -0
  561. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.js +0 -0
  562. /package/{lib → dist/lib}/types/realtime/RoomList.d.ts +0 -0
  563. /package/{lib → dist/lib}/types/realtime/RoomList.js +0 -0
  564. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.d.ts +0 -0
  565. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.js +0 -0
  566. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.d.ts +0 -0
  567. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.js +0 -0
  568. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.d.ts +0 -0
  569. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.js +0 -0
  570. /package/{lib → dist/lib}/util/Inflector.d.ts +0 -0
  571. /package/{lib → dist/lib}/util/Inflector.js +0 -0
  572. /package/{lib → dist/lib}/util/array.d.ts +0 -0
  573. /package/{lib → dist/lib}/util/array.js +0 -0
  574. /package/{lib → dist/lib}/util/async.d.ts +0 -0
  575. /package/{lib → dist/lib}/util/async.js +0 -0
  576. /package/{lib → dist/lib}/util/bufferedPassThrough.d.ts +0 -0
  577. /package/{lib → dist/lib}/util/bufferedPassThrough.js +0 -0
  578. /package/{lib → dist/lib}/util/crypto.d.ts +0 -0
  579. /package/{lib → dist/lib}/util/crypto.js +0 -0
  580. /package/{lib → dist/lib}/util/dump-collection.d.ts +0 -0
  581. /package/{lib → dist/lib}/util/dump-collection.js +0 -0
  582. /package/{lib → dist/lib}/util/esRequest.d.ts +0 -0
  583. /package/{lib → dist/lib}/util/esRequest.js +0 -0
  584. /package/{lib → dist/lib}/util/koncordeCompat.d.ts +0 -0
  585. /package/{lib → dist/lib}/util/koncordeCompat.js +0 -0
  586. /package/{lib → dist/lib}/util/mutex.d.ts +0 -0
  587. /package/{lib → dist/lib}/util/mutex.js +0 -0
  588. /package/{lib → dist/lib}/util/name-generator.d.ts +0 -0
  589. /package/{lib → dist/lib}/util/name-generator.js +0 -0
  590. /package/{lib → dist/lib}/util/time.d.ts +0 -0
  591. /package/{lib → dist/lib}/util/time.js +0 -0
@@ -0,0 +1,555 @@
1
+ /*
2
+ * Kuzzle, a backend software, self-hostable and ready to use
3
+ * to power modern apps
4
+ *
5
+ * Copyright 2015-2022 Kuzzle
6
+ * mailto: support AT kuzzle.io
7
+ * website: http://kuzzle.io
8
+ *
9
+ * Licensed under the Apache License, Version 2.0 (the "License");
10
+ * you may not use this file except in compliance with the License.
11
+ * You may obtain a copy of the License at
12
+ *
13
+ * https://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS,
17
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ * See the License for the specific language governing permissions and
19
+ * limitations under the License.
20
+ */
21
+ "use strict";
22
+ const { Subscriber } = require("zeromq");
23
+ const protobuf = require("protobufjs");
24
+ const Long = require("long");
25
+ const debug = require("../util/debug")("kuzzle:cluster:sync");
26
+ const DocumentNotification = require("../core/realtime/notification/document");
27
+ const UserNotification = require("../core/realtime/notification/user");
28
+ const { has } = require("../util/safeObject");
29
+ const { fromKoncordeIndex } = require("../util/koncordeCompat");
30
+ /* eslint-disable sort-keys */
31
+ const stateEnum = Object.freeze({
32
+ BUFFERING: 1,
33
+ SANE: 2,
34
+ MISSING_HEARTBEAT: 3,
35
+ EVICTED: 4,
36
+ });
37
+ /* eslint-enable sort-keys */
38
+ // Handles messages received from other nodes
39
+ class ClusterSubscriber {
40
+ /**
41
+ * @constructor
42
+ * @param {ClusterNode} localNode
43
+ * @param {string} remoteNodeId - Remote node unique ID
44
+ * @param {string} remoteNodeIP - address of the distant node
45
+ */
46
+ constructor(localNode, remoteNodeId, remoteNodeIP) {
47
+ // not to be confused with remote nodes
48
+ this.localNode = localNode;
49
+ this.remoteNodeIP = remoteNodeIP;
50
+ this.remoteNodeAddress = `tcp://${remoteNodeIP}:${this.localNode.config.ports.sync}`;
51
+ this.remoteNodeId = remoteNodeId;
52
+ // Used in debug mode when the node might be slower
53
+ this.remoteNodeEvictionPrevented = false;
54
+ this.socket = null;
55
+ this.protoroot = null;
56
+ // keeps track of received message ids from the remote node
57
+ this.lastMessageId = new Long(0, 0, true);
58
+ // A subscriber starts in the BUFFERING state, meaning it stores incoming
59
+ // sync messages without processing them, until it enters the SANE state
60
+ // This delays applying sync messages while the local node initializes
61
+ this.state = stateEnum.BUFFERING;
62
+ this.buffer = [];
63
+ // keeps track of the remote node heartbeats, and evicts it if no
64
+ // heartbeats have been received after some time
65
+ this.heartbeatTimer = null;
66
+ this.lastHeartbeat = Date.now();
67
+ this.heartbeatDelay = this.localNode.heartbeatDelay * 1.5;
68
+ // Messages handlers (quick translation between a topic name and its
69
+ // associated handler)
70
+ this.handlers = Object.freeze({
71
+ AddCollection: this.handleCollectionAddition,
72
+ AddIndex: this.handleIndexAddition,
73
+ ClusterWideEvent: this.handleClusterWideEvent,
74
+ DocumentNotification: this.handleDocumentNotification,
75
+ DumpRequest: this.handleDumpRequest,
76
+ Heartbeat: this.handleHeartbeat,
77
+ InvalidateProfile: this.handleProfileInvalidation,
78
+ InvalidateRole: this.handleRoleInvalidation,
79
+ NewAuthStrategy: this.handleNewAuthStrategy,
80
+ NewRealtimeRoom: this.handleNewRealtimeRoom,
81
+ NodeEvicted: this.handleNodeEviction,
82
+ NodePreventEviction: this.handleNodePreventEviction,
83
+ NodeShutdown: this.handleNodeShutdown,
84
+ RefreshIndexCache: this.handleRefreshIndexCache,
85
+ RefreshValidators: this.handleRefreshValidators,
86
+ RemoveAuthStrategy: this.handleAuthStrategyRemoval,
87
+ RemoveCollection: this.handleCollectionRemoval,
88
+ RemoveIndexes: this.handleIndexesRemoval,
89
+ RemoveRealtimeRoom: this.handleRealtimeRoomRemoval,
90
+ ResetSecurity: this.handleResetSecurity,
91
+ Shutdown: this.handleShutdown,
92
+ Subscription: this.handleSubscription,
93
+ Unsubscription: this.handleUnsubscription,
94
+ UserNotification: this.handleUserNotification,
95
+ });
96
+ this.logger = global.kuzzle.log.child("cluster:subscriber");
97
+ }
98
+ /**
99
+ * Initializes this class, establishes a connection to the remote node and
100
+ * starts listening to it.
101
+ */
102
+ async init() {
103
+ this.protoroot = await protobuf.load(`${__dirname}/protobuf/sync.proto`);
104
+ this.socket = new Subscriber();
105
+ this.socket.connect(this.remoteNodeAddress);
106
+ this.socket.subscribe();
107
+ this.heartbeatTimer = setInterval(() => this.checkHeartbeat(), this.heartbeatDelay);
108
+ this.listen();
109
+ }
110
+ /**
111
+ * Starts subscribing to other nodes
112
+ * Do NOT wait this method: it's an infinite loop, it's not meant to ever
113
+ * return (unless the remote node has been evicted)
114
+ */
115
+ async listen() {
116
+ while (this.state !== stateEnum.EVICTED) {
117
+ let topic;
118
+ let data;
119
+ try {
120
+ [topic, data] = await this.socket.receive();
121
+ }
122
+ catch (e) {
123
+ if (this.state !== stateEnum.EVICTED) {
124
+ await this.evictNode({
125
+ broadcast: true,
126
+ reason: e.message,
127
+ });
128
+ }
129
+ return;
130
+ }
131
+ // do nothing is the node was evicted even if we already check
132
+ // for this in processData()
133
+ if (this.state === stateEnum.EVICTED) {
134
+ return;
135
+ }
136
+ if (this.state !== stateEnum.BUFFERING) {
137
+ await this.processData(topic.toString(), data);
138
+ }
139
+ else {
140
+ this.buffer.push([topic.toString(), data]);
141
+ }
142
+ }
143
+ }
144
+ /**
145
+ * Plays all buffered sync messages, and switches this subscriber state from
146
+ * BUFFERING to SANE.
147
+ *
148
+ * @param {Long} lastMessageId
149
+ * @return {void}
150
+ */
151
+ async sync(lastMessageId) {
152
+ this.lastMessageId = lastMessageId;
153
+ // copy the buffer for processing: new sync messages might be buffered
154
+ // while we apply older messages with async functions
155
+ while (this.buffer.length > 0) {
156
+ const _buffer = this.buffer;
157
+ this.buffer = [];
158
+ for (let i = 0; i < _buffer.length; i++) {
159
+ await this.processData(_buffer[i][0], _buffer[i][1]);
160
+ }
161
+ }
162
+ this.state = stateEnum.SANE;
163
+ }
164
+ /**
165
+ * Decodes an incoming message, and dispatches it.
166
+ * The topic name must match a protobuf message.
167
+ *
168
+ * /!\ This method MUST NEVER THROW
169
+ * It's awaited by this.listen(), which cannot be awaited (infinite loop),
170
+ * and it also cannot afford to attach a rejection handler everytime a message
171
+ * is received to prevent clogging the event loop with unnecessary promises
172
+ *
173
+ * @param {string} topic
174
+ * @param {Buffer} data
175
+ * @return {void}
176
+ */
177
+ async processData(topic, data) {
178
+ if (this.state === stateEnum.EVICTED) {
179
+ return;
180
+ }
181
+ const decoder = this.protoroot.lookup(topic);
182
+ if (decoder === null) {
183
+ await this.evictNode({
184
+ broadcast: true,
185
+ reason: `received an invalid message from ${this.remoteNodeId} (unknown topic "${topic}")`,
186
+ });
187
+ return;
188
+ }
189
+ const message = decoder.toObject(decoder.decode(data));
190
+ if (!(await this.validateMessage(message))) {
191
+ return;
192
+ }
193
+ try {
194
+ // If we are receiving messages from a node,
195
+ // it means the node is alive so it should counts as an heartbeat
196
+ this.handleHeartbeat();
197
+ await this.handlers[topic].call(this, message);
198
+ }
199
+ catch (e) {
200
+ this.localNode.evictSelf(`Unable to process sync message (topic: ${topic}, message: ${JSON.stringify(message)}`, e);
201
+ }
202
+ }
203
+ async handleNodePreventEviction(message) {
204
+ this.remoteNodeEvictionPrevented = message.evictionPrevented;
205
+ }
206
+ /**
207
+ * Handles a heartbeat from the remote node
208
+ *
209
+ * @return {void}
210
+ */
211
+ handleHeartbeat() {
212
+ this.lastHeartbeat = Date.now();
213
+ }
214
+ /**
215
+ * Handles a node eviction message.
216
+ *
217
+ * @param {Object} message - decoded NodeEvicted protobuf message
218
+ * @return {void}
219
+ */
220
+ async handleNodeEviction(message) {
221
+ if (message.nodeId === this.localNode.nodeId) {
222
+ this.logger.error(`[CLUSTER] Node evicted by ${message.evictor}. Reason: ${message.reason}`);
223
+ global.kuzzle.shutdown();
224
+ return;
225
+ }
226
+ await this.localNode.evictNode(message.nodeId, {
227
+ broadcast: false,
228
+ reason: message.reason,
229
+ });
230
+ }
231
+ /**
232
+ * Handles a node shutdown.
233
+ *
234
+ * @param {Object} message - decoded NodeShutdown protobuf message
235
+ * @return {void}
236
+ */
237
+ async handleNodeShutdown(message) {
238
+ await this.localNode.evictNode(message.nodeId, {
239
+ broadcast: false,
240
+ reason: "Node is shutting down",
241
+ });
242
+ }
243
+ /**
244
+ * Handles messages about realtime room creations
245
+ *
246
+ * @param {Object} message - decoded NewRealtimeRoom protobuf message
247
+ * @return {void}
248
+ */
249
+ handleNewRealtimeRoom(message) {
250
+ const { id, index, filter, messageId } = message;
251
+ const icpair = fromKoncordeIndex(index);
252
+ debug("New realtime room created by node %s (message: %d, room: %s, index: %s, collection: %s)", this.remoteNodeId, messageId, id, icpair.index, icpair.collection);
253
+ this.localNode.fullState.addRealtimeRoom(id, icpair.index, icpair.collection, JSON.parse(filter), {
254
+ messageId,
255
+ nodeId: this.remoteNodeId,
256
+ subscribers: 0,
257
+ });
258
+ }
259
+ /**
260
+ * Handles messages about realtime subscriptions
261
+ *
262
+ * @param {Object} message - decoded Subscription protobuf message
263
+ * @return {void}
264
+ */
265
+ handleSubscription(message) {
266
+ debug("New realtime subscription received from node %s (message: %d, room: %s)", this.remoteNodeId, message.messageId, message.roomId);
267
+ this.localNode.fullState.addRealtimeSubscription(message.roomId, this.remoteNodeId, message.messageId);
268
+ }
269
+ /**
270
+ * Handles messages about realtime room removal
271
+ *
272
+ * @param {Object} message - decoded RemoveRealtimeRoom protobuf message
273
+ * @return {void}
274
+ */
275
+ handleRealtimeRoomRemoval(message) {
276
+ debug("Realtime room removal received from node %s (message: %d, room: %s)", this.remoteNodeId, message.messageId, message.roomId);
277
+ this.localNode.fullState.removeRealtimeRoom(message.roomId, this.remoteNodeId);
278
+ }
279
+ /**
280
+ * Handles messages about user unsubscriptions
281
+ *
282
+ * @param {Object} message - decoded Unscription protobuf message
283
+ * @return {void}
284
+ */
285
+ handleUnsubscription(message) {
286
+ debug("Realtime unsubscription received from node %s (message: %d, room: %s)", this.remoteNodeId, message.messageId, message.roomId);
287
+ this.localNode.fullState.removeRealtimeSubscription(message.roomId, this.remoteNodeId, message.messageId);
288
+ }
289
+ /**
290
+ * Handles messages about cluster-wide events
291
+ *
292
+ * @param {Object} message - decoded ClusterWideEvent protobuf message
293
+ * @return {void}
294
+ */
295
+ handleClusterWideEvent(message) {
296
+ const payload = JSON.parse(message.payload);
297
+ this.localNode.eventEmitter.emit(message.event, payload);
298
+ }
299
+ /**
300
+ * Handles messages about document notifications
301
+ *
302
+ * @param {Object} message - decoded DocumentNotification protobuf message
303
+ * @return {void}
304
+ */
305
+ async handleDocumentNotification(message) {
306
+ const notification = new DocumentNotification({
307
+ action: message.action,
308
+ collection: message.collection,
309
+ controller: message.controller,
310
+ index: message.index,
311
+ node: this.remoteNodeId,
312
+ protocol: message.protocol,
313
+ requestId: message.requestId,
314
+ result: JSON.parse(message.result),
315
+ scope: message.scope,
316
+ status: message.status,
317
+ timestamp: message.timestamp.toNumber(),
318
+ volatile: JSON.parse(message.volatile),
319
+ });
320
+ return global.kuzzle.ask("core:realtime:document:dispatch", message.rooms, notification);
321
+ }
322
+ /**
323
+ * Handles messages about user notifications
324
+ *
325
+ * @param {Object} message - decoded UserNotification protobuf message
326
+ * @return {void}
327
+ */
328
+ async handleUserNotification(message) {
329
+ const notification = new UserNotification({
330
+ action: message.action,
331
+ collection: message.collection,
332
+ controller: message.controller,
333
+ index: message.index,
334
+ node: this.remoteNodeId,
335
+ protocol: message.protocol,
336
+ result: JSON.parse(message.result),
337
+ status: message.status,
338
+ timestamp: message.timestamp.toNumber(),
339
+ user: message.user,
340
+ volatile: JSON.parse(message.volatile),
341
+ });
342
+ return global.kuzzle.ask("core:realtime:user:sendMessage", message.room, notification);
343
+ }
344
+ /**
345
+ * Handles messages about new authentication strategies
346
+ *
347
+ * @param {Object} message - decoded NewAuthStrategy protobuf message
348
+ * @return {void}
349
+ */
350
+ handleNewAuthStrategy(message) {
351
+ const { pluginName, strategy, strategyName } = message;
352
+ debug("New authentication strategy added by node %s (plugin: %s, strategy: %s)", this.remoteNodeId, pluginName, strategyName);
353
+ this.localNode.fullState.addAuthStrategy(message);
354
+ global.kuzzle.pluginsManager.registerStrategy(pluginName, strategyName, strategy);
355
+ }
356
+ /**
357
+ * Handles messages about authentication strategy removals
358
+ *
359
+ * @param {Object} message - decoded RemoveAuthStrategy protobuf message
360
+ * @return {void}
361
+ */
362
+ handleAuthStrategyRemoval(message) {
363
+ const { pluginName, strategyName } = message;
364
+ debug("Authentication strategy removed by node %s (plugin: %s, strategy: %s)", this.remoteNodeId, pluginName, strategyName);
365
+ global.kuzzle.pluginsManager.unregisterStrategy(pluginName, strategyName);
366
+ this.localNode.fullState.removeAuthStrategy(strategyName);
367
+ }
368
+ /**
369
+ * Handles messages about security resets
370
+ *
371
+ * @return {void}
372
+ */
373
+ async handleResetSecurity() {
374
+ debug("Security reset received from node %s", this.remoteNodeId);
375
+ await global.kuzzle.ask("core:security:profile:invalidate");
376
+ await global.kuzzle.ask("core:security:role:invalidate");
377
+ }
378
+ /**
379
+ * Handles a cross-nodes dump request
380
+ *
381
+ * @param {Object} message - decoded DumpRequest protobuf message
382
+ * @return {void}
383
+ */
384
+ handleDumpRequest(message) {
385
+ debug("Dump generation request received from node %s", this.remoteNodeId);
386
+ global.kuzzle.dump(message.suffix);
387
+ }
388
+ /**
389
+ * Handles cluster-wide shutdown
390
+ * @return {void}
391
+ */
392
+ handleShutdown() {
393
+ debug("Cluster-wide shutdown request received from node %s", this.remoteNodeId);
394
+ this.logger.error(`[CLUSTER] Cluster wide shutdown from ${this.remoteNodeId}`);
395
+ global.kuzzle.shutdown();
396
+ }
397
+ /**
398
+ * Handles changes on document validators
399
+ *
400
+ * @return {void}
401
+ */
402
+ async handleRefreshValidators() {
403
+ debug("Validators changed notification received from node %s", this.remoteNodeId);
404
+ await global.kuzzle.validation.curateSpecification();
405
+ }
406
+ /**
407
+ * Handles manual refresh of the index cache
408
+ */
409
+ async handleRefreshIndexCache() {
410
+ debug("Index cache manually refresh received from node %s", this.remoteNodeId);
411
+ await global.kuzzle.ask("core:storage:public:cache:refresh", {
412
+ from: "cluster",
413
+ });
414
+ }
415
+ /**
416
+ * Invalidates a profile to force reloading it from the storage space
417
+ *
418
+ * @param {Object} message - decoded DumpRequest protobuf message
419
+ * @return {void}
420
+ */
421
+ async handleProfileInvalidation(message) {
422
+ debug("Profile invalidation request received from node %s (profile: %s)", this.remoteNodeId, message.profileId);
423
+ await global.kuzzle.ask("core:security:profile:invalidate", message.profileId);
424
+ }
425
+ /**
426
+ * Invalidates a role to force reloading it from the storage space
427
+ *
428
+ * @param {Object} message - decoded DumpRequest protobuf message
429
+ * @return {void}
430
+ */
431
+ async handleRoleInvalidation(message) {
432
+ debug("Role invalidation request received from node %s (role: %s)", this.remoteNodeId, message.roleId);
433
+ await global.kuzzle.ask("core:security:role:invalidate", message.roleId);
434
+ }
435
+ /**
436
+ * Adds a new index to the index cache
437
+ *
438
+ * @param {Object} message - decoded IndexCacheAdd protobuf message
439
+ * @return {void}
440
+ */
441
+ async handleIndexAddition(message) {
442
+ const { index, scope } = message;
443
+ debug("New index added by node %s (scope: %s, index: %s)", this.remoteNodeId, scope, index);
444
+ await global.kuzzle.ask(`core:storage:${scope}:cache:addIndex`, index);
445
+ }
446
+ /**
447
+ * Removes indexes from the index cache
448
+ *
449
+ * @param {Object} message - decoded IndexCacheAdd protobuf message
450
+ * @return {void}
451
+ */
452
+ async handleIndexesRemoval(message) {
453
+ const { indexes, scope } = message;
454
+ debug("Indexes removed by node %s (scope: %s, indexes: %s)", this.remoteNodeId, scope, indexes);
455
+ await global.kuzzle.ask(`core:storage:${scope}:cache:removeIndexes`, indexes);
456
+ }
457
+ /**
458
+ * Adds a new collection to the index cache
459
+ *
460
+ * @param {Object} message - decoded IndexCacheAdd protobuf message
461
+ * @return {void}
462
+ */
463
+ async handleCollectionAddition(message) {
464
+ const { collection, index, scope } = message;
465
+ debug("New collection added by node %s (scope: %s, index: %s, collection: %s)", this.remoteNodeId, scope, index, collection);
466
+ await global.kuzzle.ask(`core:storage:${scope}:cache:addCollection`, index, collection);
467
+ }
468
+ /**
469
+ * Removes a collection from the index cache
470
+ *
471
+ * @param {Object} message - decoded IndexCacheAdd protobuf message
472
+ * @return {void}
473
+ */
474
+ async handleCollectionRemoval(message) {
475
+ const { collection, index, scope } = message;
476
+ debug("Indexes removed by node %s (scope: %s, index: %s, collection: %s)", this.remoteNodeId, scope, index, collection);
477
+ await global.kuzzle.ask(`core:storage:${scope}:cache:removeCollection`, index, collection);
478
+ }
479
+ /**
480
+ * Checks that we did receive a heartbeat from the remote node
481
+ * If a heartbeat is missing, we allow 1 heartbeat round for the remote node
482
+ * to recover, otherwise we evict it from the cluster.
483
+ */
484
+ async checkHeartbeat() {
485
+ if (this.remoteNodeEvictionPrevented) {
486
+ // Fake the heartbeat while the node eviction prevention is enabled
487
+ // otherwise when the node eviction prevention is disabled
488
+ // the node will be evicted if it did not send a heartbeat before disabling the protection.
489
+ this.lastHeartbeat = Date.now();
490
+ return;
491
+ }
492
+ if (this.state === stateEnum.EVICTED) {
493
+ return;
494
+ }
495
+ const now = Date.now();
496
+ if (now - this.lastHeartbeat > this.heartbeatDelay) {
497
+ if (this.state === stateEnum.MISSING_HEARTBEAT) {
498
+ await this.evictNode({
499
+ broadcast: true,
500
+ reason: "heartbeat timeout",
501
+ });
502
+ }
503
+ else {
504
+ this.state = stateEnum.MISSING_HEARTBEAT;
505
+ }
506
+ }
507
+ else {
508
+ this.state = stateEnum.SANE;
509
+ }
510
+ }
511
+ /**
512
+ * Disconnects from the remote node, and frees all allocated resources.
513
+ */
514
+ dispose() {
515
+ if (this.state === stateEnum.EVICTED) {
516
+ return;
517
+ }
518
+ this.state = stateEnum.EVICTED;
519
+ this.socket.close();
520
+ this.socket = null;
521
+ clearInterval(this.heartbeatTimer);
522
+ }
523
+ /**
524
+ * Checks that the received message is the one we expect.
525
+ * @param {Object} message - decoded protobuf message
526
+ * @return {boolean} false: the message must be discarded, true otherwise
527
+ */
528
+ async validateMessage(message) {
529
+ if (!has(message, "messageId")) {
530
+ this.logger.warn(`Invalid message received from node ${this.remoteNodeId}. Evicting it.`);
531
+ await this.evictNode({
532
+ broadcast: true,
533
+ reason: 'invalid message received (missing "messageId" field)',
534
+ });
535
+ return false;
536
+ }
537
+ if (this.state === stateEnum.BUFFERING &&
538
+ this.lastMessageId.greaterThanOrEqual(message.messageId)) {
539
+ return false;
540
+ }
541
+ this.lastMessageId = this.lastMessageId.add(1);
542
+ if (this.lastMessageId.notEquals(message.messageId)) {
543
+ await this.localNode.evictSelf(`Node out-of-sync: ${message.messageId - this.lastMessageId - 1} messages lost from node ${this.remoteNodeId}`);
544
+ return false;
545
+ }
546
+ return true;
547
+ }
548
+ async evictNode({ broadcast, reason }) {
549
+ this.state = stateEnum.EVICTED;
550
+ await this.localNode.evictNode(this.remoteNodeId, { broadcast, reason });
551
+ }
552
+ }
553
+ ClusterSubscriber.stateEnum = stateEnum;
554
+ module.exports = ClusterSubscriber;
555
+ //# sourceMappingURL=subscriber.js.map
@@ -0,0 +1,13 @@
1
+ export class IDCardRenewer {
2
+ redis: Redis;
3
+ refreshTimer: NodeJS.Timeout;
4
+ nodeIdKey: any;
5
+ refreshDelay: number;
6
+ disposed: boolean;
7
+ init(config: any): Promise<void>;
8
+ refreshMultiplier: any;
9
+ initRedis(config: any, name: any): Promise<void>;
10
+ renewIDCard(): Promise<void>;
11
+ dispose(): Promise<void>;
12
+ }
13
+ import Redis = require("../../service/cache/redis");
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ const Redis = require("../../service/cache/redis");
3
+ class IDCardRenewer {
4
+ constructor() {
5
+ this.redis = null;
6
+ this.refreshTimer = null;
7
+ this.nodeIdKey = null;
8
+ this.refreshDelay = 2000;
9
+ this.disposed = true; // Disposed until initialized
10
+ }
11
+ async init(config) {
12
+ if (!this.disposed) {
13
+ return; // Already initialized
14
+ }
15
+ this.disposed = false;
16
+ this.nodeIdKey = config.nodeIdKey;
17
+ this.refreshDelay = config.refreshDelay || 2000;
18
+ this.refreshMultiplier = config.refreshMultiplier;
19
+ /**
20
+ * Since we do not have access to the Kuzzle Context we can't use kuzzle.ask('core:cache:internal:*',...),
21
+ * so we need to have an instance of Redis similar to the one used in the Cache Engine
22
+ */
23
+ try {
24
+ const redisConf = config.redis || {};
25
+ await this.initRedis(redisConf.config, redisConf.name);
26
+ }
27
+ catch (error) {
28
+ // eslint-disable-next-line no-console
29
+ console.error(`Failed to connect to redis, could not refresh ID card: ${error.message}`);
30
+ this.parentPort.postMessage({
31
+ error: `Failed to connect to redis, could not refresh ID card: ${error.message}`,
32
+ });
33
+ return;
34
+ }
35
+ /**
36
+ * Early renew, otherwise we need to wait the refreshDelay before the first ID Card renewal
37
+ * which could be enough to make the ID Card expire.
38
+ */
39
+ await this.renewIDCard();
40
+ if (!this.disposed) {
41
+ this.refreshTimer = setInterval(this.renewIDCard.bind(this), this.refreshDelay);
42
+ }
43
+ // Notify that the worker is running and updating the ID Card
44
+ process.send({ initialized: true });
45
+ }
46
+ async initRedis(config, name) {
47
+ const redis = new Redis(config, name);
48
+ await redis.init();
49
+ this.redis = redis;
50
+ }
51
+ async renewIDCard() {
52
+ if (this.disposed) {
53
+ return; // Do not refresh ID Card when worker has been disposed
54
+ }
55
+ try {
56
+ const refreshed = await this.redis.commands.pexpire(this.nodeIdKey, this.refreshDelay * this.refreshMultiplier);
57
+ // Unable to refresh the key in time before it expires
58
+ // => this node is too slow, we need to remove it from the cluster
59
+ if (refreshed === 0) {
60
+ await this.dispose();
61
+ process.send({
62
+ error: "Node too slow: ID card expired",
63
+ });
64
+ }
65
+ }
66
+ catch (error) {
67
+ await this.dispose();
68
+ process.send({
69
+ error: `Failed to refresh ID Card: ${error.message}`,
70
+ });
71
+ }
72
+ }
73
+ async dispose() {
74
+ if (this.disposed) {
75
+ return; // Already disposed
76
+ }
77
+ this.disposed = true;
78
+ clearInterval(this.refreshTimer);
79
+ this.refreshTimer = null;
80
+ // If the worker is disposed before it had time to starts, redis service
81
+ // may not have been initialized
82
+ if (!this.redis) {
83
+ return;
84
+ }
85
+ try {
86
+ await this.redis.commands.del(this.nodeIdKey);
87
+ }
88
+ catch (error) {
89
+ // eslint-disable-next-line no-console
90
+ console.error(`Could not delete key '${this.nodeIdKey}' from redis: ${error.message}`);
91
+ }
92
+ }
93
+ }
94
+ const idCardRenewer = new IDCardRenewer();
95
+ process.on("message", async (message) => {
96
+ if (message.action === "start") {
97
+ // Simulate basic global Kuzzle Context
98
+ global.kuzzle = { ...message.kuzzle };
99
+ global.kuzzle.log = {
100
+ debug: console.debug, // eslint-disable-line no-console
101
+ error: console.error, // eslint-disable-line no-console
102
+ info: console.info, // eslint-disable-line no-console
103
+ warn: console.warn, // eslint-disable-line no-console
104
+ };
105
+ // Should never throw
106
+ await idCardRenewer.init(message);
107
+ }
108
+ else if (message.action === "dispose") {
109
+ // Should never throw
110
+ await idCardRenewer.dispose();
111
+ process.exit(0);
112
+ }
113
+ });
114
+ // When the IPC is closed on the main process side
115
+ process.on("disconnect", async () => {
116
+ await idCardRenewer.dispose();
117
+ process.exit();
118
+ });
119
+ module.exports = { IDCardRenewer };
120
+ //# sourceMappingURL=IDCardRenewer.js.map
@@ -1,7 +1,6 @@
1
- interface EventAliases {
1
+ export interface EventAliases {
2
2
  list: Record<string, unknown>;
3
3
  namespace: string;
4
4
  notBefore: string[];
5
5
  }
6
6
  export declare const documentEventAliases: EventAliases;
7
- export {};