kuzzle 2.56.0 → 2.57.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/dist/bin/copy-binaries.js +71 -4
  2. package/dist/bin/start-kuzzle-server +191 -97
  3. package/dist/index.d.ts +31 -1
  4. package/dist/index.js +45 -2
  5. package/dist/lib/api/controllers/adminController.d.ts +4 -3
  6. package/dist/lib/api/controllers/adminController.js +1 -2
  7. package/dist/lib/api/controllers/authController.d.ts +37 -16
  8. package/dist/lib/api/controllers/authController.js +88 -39
  9. package/dist/lib/api/controllers/baseController.d.ts +10 -5
  10. package/dist/lib/api/controllers/baseController.js +36 -15
  11. package/dist/lib/api/controllers/bulkController.d.ts +11 -7
  12. package/dist/lib/api/controllers/bulkController.js +28 -5
  13. package/dist/lib/api/controllers/clusterController.d.ts +2 -2
  14. package/dist/lib/api/controllers/clusterController.js +3 -3
  15. package/dist/lib/api/controllers/collectionController.d.ts +57 -21
  16. package/dist/lib/api/controllers/collectionController.js +40 -11
  17. package/dist/lib/api/controllers/debugController.d.ts +1 -1
  18. package/dist/lib/api/controllers/documentController.d.ts +137 -28
  19. package/dist/lib/api/controllers/documentController.js +156 -125
  20. package/dist/lib/api/controllers/index.d.ts +27 -12
  21. package/dist/lib/api/controllers/index.js +28 -13
  22. package/dist/lib/api/controllers/indexController.d.ts +17 -10
  23. package/dist/lib/api/controllers/indexController.js +13 -11
  24. package/dist/lib/api/controllers/memoryStorageController.d.ts +2 -5
  25. package/dist/lib/api/controllers/memoryStorageController.js +199 -127
  26. package/dist/lib/api/controllers/realtimeController.d.ts +19 -9
  27. package/dist/lib/api/controllers/realtimeController.js +8 -4
  28. package/dist/lib/api/controllers/securityController.d.ts +42 -29
  29. package/dist/lib/api/controllers/securityController.js +35 -19
  30. package/dist/lib/api/controllers/serverController.d.ts +114 -19
  31. package/dist/lib/api/controllers/serverController.js +69 -29
  32. package/dist/lib/api/documentExtractor.d.ts +9 -7
  33. package/dist/lib/api/documentExtractor.js +105 -41
  34. package/dist/lib/api/funnel.d.ts +131 -29
  35. package/dist/lib/api/funnel.js +436 -225
  36. package/dist/lib/api/httpRoutes.d.ts +16 -11
  37. package/dist/lib/api/httpRoutes.js +272 -2
  38. package/dist/lib/api/openapi/OpenApiManager.d.ts +1 -1
  39. package/dist/lib/api/openapi/openApiGenerator.d.ts +1 -1
  40. package/dist/lib/api/rateLimiter.d.ts +15 -5
  41. package/dist/lib/api/rateLimiter.js +42 -14
  42. package/dist/lib/api/request/kuzzleRequest.d.ts +83 -12
  43. package/dist/lib/api/request/kuzzleRequest.js +88 -23
  44. package/dist/lib/api/request/requestContext.d.ts +20 -5
  45. package/dist/lib/api/request/requestContext.js +14 -4
  46. package/dist/lib/api/request/requestInput.d.ts +37 -6
  47. package/dist/lib/api/request/requestInput.js +22 -9
  48. package/dist/lib/api/request/requestResponse.d.ts +45 -9
  49. package/dist/lib/api/request/requestResponse.js +34 -3
  50. package/dist/lib/cluster/command.d.ts +131 -37
  51. package/dist/lib/cluster/command.js +243 -71
  52. package/dist/lib/cluster/idCardHandler.d.ts +18 -5
  53. package/dist/lib/cluster/idCardHandler.js +52 -19
  54. package/dist/lib/cluster/index.d.ts +8 -2
  55. package/dist/lib/cluster/index.js +6 -2
  56. package/dist/lib/cluster/node.d.ts +127 -49
  57. package/dist/lib/cluster/node.js +412 -179
  58. package/dist/lib/cluster/protobuf/command.proto +18 -0
  59. package/dist/lib/cluster/protobuf/commandMessages.d.ts +104 -0
  60. package/dist/lib/cluster/protobuf/commandMessages.js +30 -0
  61. package/dist/lib/cluster/protobuf/syncMessages.d.ts +184 -0
  62. package/dist/lib/cluster/protobuf/syncMessages.js +23 -0
  63. package/dist/lib/cluster/publisher.d.ts +118 -78
  64. package/dist/lib/cluster/publisher.js +174 -72
  65. package/dist/lib/cluster/state.d.ts +15 -9
  66. package/dist/lib/cluster/state.js +12 -8
  67. package/dist/lib/cluster/subscriber.d.ts +185 -131
  68. package/dist/lib/cluster/subscriber.js +357 -95
  69. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +39 -8
  70. package/dist/lib/cluster/workers/IDCardRenewer.js +88 -23
  71. package/dist/lib/config/default.config.d.ts +2 -2
  72. package/dist/lib/config/default.config.js +10 -3
  73. package/dist/lib/config/documentEventAliases.d.ts +1 -1
  74. package/dist/lib/config/index.d.ts +2 -5
  75. package/dist/lib/config/index.js +30 -17
  76. package/dist/lib/core/auth/formatProcessing.d.ts +3 -3
  77. package/dist/lib/core/auth/passportResponse.d.ts +1 -1
  78. package/dist/lib/core/auth/passportWrapper.d.ts +1 -1
  79. package/dist/lib/core/auth/passportWrapper.js +14 -13
  80. package/dist/lib/core/auth/tokenManager.d.ts +24 -3
  81. package/dist/lib/core/auth/tokenManager.js +47 -19
  82. package/dist/lib/core/backend/applicationManager.d.ts +2 -2
  83. package/dist/lib/core/backend/backend.d.ts +16 -5
  84. package/dist/lib/core/backend/backend.js +14 -6
  85. package/dist/lib/core/backend/backendCluster.d.ts +1 -1
  86. package/dist/lib/core/backend/backendConfig.d.ts +17 -5
  87. package/dist/lib/core/backend/backendConfig.js +1 -0
  88. package/dist/lib/core/backend/backendController.d.ts +1 -1
  89. package/dist/lib/core/backend/backendController.js +8 -1
  90. package/dist/lib/core/backend/backendErrors.d.ts +15 -8
  91. package/dist/lib/core/backend/backendErrors.js +5 -0
  92. package/dist/lib/core/backend/backendHook.d.ts +1 -1
  93. package/dist/lib/core/backend/backendImport.d.ts +1 -1
  94. package/dist/lib/core/backend/backendOpenApi.d.ts +3 -2
  95. package/dist/lib/core/backend/backendPipe.d.ts +1 -1
  96. package/dist/lib/core/backend/backendPipe.js +9 -1
  97. package/dist/lib/core/backend/backendPlugin.d.ts +2 -2
  98. package/dist/lib/core/backend/backendSubscription.d.ts +2 -2
  99. package/dist/lib/core/backend/backendVault.d.ts +1 -1
  100. package/dist/lib/core/backend/backendVault.js +8 -1
  101. package/dist/lib/core/cache/cacheEngine.d.ts +7 -4
  102. package/dist/lib/core/cache/cacheEngine.js +25 -8
  103. package/dist/lib/core/debug/kuzzleDebugger.d.ts +2 -1
  104. package/dist/lib/core/debug/kuzzleDebugger.js +31 -17
  105. package/dist/lib/core/network/accessLogger.d.ts +33 -18
  106. package/dist/lib/core/network/accessLogger.js +135 -73
  107. package/dist/lib/core/network/clientConnection.d.ts +13 -11
  108. package/dist/lib/core/network/clientConnection.js +33 -9
  109. package/dist/lib/core/network/context.d.ts +17 -22
  110. package/dist/lib/core/network/context.js +43 -26
  111. package/dist/lib/core/network/entryPoint.d.ts +38 -16
  112. package/dist/lib/core/network/entryPoint.js +119 -48
  113. package/dist/lib/core/network/httpRouter/index.d.ts +20 -50
  114. package/dist/lib/core/network/httpRouter/index.js +61 -75
  115. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +17 -32
  116. package/dist/lib/core/network/httpRouter/routeHandler.js +26 -36
  117. package/dist/lib/core/network/httpRouter/routePart.d.ts +9 -18
  118. package/dist/lib/core/network/httpRouter/routePart.js +61 -43
  119. package/dist/lib/core/network/httpRouter/routeTypes.d.ts +3 -0
  120. package/dist/lib/core/network/httpRouter/routeTypes.js +23 -0
  121. package/dist/lib/core/network/networkEntryPoint.d.ts +20 -0
  122. package/dist/lib/core/network/networkEntryPoint.js +23 -0
  123. package/dist/lib/core/network/protocolManifest.d.ts +5 -4
  124. package/dist/lib/core/network/protocolManifest.js +6 -3
  125. package/dist/lib/core/network/protocols/httpMessage.d.ts +25 -18
  126. package/dist/lib/core/network/protocols/httpMessage.js +14 -11
  127. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +84 -93
  128. package/dist/lib/core/network/protocols/httpwsProtocol.js +284 -129
  129. package/dist/lib/core/network/protocols/internalProtocol.d.ts +26 -15
  130. package/dist/lib/core/network/protocols/internalProtocol.js +17 -16
  131. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +56 -32
  132. package/dist/lib/core/network/protocols/mqttProtocol.js +91 -44
  133. package/dist/lib/core/network/protocols/protocol.d.ts +85 -21
  134. package/dist/lib/core/network/protocols/protocol.js +83 -27
  135. package/dist/lib/core/network/router.d.ts +13 -22
  136. package/dist/lib/core/network/router.js +59 -46
  137. package/dist/lib/core/plugin/plugin.d.ts +57 -51
  138. package/dist/lib/core/plugin/plugin.js +218 -103
  139. package/dist/lib/core/plugin/pluginContext.d.ts +54 -11
  140. package/dist/lib/core/plugin/pluginContext.js +99 -58
  141. package/dist/lib/core/plugin/pluginManifest.d.ts +6 -2
  142. package/dist/lib/core/plugin/pluginManifest.js +18 -11
  143. package/dist/lib/core/plugin/pluginRepository.d.ts +35 -44
  144. package/dist/lib/core/plugin/pluginRepository.js +35 -50
  145. package/dist/lib/core/plugin/pluginsManager.d.ts +128 -46
  146. package/dist/lib/core/plugin/pluginsManager.js +468 -231
  147. package/dist/lib/core/plugin/privilegedContext.d.ts +4 -9
  148. package/dist/lib/core/plugin/privilegedContext.js +5 -10
  149. package/dist/lib/core/realtime/actionEnum.d.ts +12 -21
  150. package/dist/lib/core/realtime/actionEnum.js +6 -7
  151. package/dist/lib/core/realtime/channel.d.ts +11 -5
  152. package/dist/lib/core/realtime/channel.js +17 -2
  153. package/dist/lib/core/realtime/connectionRooms.d.ts +2 -2
  154. package/dist/lib/core/realtime/hotelClerk.d.ts +12 -6
  155. package/dist/lib/core/realtime/hotelClerk.js +29 -11
  156. package/dist/lib/core/realtime/index.d.ts +8 -3
  157. package/dist/lib/core/realtime/index.js +12 -5
  158. package/dist/lib/core/realtime/notification/document.d.ts +54 -25
  159. package/dist/lib/core/realtime/notification/document.js +10 -13
  160. package/dist/lib/core/realtime/notification/index.d.ts +9 -3
  161. package/dist/lib/core/realtime/notification/index.js +10 -4
  162. package/dist/lib/core/realtime/notification/server.d.ts +7 -10
  163. package/dist/lib/core/realtime/notification/server.js +4 -7
  164. package/dist/lib/core/realtime/notification/user.d.ts +45 -21
  165. package/dist/lib/core/realtime/notification/user.js +8 -9
  166. package/dist/lib/core/realtime/notifier.d.ts +52 -40
  167. package/dist/lib/core/realtime/notifier.js +60 -25
  168. package/dist/lib/core/realtime/room.d.ts +1 -1
  169. package/dist/lib/core/realtime/subscription.d.ts +11 -6
  170. package/dist/lib/core/realtime/subscription.js +5 -1
  171. package/dist/lib/core/security/index.d.ts +14 -6
  172. package/dist/lib/core/security/index.js +27 -13
  173. package/dist/lib/core/security/profileRepository.d.ts +24 -19
  174. package/dist/lib/core/security/profileRepository.js +23 -10
  175. package/dist/lib/core/security/roleRepository.d.ts +60 -23
  176. package/dist/lib/core/security/roleRepository.js +122 -53
  177. package/dist/lib/core/security/securityLoader.d.ts +33 -18
  178. package/dist/lib/core/security/securityLoader.js +43 -16
  179. package/dist/lib/core/security/tokenRepository.d.ts +21 -7
  180. package/dist/lib/core/security/tokenRepository.js +50 -23
  181. package/dist/lib/core/security/userRepository.d.ts +44 -21
  182. package/dist/lib/core/security/userRepository.js +59 -19
  183. package/dist/lib/core/shared/KoncordeWrapper.d.ts +1 -1
  184. package/dist/lib/core/shared/ObjectRepository.d.ts +80 -18
  185. package/dist/lib/core/shared/ObjectRepository.js +57 -29
  186. package/dist/lib/core/shared/abstractManifest.d.ts +21 -8
  187. package/dist/lib/core/shared/abstractManifest.js +57 -17
  188. package/dist/lib/core/shared/sdk/embeddedSdk.d.ts +3 -1
  189. package/dist/lib/core/shared/sdk/embeddedSdk.js +8 -7
  190. package/dist/lib/core/shared/sdk/funnelProtocol.d.ts +2 -1
  191. package/dist/lib/core/shared/sdk/funnelProtocol.js +12 -3
  192. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +11 -5
  193. package/dist/lib/core/shared/sdk/impersonatedSdk.js +22 -9
  194. package/dist/lib/core/shared/store.d.ts +45 -29
  195. package/dist/lib/core/shared/store.js +48 -27
  196. package/dist/lib/core/statistics/statistics.d.ts +1 -1
  197. package/dist/lib/core/storage/clientAdapter.d.ts +39 -21
  198. package/dist/lib/core/storage/clientAdapter.js +88 -48
  199. package/dist/lib/core/storage/indexCache.d.ts +8 -0
  200. package/dist/lib/core/storage/indexCache.js +16 -7
  201. package/dist/lib/core/storage/storageEngine.d.ts +7 -6
  202. package/dist/lib/core/storage/storageEngine.js +11 -8
  203. package/dist/lib/core/validation/baseType.d.ts +22 -22
  204. package/dist/lib/core/validation/baseType.js +11 -26
  205. package/dist/lib/core/validation/specification.d.ts +148 -0
  206. package/dist/lib/core/validation/specification.js +34 -0
  207. package/dist/lib/core/validation/typeOptions.d.ts +62 -0
  208. package/dist/lib/core/validation/typeOptions.js +23 -0
  209. package/dist/lib/core/validation/types/anything.d.ts +3 -6
  210. package/dist/lib/core/validation/types/anything.js +7 -7
  211. package/dist/lib/core/validation/types/boolean.d.ts +5 -12
  212. package/dist/lib/core/validation/types/boolean.js +7 -12
  213. package/dist/lib/core/validation/types/date.d.ts +19 -11
  214. package/dist/lib/core/validation/types/date.js +212 -161
  215. package/dist/lib/core/validation/types/email.d.ts +7 -11
  216. package/dist/lib/core/validation/types/email.js +13 -17
  217. package/dist/lib/core/validation/types/enum.d.ts +7 -11
  218. package/dist/lib/core/validation/types/enum.js +39 -20
  219. package/dist/lib/core/validation/types/geoPoint.d.ts +5 -13
  220. package/dist/lib/core/validation/types/geoPoint.js +10 -15
  221. package/dist/lib/core/validation/types/geoShape.d.ts +22 -21
  222. package/dist/lib/core/validation/types/geoShape.js +113 -129
  223. package/dist/lib/core/validation/types/geoShapeUtils.d.ts +15 -0
  224. package/dist/lib/core/validation/types/geoShapeUtils.js +75 -0
  225. package/dist/lib/core/validation/types/integer.d.ts +7 -5
  226. package/dist/lib/core/validation/types/integer.js +7 -13
  227. package/dist/lib/core/validation/types/ipAddress.d.ts +7 -11
  228. package/dist/lib/core/validation/types/ipAddress.js +13 -17
  229. package/dist/lib/core/validation/types/numeric.d.ts +7 -11
  230. package/dist/lib/core/validation/types/numeric.js +22 -29
  231. package/dist/lib/core/validation/types/object.d.ts +8 -15
  232. package/dist/lib/core/validation/types/object.js +12 -21
  233. package/dist/lib/core/validation/types/string.d.ts +7 -11
  234. package/dist/lib/core/validation/types/string.js +22 -29
  235. package/dist/lib/core/validation/types/url.d.ts +7 -11
  236. package/dist/lib/core/validation/types/url.js +14 -18
  237. package/dist/lib/core/validation/validation.d.ts +119 -80
  238. package/dist/lib/core/validation/validation.js +470 -412
  239. package/dist/lib/core/validation/validationUtils.d.ts +31 -0
  240. package/dist/lib/core/validation/validationUtils.js +190 -0
  241. package/dist/lib/kerror/codes/4-plugin.json +0 -12
  242. package/dist/lib/kerror/codes/index.d.ts +12 -2
  243. package/dist/lib/kerror/codes/index.js +5 -4
  244. package/dist/lib/kerror/errors/badRequestError.d.ts +1 -1
  245. package/dist/lib/kerror/errors/badRequestError.js +1 -1
  246. package/dist/lib/kerror/errors/externalServiceError.d.ts +1 -1
  247. package/dist/lib/kerror/errors/externalServiceError.js +1 -1
  248. package/dist/lib/kerror/errors/forbiddenError.d.ts +1 -1
  249. package/dist/lib/kerror/errors/forbiddenError.js +1 -1
  250. package/dist/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
  251. package/dist/lib/kerror/errors/gatewayTimeoutError.js +1 -1
  252. package/dist/lib/kerror/errors/internalError.d.ts +1 -1
  253. package/dist/lib/kerror/errors/internalError.js +1 -1
  254. package/dist/lib/kerror/errors/kuzzleError.d.ts +32 -3
  255. package/dist/lib/kerror/errors/kuzzleError.js +21 -7
  256. package/dist/lib/kerror/errors/multipleErrorsError.d.ts +2 -2
  257. package/dist/lib/kerror/errors/multipleErrorsError.js +2 -2
  258. package/dist/lib/kerror/errors/notFoundError.d.ts +1 -1
  259. package/dist/lib/kerror/errors/notFoundError.js +1 -1
  260. package/dist/lib/kerror/errors/partialError.d.ts +8 -2
  261. package/dist/lib/kerror/errors/partialError.js +22 -9
  262. package/dist/lib/kerror/errors/pluginImplementationError.d.ts +9 -1
  263. package/dist/lib/kerror/errors/pluginImplementationError.js +9 -3
  264. package/dist/lib/kerror/errors/preconditionError.d.ts +1 -1
  265. package/dist/lib/kerror/errors/preconditionError.js +1 -1
  266. package/dist/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
  267. package/dist/lib/kerror/errors/serviceUnavailableError.js +1 -1
  268. package/dist/lib/kerror/errors/sizeLimitError.d.ts +1 -1
  269. package/dist/lib/kerror/errors/sizeLimitError.js +1 -1
  270. package/dist/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
  271. package/dist/lib/kerror/errors/tooManyRequestsError.js +1 -1
  272. package/dist/lib/kerror/errors/unauthorizedError.d.ts +1 -1
  273. package/dist/lib/kerror/errors/unauthorizedError.js +1 -1
  274. package/dist/lib/kerror/index.d.ts +19 -13
  275. package/dist/lib/kerror/index.js +60 -19
  276. package/dist/lib/kuzzle/Logger.d.ts +2 -2
  277. package/dist/lib/kuzzle/dumpGenerator.d.ts +12 -8
  278. package/dist/lib/kuzzle/dumpGenerator.js +130 -62
  279. package/dist/lib/kuzzle/event/KuzzleEventEmitter.d.ts +18 -9
  280. package/dist/lib/kuzzle/event/KuzzleEventEmitter.js +45 -18
  281. package/dist/lib/kuzzle/event/pipeRunner.d.ts +37 -16
  282. package/dist/lib/kuzzle/event/pipeRunner.js +73 -26
  283. package/dist/lib/kuzzle/event/waterfall.d.ts +11 -1
  284. package/dist/lib/kuzzle/event/waterfall.js +38 -13
  285. package/dist/lib/kuzzle/internalIndexHandler.d.ts +11 -174
  286. package/dist/lib/kuzzle/internalIndexHandler.js +58 -29
  287. package/dist/lib/kuzzle/kuzzle.d.ts +25 -10
  288. package/dist/lib/kuzzle/kuzzle.js +74 -17
  289. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +16 -12
  290. package/dist/lib/kuzzle/kuzzleStateEnum.js +5 -7
  291. package/dist/lib/kuzzle/vault.d.ts +5 -1
  292. package/dist/lib/kuzzle/vault.js +29 -17
  293. package/dist/lib/model/security/profile.d.ts +34 -5
  294. package/dist/lib/model/security/profile.js +6 -5
  295. package/dist/lib/model/security/rights.d.ts +12 -4
  296. package/dist/lib/model/security/rights.js +7 -6
  297. package/dist/lib/model/security/role.d.ts +8 -4
  298. package/dist/lib/model/security/role.js +12 -6
  299. package/dist/lib/model/security/token.d.ts +8 -0
  300. package/dist/lib/model/security/user.d.ts +8 -2
  301. package/dist/lib/model/security/user.js +7 -4
  302. package/dist/lib/model/storage/apiKey.d.ts +55 -26
  303. package/dist/lib/model/storage/apiKey.js +97 -24
  304. package/dist/lib/model/storage/baseModel.d.ts +77 -66
  305. package/dist/lib/model/storage/baseModel.js +21 -34
  306. package/dist/lib/service/cache/redis.d.ts +53 -36
  307. package/dist/lib/service/cache/redis.js +148 -71
  308. package/dist/lib/service/service.d.ts +14 -19
  309. package/dist/lib/service/service.js +41 -22
  310. package/dist/lib/service/storage/7/elasticsearch.d.ts +136 -93
  311. package/dist/lib/service/storage/7/elasticsearch.js +218 -165
  312. package/dist/lib/service/storage/7/esWrapper.d.ts +30 -13
  313. package/dist/lib/service/storage/7/esWrapper.js +58 -37
  314. package/dist/lib/service/storage/8/elasticsearch.d.ts +153 -119
  315. package/dist/lib/service/storage/8/elasticsearch.js +286 -213
  316. package/dist/lib/service/storage/8/esWrapper.d.ts +30 -13
  317. package/dist/lib/service/storage/8/esWrapper.js +59 -38
  318. package/dist/lib/service/storage/commons/queryTranslator.d.ts +3 -3
  319. package/dist/lib/service/storage/commons/queryTranslator.js +71 -35
  320. package/dist/lib/types/ApiRoute.d.ts +12 -0
  321. package/dist/lib/types/ApiRoute.js +23 -0
  322. package/dist/lib/types/ClientConnection.d.ts +1 -1
  323. package/dist/lib/types/EventHandler.d.ts +10 -0
  324. package/dist/lib/types/Global.d.ts +8 -3
  325. package/dist/lib/types/HttpMessage.d.ts +2 -2
  326. package/dist/lib/types/HttpStream.d.ts +1 -1
  327. package/dist/lib/types/HttpStream.js +3 -1
  328. package/dist/lib/types/JSONObject.d.ts +9 -0
  329. package/dist/lib/types/JSONObject.js +23 -0
  330. package/dist/lib/types/Kuzzle.d.ts +5 -3
  331. package/dist/lib/types/KuzzleDocument.d.ts +1 -1
  332. package/dist/lib/types/KuzzleWebSocket.d.ts +24 -0
  333. package/dist/lib/types/KuzzleWebSocket.js +23 -0
  334. package/dist/lib/types/OpenApiDefinition.d.ts +1 -1
  335. package/dist/lib/types/Plugin.d.ts +33 -8
  336. package/dist/lib/types/PluginInstance.d.ts +67 -0
  337. package/dist/lib/types/PluginInstance.js +23 -0
  338. package/dist/lib/types/Policy.d.ts +1 -1
  339. package/dist/lib/types/Target.d.ts +8 -0
  340. package/dist/lib/types/Token.d.ts +14 -2
  341. package/dist/lib/types/config/HttpConfiguration.d.ts +5 -0
  342. package/dist/lib/types/config/KuzzleConfiguration.d.ts +102 -1
  343. package/dist/lib/types/config/PluginsConfiguration.d.ts +3 -2
  344. package/dist/lib/types/config/SecurityConfiguration.d.ts +6 -2
  345. package/dist/lib/types/config/ServerConfiguration.d.ts +2 -2
  346. package/dist/lib/types/config/ServicesConfiguration.d.ts +1 -1
  347. package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.d.ts +131 -0
  348. package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.js +3 -0
  349. package/dist/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +2 -106
  350. package/dist/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +2 -26
  351. package/dist/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +3 -0
  352. package/dist/lib/types/controllers/Controller.d.ts +12 -3
  353. package/dist/lib/types/controllers/ControllerDefinition.d.ts +2 -2
  354. package/dist/lib/types/controllers/{adminControlller.type.js → adminController.type.js} +1 -1
  355. package/dist/lib/types/controllers/authController.type.d.ts +2 -2
  356. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -1
  357. package/dist/lib/types/errors/ErrorDomains.d.ts +1 -1
  358. package/dist/lib/types/events/EventGenericDocument.d.ts +10 -9
  359. package/dist/lib/types/events/EventProtocol.d.ts +4 -4
  360. package/dist/lib/types/index.d.ts +7 -0
  361. package/dist/lib/types/index.js +7 -0
  362. package/dist/lib/types/shared/StoreCollectionsDefinition.d.ts +1 -1
  363. package/dist/lib/types/storage/7/Elasticsearch.d.ts +62 -13
  364. package/dist/lib/types/storage/8/Elasticsearch.d.ts +62 -13
  365. package/dist/lib/util/Inflector.d.ts +4 -1
  366. package/dist/lib/util/Inflector.js +0 -3
  367. package/dist/lib/util/assertType.d.ts +24 -27
  368. package/dist/lib/util/assertType.js +28 -39
  369. package/dist/lib/util/async.js +19 -6
  370. package/dist/lib/util/asyncStore.js +1 -1
  371. package/dist/lib/util/bufferedPassThrough.d.ts +9 -0
  372. package/dist/lib/util/bufferedPassThrough.js +27 -13
  373. package/dist/lib/util/bytes.d.ts +1 -1
  374. package/dist/lib/util/bytes.js +6 -2
  375. package/dist/lib/util/debug.d.ts +3 -1
  376. package/dist/lib/util/debug.js +42 -10
  377. package/dist/lib/util/deprecate.d.ts +9 -1
  378. package/dist/lib/util/deprecate.js +10 -6
  379. package/dist/lib/util/didYouMean.d.ts +2 -1
  380. package/dist/lib/util/didYouMean.js +8 -4
  381. package/dist/lib/util/distributedLock.d.ts +56 -0
  382. package/dist/lib/util/distributedLock.js +166 -0
  383. package/dist/lib/util/dump-collection.d.ts +1 -1
  384. package/dist/lib/util/dump-collection.js +4 -5
  385. package/dist/lib/util/extractFields.d.ts +15 -11
  386. package/dist/lib/util/extractFields.js +8 -9
  387. package/dist/lib/util/koncordeCompat.d.ts +2 -2
  388. package/dist/lib/util/koncordeCompat.js +33 -0
  389. package/dist/lib/util/memoize.d.ts +7 -6
  390. package/dist/lib/util/memoize.js +3 -3
  391. package/dist/lib/util/mutex.d.ts +22 -2
  392. package/dist/lib/util/mutex.js +39 -1
  393. package/dist/lib/util/name-generator.js +14 -2
  394. package/dist/lib/util/promback.d.ts +20 -11
  395. package/dist/lib/util/promback.js +14 -7
  396. package/dist/lib/util/requestAssertions.d.ts +30 -10
  397. package/dist/lib/util/requestAssertions.js +125 -121
  398. package/dist/lib/util/safeObject.d.ts +3 -3
  399. package/dist/lib/util/safeObject.js +7 -3
  400. package/dist/lib/util/stackTrace.d.ts +13 -5
  401. package/dist/lib/util/stackTrace.js +17 -12
  402. package/dist/lib/util/thrown.d.ts +13 -0
  403. package/dist/lib/util/thrown.js +46 -0
  404. package/dist/package.json +26 -19
  405. package/package.json +26 -19
  406. package/dist/lib/util/wildcard.d.ts +0 -1
  407. package/dist/lib/util/wildcard.js +0 -46
  408. /package/dist/lib/types/controllers/{adminControlller.type.d.ts → adminController.type.d.ts} +0 -0
