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,17 +1,22 @@
1
- export = routes;
2
- declare const routes: ({
3
- verb: string;
1
+ /**
2
+ * A native Kuzzle HTTP route, as exposed through `config.http.routes`.
3
+ *
4
+ * `url` is not declared in the literals below: it is derived from `path` by the
5
+ * loop at the end of this file, and kept as a (deprecated) alias for it.
6
+ */
7
+ interface KuzzleHttpRoute {
8
+ verb: "get" | "post" | "put" | "patch" | "delete";
4
9
  path: string;
5
10
  controller: string;
6
11
  action: string;
7
- deprecated?: undefined;
8
- } | {
9
- verb: string;
10
- path: string;
11
- controller: string;
12
- action: string;
13
- deprecated: {
12
+ /** Set when the route is superseded by another one. */
13
+ deprecated?: {
14
14
  since: string;
15
15
  message: string;
16
16
  };
17
- })[];
17
+ /** Alias of `path`, populated below. */
18
+ url?: string;
19
+ openapi?: Record<string, any>;
20
+ }
21
+ declare const routes: KuzzleHttpRoute[];
22
+ export = routes;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /*
2
3
  * Kuzzle, a backend software, self-hostable and ready to use
3
4
  * to power modern apps
@@ -18,8 +19,6 @@
18
19
  * See the License for the specific language governing permissions and
19
20
  * limitations under the License.
20
21
  */
21
- /* eslint sort-keys: 0 */
22
- "use strict";
23
22
  const routes = [
24
23
  // GET (idempotent)
25
24
  { verb: "get", path: "/_me", controller: "auth", action: "getCurrentUser" },
@@ -941,12 +940,180 @@ const routes = [
941
940
  path: "/users/:userId/api-keys/_create",
942
941
  controller: "security",
943
942
  action: "createApiKey",
943
+ openapi: {
944
+ description: "Creates a new API key for a user. The clear-text token is only ever returned in this response; it cannot be retrieved afterwards. If you are looking to manage your own API keys, use the `auth` controller instead.",
945
+ parameters: [
946
+ {
947
+ in: "path",
948
+ name: "userId",
949
+ schema: { type: "string" },
950
+ required: true,
951
+ description: "User kuid",
952
+ },
953
+ {
954
+ in: "query",
955
+ name: "_id",
956
+ schema: { type: "string" },
957
+ required: false,
958
+ description: "API key unique ID (auto-generated if not provided)",
959
+ },
960
+ {
961
+ in: "query",
962
+ name: "expiresIn",
963
+ schema: { type: "integer", default: -1 },
964
+ required: false,
965
+ description: "Expiration duration in milliseconds (-1 for no expiration)",
966
+ },
967
+ {
968
+ in: "query",
969
+ name: "refresh",
970
+ schema: {
971
+ type: "string",
972
+ enum: ["wait_for", "false"],
973
+ default: "wait_for",
974
+ },
975
+ required: false,
976
+ description: "If set to `wait_for`, waits for the API key to be indexed before responding",
977
+ },
978
+ ],
979
+ requestBody: {
980
+ required: true,
981
+ content: {
982
+ "application/json": {
983
+ schema: {
984
+ type: "object",
985
+ required: ["description"],
986
+ properties: {
987
+ description: {
988
+ type: "string",
989
+ description: "API key description",
990
+ },
991
+ },
992
+ },
993
+ },
994
+ },
995
+ },
996
+ responses: {
997
+ 200: {
998
+ description: "The created API key, including its clear-text token",
999
+ content: {
1000
+ "application/json": {
1001
+ schema: {
1002
+ type: "object",
1003
+ properties: {
1004
+ _id: { type: "string", description: "API key ID" },
1005
+ _source: {
1006
+ type: "object",
1007
+ properties: {
1008
+ userId: { type: "string" },
1009
+ description: { type: "string" },
1010
+ expiresAt: { type: "integer" },
1011
+ ttl: { type: "integer" },
1012
+ fingerprint: {
1013
+ type: "string",
1014
+ description: "SHA256 hash of the token",
1015
+ },
1016
+ token: {
1017
+ type: "string",
1018
+ description: "Authentication token",
1019
+ },
1020
+ },
1021
+ },
1022
+ },
1023
+ },
1024
+ },
1025
+ },
1026
+ },
1027
+ },
1028
+ },
944
1029
  },
945
1030
  {
946
1031
  verb: "post",
947
1032
  path: "/users/:userId/api-keys/_search",
948
1033
  controller: "security",
949
1034
  action: "searchApiKeys",
1035
+ openapi: {
1036
+ description: "Searches for a user's API keys. Supports the Elasticsearch Query DSL, or the Koncorde Filters DSL when `lang` is set to `koncorde`. If you are looking to manage your own API keys, use the `auth` controller instead.",
1037
+ parameters: [
1038
+ {
1039
+ in: "path",
1040
+ name: "userId",
1041
+ schema: { type: "string" },
1042
+ required: true,
1043
+ description: "User kuid",
1044
+ },
1045
+ {
1046
+ in: "query",
1047
+ name: "from",
1048
+ schema: { type: "integer", default: 0 },
1049
+ required: false,
1050
+ description: "Offset of the first result to return",
1051
+ },
1052
+ {
1053
+ in: "query",
1054
+ name: "size",
1055
+ schema: { type: "integer" },
1056
+ required: false,
1057
+ description: "Maximum number of API keys to return",
1058
+ },
1059
+ {
1060
+ in: "query",
1061
+ name: "lang",
1062
+ schema: {
1063
+ type: "string",
1064
+ enum: ["elasticsearch", "koncorde"],
1065
+ default: "elasticsearch",
1066
+ },
1067
+ required: false,
1068
+ description: "Query language used in the request body",
1069
+ },
1070
+ ],
1071
+ requestBody: {
1072
+ required: false,
1073
+ content: {
1074
+ "application/json": {
1075
+ schema: {
1076
+ type: "object",
1077
+ description: "Search query (Elasticsearch Query DSL or Koncorde filters). Leave empty to match all of the user's API keys.",
1078
+ },
1079
+ },
1080
+ },
1081
+ },
1082
+ responses: {
1083
+ 200: {
1084
+ description: "Matching API keys",
1085
+ content: {
1086
+ "application/json": {
1087
+ schema: {
1088
+ type: "object",
1089
+ properties: {
1090
+ hits: {
1091
+ type: "array",
1092
+ items: {
1093
+ type: "object",
1094
+ properties: {
1095
+ _id: { type: "string" },
1096
+ _source: {
1097
+ type: "object",
1098
+ properties: {
1099
+ userId: { type: "string" },
1100
+ description: { type: "string" },
1101
+ expiresAt: { type: "integer" },
1102
+ ttl: { type: "integer" },
1103
+ fingerprint: { type: "string" },
1104
+ },
1105
+ },
1106
+ },
1107
+ },
1108
+ },
1109
+ total: { type: "integer" },
1110
+ },
1111
+ },
1112
+ },
1113
+ },
1114
+ },
1115
+ },
1116
+ },
950
1117
  },
951
1118
  {
952
1119
  verb: "post",
@@ -1295,6 +1462,109 @@ const routes = [
1295
1462
  path: "/users/:userId/api-keys/:_id",
1296
1463
  controller: "security",
1297
1464
  action: "deleteApiKey",
1465
+ openapi: {
1466
+ description: "Deletes a user API key, identified by its `_id`. If you are looking to manage your own API keys, use the `auth` controller instead.",
1467
+ parameters: [
1468
+ {
1469
+ in: "path",
1470
+ name: "userId",
1471
+ schema: { type: "string" },
1472
+ required: true,
1473
+ description: "User kuid",
1474
+ },
1475
+ {
1476
+ in: "path",
1477
+ name: "_id",
1478
+ schema: { type: "string" },
1479
+ required: true,
1480
+ description: "API key unique ID",
1481
+ },
1482
+ {
1483
+ in: "query",
1484
+ name: "refresh",
1485
+ schema: {
1486
+ type: "string",
1487
+ enum: ["wait_for", "false"],
1488
+ default: "wait_for",
1489
+ },
1490
+ required: false,
1491
+ description: "If set to `wait_for`, waits for the deletion to be indexed before responding",
1492
+ },
1493
+ ],
1494
+ responses: {
1495
+ 200: {
1496
+ description: "The deleted API key ID",
1497
+ content: {
1498
+ "application/json": {
1499
+ schema: {
1500
+ type: "object",
1501
+ properties: {
1502
+ _id: { type: "string" },
1503
+ },
1504
+ },
1505
+ },
1506
+ },
1507
+ },
1508
+ },
1509
+ },
1510
+ },
1511
+ {
1512
+ verb: "delete",
1513
+ path: "/users/:userId/api-keys",
1514
+ controller: "security",
1515
+ action: "deleteApiKey",
1516
+ openapi: {
1517
+ description: "Deletes a user API key, identified by its clear-text `key` or its `fingerprint` instead of its `_id`. Exactly one of `key` or `fingerprint` must be provided. If you are looking to manage your own API keys, use the `auth` controller instead.",
1518
+ parameters: [
1519
+ {
1520
+ in: "path",
1521
+ name: "userId",
1522
+ schema: { type: "string" },
1523
+ required: true,
1524
+ description: "User kuid",
1525
+ },
1526
+ {
1527
+ in: "query",
1528
+ name: "key",
1529
+ schema: { type: "string" },
1530
+ required: false,
1531
+ description: "Clear-text API key to delete",
1532
+ },
1533
+ {
1534
+ in: "query",
1535
+ name: "fingerprint",
1536
+ schema: { type: "string" },
1537
+ required: false,
1538
+ description: "SHA256 fingerprint of the API key to delete",
1539
+ },
1540
+ {
1541
+ in: "query",
1542
+ name: "refresh",
1543
+ schema: {
1544
+ type: "string",
1545
+ enum: ["wait_for", "false"],
1546
+ default: "wait_for",
1547
+ },
1548
+ required: false,
1549
+ description: "If set to `wait_for`, waits for the deletion to be indexed before responding",
1550
+ },
1551
+ ],
1552
+ responses: {
1553
+ 200: {
1554
+ description: "The deleted API key ID",
1555
+ content: {
1556
+ "application/json": {
1557
+ schema: {
1558
+ type: "object",
1559
+ properties: {
1560
+ _id: { type: "string" },
1561
+ },
1562
+ },
1563
+ },
1564
+ },
1565
+ },
1566
+ },
1567
+ },
1298
1568
  },
1299
1569
  {
1300
1570
  verb: "delete",
@@ -1,4 +1,4 @@
1
- import { OpenApiDefinition } from "../../types/OpenApiDefinition";
1
+ import type { OpenApiDefinition } from "../../types/OpenApiDefinition";
2
2
  export declare class OpenApiManager {
3
3
  kuzzleDefinition: OpenApiDefinition;
4
4
  applicationDefinition: OpenApiDefinition;
@@ -1,4 +1,4 @@
1
- import { JSONObject } from "kuzzle-sdk";
1
+ import type { JSONObject } from "../../types/JSONObject";
2
2
  /**
3
3
  * Generates JSON OpenApi object
4
4
  *
@@ -1,8 +1,9 @@
1
- export = RateLimiter;
1
+ import type { KuzzleRequest } from "./request";
2
2
  declare class RateLimiter {
3
- loginsPerSecond: number;
4
- frame: {};
5
- frameResetTimer: NodeJS.Timeout;
3
+ private readonly loginsPerSecond;
4
+ private frame;
5
+ private frameResetTimer;
6
+ constructor();
6
7
  init(): void;
7
8
  /**
8
9
  * Return a boolean indicating whether a request execution is allowed as per
@@ -14,5 +15,14 @@ declare class RateLimiter {
14
15
  * @param {Request} request
15
16
  * @returns {Boolean}
16
17
  */
17
- isAllowed(request: Request): boolean;
18
+ isAllowed(request: KuzzleRequest): Promise<boolean>;
19
+ /**
20
+ * The rate limit a user's profiles impose, as a single number: 0 is
21
+ * unlimited, and one unlimited profile makes the whole set unlimited.
22
+ *
23
+ * Extracted from isAllowed(), whose cognitive complexity this loop pushed
24
+ * past the gate once the null-user branch above was added.
25
+ */
26
+ private profilesLimit;
18
27
  }
28
+ export = RateLimiter;
@@ -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,7 +19,6 @@
18
19
  * See the License for the specific language governing permissions and
19
20
  * limitations under the License.
20
21
  */
21
- "use strict";
22
22
  class RateLimiter {
23
23
  constructor() {
24
24
  this.loginsPerSecond = global.kuzzle.config.limits.loginsPerSecond;
@@ -41,34 +41,62 @@ class RateLimiter {
41
41
  async isAllowed(request) {
42
42
  const { controller, action } = request.input;
43
43
  let count = 0;
44
- let limit = -1;
44
+ // Assigned in both branches below, before the only read at the end.
45
+ let limit;
45
46
  if (controller === "auth" && action === "login") {
46
- const cid = request.context.connection.id;
47
+ // A request context can carry no connection id — internal requests do
48
+ // not have one. They have always shared a single bucket under the
49
+ // stringified `null`; keeping that key preserves the limit rather than
50
+ // quietly lifting it for whoever can reach this without a connection.
51
+ const cid = request.context.connection.id ?? "null";
47
52
  count = this.frame[cid] = (this.frame[cid] || 0) + 1;
48
53
  limit = this.loginsPerSecond;
49
54
  }
50
55
  else {
51
- const { _id, profileIds } = request.context.user;
56
+ const user = request.getUser();
57
+ // No user resolved means no profile, and a profile's rateLimit is the
58
+ // only thing this branch reads. Falling through would leave `limit` at
59
+ // -1 and deny the request, which is not what "unlimited" means.
60
+ if (user === null) {
61
+ return true;
62
+ }
63
+ // A user resolved from a request has been stored, so it has an id; the
64
+ // fallback is what makes the frame key readable to the compiler, and it
65
+ // is the same key an id-less user would have produced before.
66
+ const { profileIds } = user;
67
+ const _id = user._id ?? "null";
52
68
  // By definition, auth:logout should be unrestricted
53
69
  if (_id !== "-1" && controller === "auth" && action === "logout") {
54
70
  return true;
55
71
  }
56
- const profiles = await global.kuzzle.ask("core:security:profile:mGet", profileIds);
57
- for (let i = 0; i < profiles.length; i++) {
58
- const { rateLimit = 0 } = profiles[i];
59
- if (limit === 0 || rateLimit === 0) {
60
- limit = 0;
61
- }
62
- else {
63
- limit = Math.max(limit, rateLimit);
64
- }
65
- }
72
+ limit = await this.profilesLimit(profileIds);
66
73
  if (limit > 0) {
67
74
  count = this.frame[_id] = (this.frame[_id] || 0) + 1;
68
75
  }
69
76
  }
70
77
  return limit === 0 || count <= limit;
71
78
  }
79
+ /**
80
+ * The rate limit a user's profiles impose, as a single number: 0 is
81
+ * unlimited, and one unlimited profile makes the whole set unlimited.
82
+ *
83
+ * Extracted from isAllowed(), whose cognitive complexity this loop pushed
84
+ * past the gate once the null-user branch above was added.
85
+ */
86
+ async profilesLimit(profileIds) {
87
+ const profiles = await global.kuzzle.ask("core:security:profile:mGet", profileIds);
88
+ let limit = -1;
89
+ for (const profile of profiles) {
90
+ const { rateLimit = 0 } = profile;
91
+ if (limit === 0 || rateLimit === 0) {
92
+ limit = 0;
93
+ }
94
+ else {
95
+ limit = Math.max(limit, rateLimit);
96
+ }
97
+ }
98
+ return limit;
99
+ }
72
100
  }
73
101
  module.exports = RateLimiter;
74
102
  //# sourceMappingURL=rateLimiter.js.map
@@ -1,9 +1,19 @@
1
- import { JSONObject } from "kuzzle-sdk";
1
+ import type { JSONObject } from "../../types/JSONObject";
2
2
  import { RequestInput } from "./requestInput";
3
3
  import { RequestResponse } from "./requestResponse";
4
4
  import { RequestContext } from "./requestContext";
5
5
  import { KuzzleError } from "../../kerror/errors";
6
- import { Deprecation } from "../../types";
6
+ import type { Deprecation } from "../../types";
7
+ import type { User } from "../../model/security/user";
8
+ declare const _internalId = "internalId\u200B";
9
+ declare const _status = "status\u200B";
10
+ declare const _input = "input\u200B";
11
+ declare const _error = "error\u200B";
12
+ declare const _result = "result\u200B";
13
+ declare const _context = "context\u200B";
14
+ declare const _timestamp = "timestamp\u200B";
15
+ declare const _response = "response\u200B";
16
+ declare const _deprecations = "deprecations\u200B";
7
17
  /**
8
18
  * The `KuzzleRequest` class represents a request being processed by Kuzzle.
9
19
  *
@@ -16,6 +26,15 @@ export declare class KuzzleRequest {
16
26
  * Request external ID (specified by "requestId" or random uuid)
17
27
  */
18
28
  id: string;
29
+ [_internalId]: string;
30
+ [_status]: number;
31
+ [_input]: RequestInput;
32
+ [_context]: RequestContext;
33
+ [_error]: KuzzleError | null;
34
+ [_result]: unknown;
35
+ [_response]: RequestResponse | null;
36
+ [_deprecations]: Deprecation[] | undefined;
37
+ [_timestamp]: number;
19
38
  constructor(data: any, options?: any);
20
39
  /**
21
40
  * Request internal ID
@@ -25,6 +44,13 @@ export declare class KuzzleRequest {
25
44
  * Deprecation warnings for the API action
26
45
  */
27
46
  get deprecations(): Deprecation[] | void;
47
+ /**
48
+ * The setter `RequestResponse.deprecations` has always assigned through to
49
+ * here, and there was no setter to assign to: in a module — which is strict
50
+ * mode — writing to an accessor-only property throws a TypeError. Nothing in
51
+ * the tree exercised it, so the throw was never seen.
52
+ */
53
+ set deprecations(deprecations: Deprecation[] | undefined);
28
54
  /**
29
55
  * Request timestamp (in Epoch-micro)
30
56
  */
@@ -65,7 +91,7 @@ export declare class KuzzleRequest {
65
91
  /**
66
92
  * Sets the request result and status
67
93
  *
68
- * @deprecated Use request.response.configure instead
94
+ * @deprecated Use `request.response.configure({ result, status, headers, format })`
69
95
  *
70
96
  * @param result Request result. Will be converted to JSON unless `raw` option is set to `true`
71
97
  * @param options Additional options
@@ -87,6 +113,18 @@ export declare class KuzzleRequest {
87
113
  */
88
114
  raw?: boolean;
89
115
  }): void;
116
+ /**
117
+ * Sets the result and nothing else, after the checks every result goes
118
+ * through. What `response.configure({ result })` calls; plugins use that.
119
+ *
120
+ * @internal
121
+ */
122
+ assignResult(result: unknown): void;
123
+ /**
124
+ * @throws {InternalError} if the result is an Error
125
+ * @throws {api.assert.forbidden_stream} for an HttpStream outside HTTP
126
+ */
127
+ private assertResultAllowed;
90
128
  /**
91
129
  * Add a deprecation for a used component, this can be action/controller/parameters...
92
130
  *
@@ -108,12 +146,16 @@ export declare class KuzzleRequest {
108
146
  *
109
147
  * This can be used to match Koncorde filter rather than the Request object
110
148
  * because it has properties defined with invisible unicode characters.
149
+ *
150
+ * The `!`s are not claims: each of these may be `null`, as on the request
151
+ * itself. The copy is typed as v2.56.0 typed it, non-nullable, because
152
+ * nullable members broke code compiled against that.
111
153
  */
112
154
  pojo(): {
113
155
  context: {
114
156
  connection: import("./requestContext").Connection;
115
- token: import("../../model/security/token").Token;
116
- user: import("../../model/security/user").User;
157
+ token: import("../../..").KuzzleToken;
158
+ user: User;
117
159
  };
118
160
  deprecations: void | Deprecation[];
119
161
  error: KuzzleError;
@@ -137,10 +179,17 @@ export declare class KuzzleRequest {
137
179
  };
138
180
  /**
139
181
  * Return the requested controller
182
+ *
183
+ * `null` on a request built without one. Declared `string` all the same,
184
+ * as v2.56.0 declared it: a `string | null` return broke code compiled
185
+ * against it. `input.controller` is the nullable form.
140
186
  */
141
187
  getController(): string;
142
188
  /**
143
189
  * Returns the requested controller's action
190
+ *
191
+ * `null` and declared `string` as {@link getController} is;
192
+ * `input.action` is the nullable form.
144
193
  */
145
194
  getAction(): string;
146
195
  /**
@@ -278,13 +327,15 @@ export declare class KuzzleRequest {
278
327
  */
279
328
  getArray(name: string, def?: [] | undefined): any[];
280
329
  /**
281
- * @deprecated do not use, Use getArray instead
282
- *
283
- * Gets a parameter from a request arguments and checks that it is an array
284
- *
285
- * If the request argument is a String instead of an array, it will be JSON parsed
286
- * and returned if it is a valid JSON array, otherwise it will return the string splitted on `,`.
330
+ * Gets a parameter from a request arguments as an array, also accepting a
331
+ * **comma-separated string** — the form the API documents for `ids` on
332
+ * `document:mGet`, `document:mExists` and `security:mGetUsers`, and the only
333
+ * form it documents for `server:healthCheck`'s `services`.
287
334
  *
335
+ * An array is returned as is. A string is, over HTTP only, first parsed as a
336
+ * JSON array — the one way to pass an element that contains a comma — and
337
+ * otherwise split on `,`, on every protocol. Unlike `getArray`, a single
338
+ * query-string value (`?ids=a`) is therefore a one-element array.
288
339
  *
289
340
  * @param name parameter name
290
341
  * @param def default value to return if the parameter is not set
@@ -293,6 +344,12 @@ export declare class KuzzleRequest {
293
344
  * value provided
294
345
  * @throws {api.assert.invalid_type} If the fetched parameter is not an array or a string
295
346
  */
347
+ getArrayOrCsv(name: string, def?: [] | undefined): unknown[];
348
+ /**
349
+ * @deprecated Use {@link getArrayOrCsv}, which it is an alias of: same
350
+ * behaviour, named after what it does. Kept because `KuzzleRequest` is part
351
+ * of the public plugin API.
352
+ */
296
353
  getArrayLegacy(name: string, def?: [] | undefined): any[];
297
354
  /**
298
355
  * Gets a parameter from a request arguments and checks that it is an object
@@ -331,12 +388,20 @@ export declare class KuzzleRequest {
331
388
  getTimestamp(name: string): number;
332
389
  /**
333
390
  * Returns the index specified in the request
391
+ *
392
+ * With `{ required: false }` and no index, this returns `null`. It is
393
+ * declared `string` all the same: that is what v2.56.0 declared, and a
394
+ * `string | null` overload broke code compiled against it — so Kuzzle's own
395
+ * callers of the optional form annotate the result `string | null`.
334
396
  */
335
397
  getIndex({ required }?: {
336
398
  required?: boolean;
337
399
  }): string;
338
400
  /**
339
401
  * Returns the collection specified in the request
402
+ *
403
+ * `null` under the same conditions as {@link getIndex}, and declared
404
+ * `string` for the same reason.
340
405
  */
341
406
  getCollection({ required }?: {
342
407
  required?: boolean;
@@ -364,6 +429,8 @@ export declare class KuzzleRequest {
364
429
  * - `ifMissing`: method behavior if the ID is missing (default: 'error')
365
430
  * - `generator`: function used to generate an ID (default: 'uuid.v4')
366
431
  *
432
+ * With `ifMissing: 'ignore'` and no ID, this returns `null`. It is declared
433
+ * `string` all the same, for the reason given on {@link getIndex}.
367
434
  */
368
435
  getId(options?: {
369
436
  ifMissing?: "error" | "generate" | "ignore";
@@ -375,8 +442,11 @@ export declare class KuzzleRequest {
375
442
  getKuid(): string | null;
376
443
  /**
377
444
  * Returns the current user
445
+ *
446
+ * `null` when the request carries none. Declared `User`, as v2.56.0
447
+ * declared it; `context.user` is the nullable form.
378
448
  */
379
- getUser(): import("../../model/security/user").User;
449
+ getUser(): User;
380
450
  /**
381
451
  * Returns the search body query according to the http method
382
452
  */
@@ -467,3 +537,4 @@ export declare class KuzzleRequest {
467
537
  }
468
538
  export declare class Request extends KuzzleRequest {
469
539
  }
540
+ export {};