@@ -1,29 +1,53 @@
1
- export = UserNotification;
1
+ import type { JSONObject } from "../../../types/JSONObject";
2
+ import type { KuzzleRequest } from "../../../api/request";
3
+ import type { RealtimeUsers } from "../../../types";
4
+ import "../../../types/Global";
5
+ /**
6
+ * Constructor payload. Filled either by `fromRequest` below or by
7
+ * `cluster/subscriber` from a decoded protobuf message.
8
+ */
9
+ interface UserNotificationOptions {
10
+ status: number;
11
+ user: RealtimeUsers;
12
+ result: JSONObject;
13
+ node: string;
14
+ timestamp: number;
15
+ /**
16
+ * Nullable, like the other four below: they come straight off the request,
17
+ * where each is nullable, and a notification built from a request without one
18
+ * has always been emitted — and received — with `null` in that field.
19
+ */
20
+ volatile: JSONObject | null;
21
+ index: string;
22
+ collection: string;
23
+ controller: string | null;
24
+ action: string | null;
25
+ protocol: string | null;
26
+ }
2
27
  /**
3
28
  * User notification document
4
- *
5
- * @class UserNotification
6
29
  */
7
30
  declare class UserNotification {
31
+ type: string;
32
+ status: number;
33
+ user: RealtimeUsers;
34
+ result: JSONObject;
35
+ node: string;
36
+ timestamp: number;
37
+ volatile: JSONObject | null;
38
+ index: string;
39
+ collection: string;
40
+ controller: string | null;
41
+ action: string | null;
42
+ protocol: string | null;
43
+ constructor(opts: UserNotificationOptions);
8
44
  /**
9
45
  * Instantiates a UserNotification object from a KuzzleRequest
10
- * @param {Request} request - the request object from which the notification is issued
11
- * @param {string} user - The scope of the notification (in or out)
12
- * @param {object} content - Notification content
13
- * returns {UserNotification}
46
+ *
47
+ * @param request - the request object from which the notification is issued
48
+ * @param user - Whether the user is entering or leaving the room
49
+ * @param result - Notification content
14
50
  */
15
- static fromRequest(request: Request, user: string, result: any): UserNotification;
16
- constructor(opts: any);
17
- type: string;
18
- status: any;
19
- user: any;
20
- result: any;
21
- node: any;
22
- timestamp: any;
23
- volatile: any;
24
- index: any;
25
- collection: any;
26
- controller: any;
27
- action: any;
28
- protocol: any;
51
+ static fromRequest(request: KuzzleRequest, user: RealtimeUsers, result: JSONObject): UserNotification;
29
52
  }
53
+ export = UserNotification;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /*
2
3
  * Kuzzle, a backend software, self-hostable and ready to use
3
4
  * to power modern apps
@@ -18,11 +19,9 @@
18
19
  * See the License for the specific language governing permissions and
19
20
  * limitations under the License.
20
21
  */
21
- "use strict";
22
+ require("../../../types/Global");
22
23
  /**
23
24
  * User notification document
24
- *
25
- * @class UserNotification
26
25
  */
27
26
  class UserNotification {
28
27
  constructor(opts) {
@@ -41,17 +40,17 @@ class UserNotification {
41
40
  }
42
41
  /**
43
42
  * Instantiates a UserNotification object from a KuzzleRequest
44
- * @param {Request} request - the request object from which the notification is issued
45
- * @param {string} user - The scope of the notification (in or out)
46
- * @param {object} content - Notification content
47
- * returns {UserNotification}
43
+ *
44
+ * @param request - the request object from which the notification is issued
45
+ * @param user - Whether the user is entering or leaving the room
46
+ * @param result - Notification content
48
47
  */
49
48
  static fromRequest(request, user, result) {
50
49
  return new UserNotification({
51
50
  action: request.input.action,
52
- collection: request.input.resource.collection,
51
+ collection: request.input.args.collection,
53
52
  controller: request.input.controller,
54
- index: request.input.resource.index,
53
+ index: request.input.args.index,
55
54
  node: global.kuzzle.id,
56
55
  protocol: request.context.connection.protocol,
57
56
  result,
@@ -1,4 +1,33 @@
1
- export = NotifierController;
1
+ import type { JSONObject } from "../../types/JSONObject";
2
+ import Bluebird from "bluebird";
3
+ import type { KuzzleRequest } from "../../api/request";
4
+ import type { RealtimeScope, RealtimeUsers } from "../../types";
5
+ import actionEnum from "./actionEnum";
6
+ /**
7
+ * One of `actionEnum`'s members. Derived from the frozen object so the two
8
+ * cannot drift.
9
+ */
10
+ type NotifyAction = (typeof actionEnum)[keyof typeof actionEnum];
11
+ import type { Logger } from "../../kuzzle/Logger";
12
+ import "../../types/Global";
13
+ import type { HotelClerk } from "./hotelClerk";
14
+ interface RealtimeModule {
15
+ hotelClerk: HotelClerk;
16
+ }
17
+ /**
18
+ * The slice of a written document this controller needs: its id, the source to
19
+ * match against subscription filters, and — for the WRITE/UPSERT actions, which
20
+ * cover both cases — whether the write created the document or updated it.
21
+ */
22
+ interface DocumentChanges {
23
+ _id: string;
24
+ _source?: JSONObject;
25
+ created?: boolean;
26
+ action?: string;
27
+ }
28
+ declare const DocumentNotification: typeof import("./notification/document"), UserNotification: typeof import("./notification/user");
29
+ type DocumentNotificationType = InstanceType<typeof DocumentNotification>;
30
+ type UserNotificationType = InstanceType<typeof UserNotification>;
2
31
  /**
3
32
  * @typedef {Object} DocumentChanges
4
33
  * @property {string} _id of the document
@@ -11,10 +40,10 @@ export = NotifierController;
11
40
  * @class NotifierController
12
41
  */
13
42
  declare class NotifierController {
14
- constructor(realtimeModule: any);
15
- module: any;
16
- ttl: number;
17
- logger: import("../../kuzzle/Logger").Logger;
43
+ private readonly module;
44
+ private readonly ttl;
45
+ logger: Logger;
46
+ constructor(realtimeModule: RealtimeModule);
18
47
  init(): Promise<void>;
19
48
  /**
20
49
  * Broadcasts a notification about a document change or a
@@ -27,7 +56,7 @@ declare class NotifierController {
27
56
  *
28
57
  * @returns {Promise}
29
58
  */
30
- notifyDocument(rooms: any[], request: Request, scope: string, action: any, content: object): Promise<any>;
59
+ notifyDocument(rooms: string[], request: KuzzleRequest, scope: RealtimeScope, action: string, content: JSONObject): Promise<void>;
31
60
  /**
32
61
  * Broadcast a notification about a user entering or leaving
33
62
  * the provided room
@@ -39,21 +68,21 @@ declare class NotifierController {
39
68
  *
40
69
  * @returns {Promise}
41
70
  */
42
- notifyUser(room: string, request: Request, scope: string, content: object): Promise<any>;
71
+ notifyUser(room: string, request: KuzzleRequest, scope: RealtimeUsers, content: JSONObject): Promise<void>;
43
72
  /**
44
73
  * Send a "token expired" notification to the target user
45
74
  *
46
75
  * @param {string} connectionId - User's connection identifier
47
76
  * @returns {Promise}
48
77
  */
49
- notifyTokenExpired(connectionId: string): Promise<any>;
78
+ notifyTokenExpired(connectionId: string): Promise<void>;
50
79
  /**
51
80
  * Publish the content of the provided request to listening subscribers
52
81
  *
53
82
  * @param {Request} request
54
83
  * @returns {Promise.<Object>}
55
84
  */
56
- publish(request: Request): Promise<any>;
85
+ publish(request: KuzzleRequest): Promise<void> | Bluebird<null>;
57
86
  /**
58
87
  * Notify about a created document
59
88
  *
@@ -61,7 +90,7 @@ declare class NotifierController {
61
90
  * @param {DocumentChanges} document created
62
91
  * @returns {Promise.<Array.<string>>} list of matched rooms
63
92
  */
64
- notifyDocumentCreate(request: Request, document: DocumentChanges): Promise<Array<string>>;
93
+ notifyDocumentCreate(request: KuzzleRequest, document: DocumentChanges): Promise<string[]>;
65
94
  /**
66
95
  * Notify about a replaced document
67
96
  *
@@ -70,7 +99,7 @@ declare class NotifierController {
70
99
  * @param {string} cache notification content for that document
71
100
  * @returns {Promise.<Array.<string>} list of matched rooms
72
101
  */
73
- notifyDocumentReplace(request: Request, document: DocumentChanges, cache?: string): Promise<Array<string>>;
102
+ notifyDocumentReplace(request: KuzzleRequest, document: DocumentChanges, cache?: string | null): Promise<string[]>;
74
103
  /**
75
104
  * Computes document notifications and sends them to subscribed users.
76
105
  * @param {Request} request
@@ -78,7 +107,7 @@ declare class NotifierController {
78
107
  * @param {Array.<DocumentChanges>} documents
79
108
  * @return {Promise}
80
109
  */
81
- notifyDocuments(request: Request, action: notifyActionEnum, documents: Array<DocumentChanges>): Promise<any>;
110
+ notifyDocuments(request: KuzzleRequest, action: NotifyAction, documents: DocumentChanges[]): Promise<void>;
82
111
  /**
83
112
  * Notify rooms on a document update
84
113
  * @param {Request} request
@@ -86,7 +115,7 @@ declare class NotifierController {
86
115
  * @param {string} cache notification content for that document
87
116
  * @returns {Promise.<Array.<string>} list of matched rooms
88
117
  */
89
- notifyDocumentUpdate(request: Request, document: DocumentChanges, cache?: string): Promise<Array<string>>;
118
+ notifyDocumentUpdate(request: KuzzleRequest, document: DocumentChanges, cache?: string | null): Promise<string[]>;
90
119
  /**
91
120
  * Notify about a document deletion
92
121
  *
@@ -94,7 +123,7 @@ declare class NotifierController {
94
123
  * @param {DocumentChanges} document
95
124
  * @returns {Promise.<Array>} returns an empty array ("no room match anymore")
96
125
  */
97
- notifyDocumentDelete(request: Request, document: DocumentChanges): Promise<any[]>;
126
+ notifyDocumentDelete(request: KuzzleRequest, document: DocumentChanges): Promise<string[]>;
98
127
  /**
99
128
  * Trigger a notify global event and, if accepted by plugins,
100
129
  * dispatch the payload to subscribers
@@ -107,7 +136,7 @@ declare class NotifierController {
107
136
  *
108
137
  * @returns {Promise}
109
138
  */
110
- _dispatch(event: any, channels: any[], notification: Notification.User | Notification.Document | Notification.Server, connectionId?: string): Promise<any>;
139
+ _dispatch(event: string, channels: string[], notification: unknown, connectionId?: string): Promise<void>;
111
140
  /**
112
141
  * Broadcasts a notification about a document change or a
113
142
  * real-time message.
@@ -125,7 +154,9 @@ declare class NotifierController {
125
154
  *
126
155
  * @returns {Promise}
127
156
  */
128
- _notifyDocument(rooms: any[], notification: typeof import("./notification/document"), { fromCluster }?: object): Promise<any>;
157
+ _notifyDocument(rooms: string[], notification: DocumentNotificationType, { fromCluster }?: {
158
+ fromCluster?: boolean;
159
+ }): Promise<void>;
129
160
  /**
130
161
  * Broadcast a notification about a user entering or leaving
131
162
  * the provided room
@@ -136,7 +167,9 @@ declare class NotifierController {
136
167
  *
137
168
  * @returns {Promise}
138
169
  */
139
- _notifyUser(room: string, notification: typeof import("./notification/user"), { fromCluster }?: object): Promise<any>;
170
+ _notifyUser(room: string, notification: UserNotificationType, { fromCluster }?: {
171
+ fromCluster?: boolean;
172
+ }): Promise<void>;
140
173
  /**
141
174
  * DRYification for calls to Koncorde's test method from a Request object
142
175
  * @param {Request} request
@@ -145,27 +178,6 @@ declare class NotifierController {
145
178
  *
146
179
  * @returns {Array.<string>}
147
180
  */
148
- _test(request: Request, source?: any, id?: string): Array<string>;
181
+ _test(request: KuzzleRequest, source?: JSONObject | null, id?: string | null): string[];
149
182
  }
150
- declare namespace NotifierController {
151
- export { DocumentChanges };
152
- }
153
- type DocumentChanges = {
154
- /**
155
- * of the document
156
- */
157
- _id: string;
158
- /**
159
- * of the document
160
- */
161
- _source?: any;
162
- /**
163
- * applied to the document (for updates)
164
- */
165
- _updatedFields?: any;
166
- /**
167
- * -- tells if this is a CREATE or REPLACE
168
- * (for actionEnum.WRITE)
169
- */
170
- created?: boolean;
171
- };
183
+ export = NotifierController;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /*
2
3
  * Kuzzle, a backend software, self-hostable and ready to use
3
4
  * to power modern apps
@@ -18,13 +19,43 @@
18
19
  * See the License for the specific language governing permissions and
19
20
  * limitations under the License.
20
21
  */
21
- "use strict";
22
- const { difference } = require("lodash");
23
- const Bluebird = require("bluebird");
24
- const kerror = require("../../kerror");
25
- const actionEnum = require("./actionEnum");
26
- const { koncordeTest } = require("../../util/koncordeCompat");
27
- const { DocumentNotification, ServerNotification, UserNotification, } = require("./notification");
22
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ var desc = Object.getOwnPropertyDescriptor(m, k);
25
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
26
+ desc = { enumerable: true, get: function() { return m[k]; } };
27
+ }
28
+ Object.defineProperty(o, k2, desc);
29
+ }) : (function(o, m, k, k2) {
30
+ if (k2 === undefined) k2 = k;
31
+ o[k2] = m[k];
32
+ }));
33
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
34
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
35
+ }) : function(o, v) {
36
+ o["default"] = v;
37
+ });
38
+ var __importStar = (this && this.__importStar) || function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
48
+ const lodash_1 = require("lodash");
49
+ const bluebird_1 = __importDefault(require("bluebird"));
50
+ const kerror = __importStar(require("../../kerror"));
51
+ const actionEnum_1 = __importDefault(require("./actionEnum"));
52
+ const koncordeCompat_1 = require("../../util/koncordeCompat");
53
+ require("../../types/Global");
54
+ // The barrel ships `export = { ... }`: a named import cannot target that
55
+ // (TS2497), but a default one can under `esModuleInterop` — and it also loads
56
+ // under vitest, which `import x = require(...)` does not (step 07, PR G2).
57
+ const notification_1 = __importDefault(require("./notification"));
58
+ const { DocumentNotification, ServerNotification, UserNotification } = notification_1.default;
28
59
  /**
29
60
  * Notification are meant to be dispatched on "channels" created when subscribing.
30
61
  * But some notification like TokenExpired don't have a specific channel to be received on,
@@ -159,7 +190,7 @@ class NotifierController {
159
190
  publish(request) {
160
191
  const rooms = this._test(request);
161
192
  if (rooms.length === 0) {
162
- return Bluebird.resolve(null);
193
+ return bluebird_1.default.resolve(null);
163
194
  }
164
195
  return this.notifyDocument(rooms, request, "in", "publish", {
165
196
  _id: request.input.args._id,
@@ -194,7 +225,7 @@ class NotifierController {
194
225
  await this.notifyDocument(rooms, request, "in", "replace", document);
195
226
  }
196
227
  if (cache !== null) {
197
- const stopListening = difference(JSON.parse(cache), rooms);
228
+ const stopListening = (0, lodash_1.difference)(JSON.parse(cache), rooms);
198
229
  await this.notifyDocument(stopListening, request, "out", "replace", document);
199
230
  }
200
231
  return rooms;
@@ -208,9 +239,9 @@ class NotifierController {
208
239
  */
209
240
  async notifyDocuments(request, action, documents) {
210
241
  const prefix = getCachePrefix(request);
211
- let cached = action === actionEnum.REPLACE || action === actionEnum.UPDATE;
242
+ let cached = action === actionEnum_1.default.REPLACE || action === actionEnum_1.default.UPDATE;
212
243
  const cacheIds = documents.map((doc) => {
213
- if ((action === actionEnum.WRITE || action === actionEnum.UPSERT) &&
244
+ if ((action === actionEnum_1.default.WRITE || action === actionEnum_1.default.UPSERT) &&
214
245
  !cached) {
215
246
  cached = doc.created !== true; // force a bool value if undefined
216
247
  }
@@ -219,21 +250,21 @@ class NotifierController {
219
250
  const cache = cached
220
251
  ? await global.kuzzle.ask("core:cache:internal:mget", cacheIds)
221
252
  : [];
222
- const result = await Bluebird.map(documents, (doc, index) => {
253
+ const result = await bluebird_1.default.map(documents, (doc, index) => {
223
254
  switch (action) {
224
- case actionEnum.CREATE:
255
+ case actionEnum_1.default.CREATE:
225
256
  return this.notifyDocumentCreate(request, doc);
226
- case actionEnum.DELETE:
257
+ case actionEnum_1.default.DELETE:
227
258
  return this.notifyDocumentDelete(request, doc);
228
- case actionEnum.REPLACE:
259
+ case actionEnum_1.default.REPLACE:
229
260
  return this.notifyDocumentReplace(request, doc, cache[index]);
230
- case actionEnum.UPDATE:
261
+ case actionEnum_1.default.UPDATE:
231
262
  return this.notifyDocumentUpdate(request, doc, cache[index]);
232
- case actionEnum.UPSERT:
263
+ case actionEnum_1.default.UPSERT:
233
264
  return doc.created
234
265
  ? this.notifyDocumentCreate(request, doc)
235
266
  : this.notifyDocumentUpdate(request, doc, cache[index]);
236
- case actionEnum.WRITE:
267
+ case actionEnum_1.default.WRITE:
237
268
  return doc.created
238
269
  ? this.notifyDocumentCreate(request, doc)
239
270
  : this.notifyDocumentReplace(request, doc, cache[index]);
@@ -242,11 +273,15 @@ class NotifierController {
242
273
  }
243
274
  });
244
275
  const toDelete = [];
245
- await Bluebird.map(result, (rooms, index) => {
276
+ // Walk the ids, not the results: `cacheIds`, `documents` and `result` are
277
+ // the same length by construction, and this is the array whose element the
278
+ // body needs non-optionally.
279
+ await bluebird_1.default.map(cacheIds, (cacheId, index) => {
280
+ const rooms = result[index] ?? [];
246
281
  if (rooms.length > 0) {
247
- return global.kuzzle.ask("core:cache:internal:store", cacheIds[index], JSON.stringify(rooms), { ttl: this.ttl });
282
+ return global.kuzzle.ask("core:cache:internal:store", cacheId, JSON.stringify(rooms), { ttl: this.ttl });
248
283
  }
249
- toDelete.push(cacheIds[index]);
284
+ toDelete.push(cacheId);
250
285
  return null;
251
286
  });
252
287
  if (toDelete.length > 0) {
@@ -266,7 +301,7 @@ class NotifierController {
266
301
  await this.notifyDocument(rooms, request, "in", "update", document);
267
302
  }
268
303
  if (cache !== null) {
269
- const stopListening = difference(JSON.parse(cache), rooms);
304
+ const stopListening = (0, lodash_1.difference)(JSON.parse(cache), rooms);
270
305
  await this.notifyDocument(stopListening, request, "out", "update", document);
271
306
  }
272
307
  return rooms;
@@ -353,7 +388,7 @@ class NotifierController {
353
388
  }
354
389
  }
355
390
  if (channels.length === 0) {
356
- return Bluebird.resolve();
391
+ return bluebird_1.default.resolve();
357
392
  }
358
393
  return this._dispatch("notify:document", channels, notification);
359
394
  }
@@ -380,7 +415,7 @@ class NotifierController {
380
415
  }
381
416
  }
382
417
  if (channels.length === 0) {
383
- return Bluebird.resolve();
418
+ return bluebird_1.default.resolve();
384
419
  }
385
420
  return this._dispatch("notify:user", channels, notification);
386
421
  }
@@ -393,7 +428,7 @@ class NotifierController {
393
428
  * @returns {Array.<string>}
394
429
  */
395
430
  _test(request, source = null, id = null) {
396
- return koncordeTest(global.kuzzle.koncorde, request.input.args.index, request.input.args.collection, source || request.input.body || {}, id || request.input.args._id);
431
+ return (0, koncordeCompat_1.koncordeTest)(global.kuzzle.koncorde, request.input.args.index, request.input.args.collection, source || request.input.body || {}, id || request.input.args._id);
397
432
  }
398
433
  }
399
434
  function getCachePrefix(request) {
@@ -1,4 +1,4 @@
1
- import { Channel } from "./channel";
1
+ import type { Channel } from "./channel";
2
2
  /**
3
3
  * A room represents a subscription scope made on a combination of:
4
4
  * - index
@@ -1,4 +1,4 @@
1
- import { JSONObject } from "kuzzle-sdk";
1
+ import type { JSONObject } from "../../types/JSONObject";
2
2
  /**
3
3
  * Represents a realtime subscription of a connection to a room.
4
4
  *
@@ -17,9 +17,14 @@ export declare class Subscription {
17
17
  roomId: string;
18
18
  index: string;
19
19
  collection: string;
20
- filters: JSONObject;
21
- kuid: string;
22
- constructor(index: string, collection: string, filters: JSONObject, roomId: string, connectionId: string, user: {
23
- _id: string;
24
- });
20
+ filters: JSONObject | undefined;
21
+ /** Null for an anonymous subscription — `user._id` is what fills it. */
22
+ kuid: string | null;
23
+ constructor(index: string, collection: string,
24
+ /** Absent for an unsubscribe, which reports the room it left, not a filter. */
25
+ filters: JSONObject | undefined, roomId: string, connectionId: string,
26
+ /** Absent or null when the connection carried no user — `kuid` is then null. */
27
+ user?: {
28
+ _id: string | null;
29
+ } | null);
25
30
  }
@@ -35,7 +35,11 @@ exports.Subscription = void 0;
35
35
  * @property kuid
36
36
  */
37
37
  class Subscription {
38
- constructor(index, collection, filters, roomId, connectionId, user) {
38
+ constructor(index, collection,
39
+ /** Absent for an unsubscribe, which reports the room it left, not a filter. */
40
+ filters, roomId, connectionId,
41
+ /** Absent or null when the connection carried no user — `kuid` is then null. */
42
+ user) {
39
43
  this.connectionId = connectionId;
40
44
  this.roomId = roomId;
41
45
  this.index = index;
@@ -1,14 +1,22 @@
1
- export = SecurityModule;
1
+ import RoleRepository from "./roleRepository";
2
+ import { ProfileRepository } from "./profileRepository";
3
+ import { TokenRepository } from "./tokenRepository";
4
+ import UserRepository from "./userRepository";
5
+ import SecurityLoader from "./securityLoader";
6
+ /**
7
+ * Wires the security repositories together and initialises them in order.
8
+ *
9
+ * The repositories that reach a sibling (`role` -> `profile`, `user` ->
10
+ * `profile`/`token`) receive this module; the token repository and the loader
11
+ * do not, and their constructors take no argument.
12
+ */
2
13
  declare class SecurityModule {
3
14
  role: RoleRepository;
4
15
  profile: ProfileRepository;
5
16
  token: TokenRepository;
6
17
  user: UserRepository;
7
18
  loader: SecurityLoader;
19
+ constructor();
8
20
  init(): Promise<void>;
9
21
  }
10
- import RoleRepository = require("./roleRepository");
11
- import { ProfileRepository } from "./profileRepository";
12
- import { TokenRepository } from "./tokenRepository";
13
- import UserRepository = require("./userRepository");
14
- import SecurityLoader = require("./securityLoader");
22
+ export = SecurityModule;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /*
2
3
  * Kuzzle, a backend software, self-hostable and ready to use
3
4
  * to power modern apps
@@ -18,25 +19,38 @@
18
19
  * See the License for the specific language governing permissions and
19
20
  * limitations under the License.
20
21
  */
21
- "use strict";
22
- const RoleRepository = require("./roleRepository");
23
- const { ProfileRepository } = require("./profileRepository");
24
- const { TokenRepository } = require("./tokenRepository");
25
- const UserRepository = require("./userRepository");
26
- const SecurityLoader = require("./securityLoader");
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ const roleRepository_1 = __importDefault(require("./roleRepository"));
26
+ const profileRepository_1 = require("./profileRepository");
27
+ const tokenRepository_1 = require("./tokenRepository");
28
+ const userRepository_1 = __importDefault(require("./userRepository"));
29
+ const securityLoader_1 = __importDefault(require("./securityLoader"));
30
+ /**
31
+ * Wires the security repositories together and initialises them in order.
32
+ *
33
+ * The repositories that reach a sibling (`role` -> `profile`, `user` ->
34
+ * `profile`/`token`) receive this module; the token repository and the loader
35
+ * do not, and their constructors take no argument.
36
+ */
27
37
  class SecurityModule {
28
38
  constructor() {
29
- this.role = new RoleRepository(this);
30
- this.profile = new ProfileRepository(this);
31
- this.token = new TokenRepository();
32
- this.user = new UserRepository(this);
33
- this.loader = new SecurityLoader();
39
+ this.role = new roleRepository_1.default(this);
40
+ this.profile = new profileRepository_1.ProfileRepository(this);
41
+ this.token = new tokenRepository_1.TokenRepository();
42
+ this.user = new userRepository_1.default(this);
43
+ this.loader = new securityLoader_1.default();
34
44
  }
35
45
  async init() {
36
- await this.role.init();
37
- await this.profile.init();
46
+ // `role.init()` and `profile.init()` are synchronous: they only register
47
+ // `onAsk` handlers.
48
+ this.role.init();
49
+ this.profile.init();
38
50
  await this.token.init();
39
51
  await this.user.init();
52
+ // Last: the loader replays security fixtures through the API, so every
53
+ // repository it writes through must already be up.
40
54
  await this.loader.init();
41
55
  }
42
56
  }