kuzzle 2.56.0 → 2.57.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/dist/bin/copy-binaries.js +71 -4
  2. package/dist/bin/start-kuzzle-server +191 -97
  3. package/dist/index.d.ts +31 -1
  4. package/dist/index.js +45 -2
  5. package/dist/lib/api/controllers/adminController.d.ts +4 -3
  6. package/dist/lib/api/controllers/adminController.js +1 -2
  7. package/dist/lib/api/controllers/authController.d.ts +37 -16
  8. package/dist/lib/api/controllers/authController.js +88 -39
  9. package/dist/lib/api/controllers/baseController.d.ts +10 -5
  10. package/dist/lib/api/controllers/baseController.js +36 -15
  11. package/dist/lib/api/controllers/bulkController.d.ts +11 -7
  12. package/dist/lib/api/controllers/bulkController.js +28 -5
  13. package/dist/lib/api/controllers/clusterController.d.ts +2 -2
  14. package/dist/lib/api/controllers/clusterController.js +3 -3
  15. package/dist/lib/api/controllers/collectionController.d.ts +57 -21
  16. package/dist/lib/api/controllers/collectionController.js +40 -11
  17. package/dist/lib/api/controllers/debugController.d.ts +1 -1
  18. package/dist/lib/api/controllers/documentController.d.ts +137 -28
  19. package/dist/lib/api/controllers/documentController.js +156 -125
  20. package/dist/lib/api/controllers/index.d.ts +27 -12
  21. package/dist/lib/api/controllers/index.js +28 -13
  22. package/dist/lib/api/controllers/indexController.d.ts +17 -10
  23. package/dist/lib/api/controllers/indexController.js +13 -11
  24. package/dist/lib/api/controllers/memoryStorageController.d.ts +2 -5
  25. package/dist/lib/api/controllers/memoryStorageController.js +199 -127
  26. package/dist/lib/api/controllers/realtimeController.d.ts +19 -9
  27. package/dist/lib/api/controllers/realtimeController.js +8 -4
  28. package/dist/lib/api/controllers/securityController.d.ts +42 -29
  29. package/dist/lib/api/controllers/securityController.js +35 -19
  30. package/dist/lib/api/controllers/serverController.d.ts +114 -19
  31. package/dist/lib/api/controllers/serverController.js +69 -29
  32. package/dist/lib/api/documentExtractor.d.ts +9 -7
  33. package/dist/lib/api/documentExtractor.js +105 -41
  34. package/dist/lib/api/funnel.d.ts +131 -29
  35. package/dist/lib/api/funnel.js +436 -225
  36. package/dist/lib/api/httpRoutes.d.ts +16 -11
  37. package/dist/lib/api/httpRoutes.js +272 -2
  38. package/dist/lib/api/openapi/OpenApiManager.d.ts +1 -1
  39. package/dist/lib/api/openapi/openApiGenerator.d.ts +1 -1
  40. package/dist/lib/api/rateLimiter.d.ts +15 -5
  41. package/dist/lib/api/rateLimiter.js +42 -14
  42. package/dist/lib/api/request/kuzzleRequest.d.ts +83 -12
  43. package/dist/lib/api/request/kuzzleRequest.js +88 -23
  44. package/dist/lib/api/request/requestContext.d.ts +20 -5
  45. package/dist/lib/api/request/requestContext.js +14 -4
  46. package/dist/lib/api/request/requestInput.d.ts +37 -6
  47. package/dist/lib/api/request/requestInput.js +22 -9
  48. package/dist/lib/api/request/requestResponse.d.ts +45 -9
  49. package/dist/lib/api/request/requestResponse.js +34 -3
  50. package/dist/lib/cluster/command.d.ts +131 -37
  51. package/dist/lib/cluster/command.js +243 -71
  52. package/dist/lib/cluster/idCardHandler.d.ts +18 -5
  53. package/dist/lib/cluster/idCardHandler.js +52 -19
  54. package/dist/lib/cluster/index.d.ts +8 -2
  55. package/dist/lib/cluster/index.js +6 -2
  56. package/dist/lib/cluster/node.d.ts +127 -49
  57. package/dist/lib/cluster/node.js +412 -179
  58. package/dist/lib/cluster/protobuf/command.proto +18 -0
  59. package/dist/lib/cluster/protobuf/commandMessages.d.ts +104 -0
  60. package/dist/lib/cluster/protobuf/commandMessages.js +30 -0
  61. package/dist/lib/cluster/protobuf/syncMessages.d.ts +184 -0
  62. package/dist/lib/cluster/protobuf/syncMessages.js +23 -0
  63. package/dist/lib/cluster/publisher.d.ts +118 -78
  64. package/dist/lib/cluster/publisher.js +174 -72
  65. package/dist/lib/cluster/state.d.ts +15 -9
  66. package/dist/lib/cluster/state.js +12 -8
  67. package/dist/lib/cluster/subscriber.d.ts +185 -131
  68. package/dist/lib/cluster/subscriber.js +357 -95
  69. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +39 -8
  70. package/dist/lib/cluster/workers/IDCardRenewer.js +88 -23
  71. package/dist/lib/config/default.config.d.ts +2 -2
  72. package/dist/lib/config/default.config.js +10 -3
  73. package/dist/lib/config/documentEventAliases.d.ts +1 -1
  74. package/dist/lib/config/index.d.ts +2 -5
  75. package/dist/lib/config/index.js +30 -17
  76. package/dist/lib/core/auth/formatProcessing.d.ts +3 -3
  77. package/dist/lib/core/auth/passportResponse.d.ts +1 -1
  78. package/dist/lib/core/auth/passportWrapper.d.ts +1 -1
  79. package/dist/lib/core/auth/passportWrapper.js +14 -13
  80. package/dist/lib/core/auth/tokenManager.d.ts +24 -3
  81. package/dist/lib/core/auth/tokenManager.js +47 -19
  82. package/dist/lib/core/backend/applicationManager.d.ts +2 -2
  83. package/dist/lib/core/backend/backend.d.ts +16 -5
  84. package/dist/lib/core/backend/backend.js +14 -6
  85. package/dist/lib/core/backend/backendCluster.d.ts +1 -1
  86. package/dist/lib/core/backend/backendConfig.d.ts +17 -5
  87. package/dist/lib/core/backend/backendConfig.js +1 -0
  88. package/dist/lib/core/backend/backendController.d.ts +1 -1
  89. package/dist/lib/core/backend/backendController.js +8 -1
  90. package/dist/lib/core/backend/backendErrors.d.ts +15 -8
  91. package/dist/lib/core/backend/backendErrors.js +5 -0
  92. package/dist/lib/core/backend/backendHook.d.ts +1 -1
  93. package/dist/lib/core/backend/backendImport.d.ts +1 -1
  94. package/dist/lib/core/backend/backendOpenApi.d.ts +3 -2
  95. package/dist/lib/core/backend/backendPipe.d.ts +1 -1
  96. package/dist/lib/core/backend/backendPipe.js +9 -1
  97. package/dist/lib/core/backend/backendPlugin.d.ts +2 -2
  98. package/dist/lib/core/backend/backendSubscription.d.ts +2 -2
  99. package/dist/lib/core/backend/backendVault.d.ts +1 -1
  100. package/dist/lib/core/backend/backendVault.js +8 -1
  101. package/dist/lib/core/cache/cacheEngine.d.ts +7 -4
  102. package/dist/lib/core/cache/cacheEngine.js +25 -8
  103. package/dist/lib/core/debug/kuzzleDebugger.d.ts +2 -1
  104. package/dist/lib/core/debug/kuzzleDebugger.js +31 -17
  105. package/dist/lib/core/network/accessLogger.d.ts +33 -18
  106. package/dist/lib/core/network/accessLogger.js +135 -73
  107. package/dist/lib/core/network/clientConnection.d.ts +13 -11
  108. package/dist/lib/core/network/clientConnection.js +33 -9
  109. package/dist/lib/core/network/context.d.ts +17 -22
  110. package/dist/lib/core/network/context.js +43 -26
  111. package/dist/lib/core/network/entryPoint.d.ts +38 -16
  112. package/dist/lib/core/network/entryPoint.js +119 -48
  113. package/dist/lib/core/network/httpRouter/index.d.ts +20 -50
  114. package/dist/lib/core/network/httpRouter/index.js +61 -75
  115. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +17 -32
  116. package/dist/lib/core/network/httpRouter/routeHandler.js +26 -36
  117. package/dist/lib/core/network/httpRouter/routePart.d.ts +9 -18
  118. package/dist/lib/core/network/httpRouter/routePart.js +61 -43
  119. package/dist/lib/core/network/httpRouter/routeTypes.d.ts +3 -0
  120. package/dist/lib/core/network/httpRouter/routeTypes.js +23 -0
  121. package/dist/lib/core/network/networkEntryPoint.d.ts +20 -0
  122. package/dist/lib/core/network/networkEntryPoint.js +23 -0
  123. package/dist/lib/core/network/protocolManifest.d.ts +5 -4
  124. package/dist/lib/core/network/protocolManifest.js +6 -3
  125. package/dist/lib/core/network/protocols/httpMessage.d.ts +25 -18
  126. package/dist/lib/core/network/protocols/httpMessage.js +14 -11
  127. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +84 -93
  128. package/dist/lib/core/network/protocols/httpwsProtocol.js +284 -129
  129. package/dist/lib/core/network/protocols/internalProtocol.d.ts +26 -15
  130. package/dist/lib/core/network/protocols/internalProtocol.js +17 -16
  131. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +56 -32
  132. package/dist/lib/core/network/protocols/mqttProtocol.js +91 -44
  133. package/dist/lib/core/network/protocols/protocol.d.ts +85 -21
  134. package/dist/lib/core/network/protocols/protocol.js +83 -27
  135. package/dist/lib/core/network/router.d.ts +13 -22
  136. package/dist/lib/core/network/router.js +59 -46
  137. package/dist/lib/core/plugin/plugin.d.ts +57 -51
  138. package/dist/lib/core/plugin/plugin.js +218 -103
  139. package/dist/lib/core/plugin/pluginContext.d.ts +54 -11
  140. package/dist/lib/core/plugin/pluginContext.js +99 -58
  141. package/dist/lib/core/plugin/pluginManifest.d.ts +6 -2
  142. package/dist/lib/core/plugin/pluginManifest.js +18 -11
  143. package/dist/lib/core/plugin/pluginRepository.d.ts +35 -44
  144. package/dist/lib/core/plugin/pluginRepository.js +35 -50
  145. package/dist/lib/core/plugin/pluginsManager.d.ts +128 -46
  146. package/dist/lib/core/plugin/pluginsManager.js +468 -231
  147. package/dist/lib/core/plugin/privilegedContext.d.ts +4 -9
  148. package/dist/lib/core/plugin/privilegedContext.js +5 -10
  149. package/dist/lib/core/realtime/actionEnum.d.ts +12 -21
  150. package/dist/lib/core/realtime/actionEnum.js +6 -7
  151. package/dist/lib/core/realtime/channel.d.ts +11 -5
  152. package/dist/lib/core/realtime/channel.js +17 -2
  153. package/dist/lib/core/realtime/connectionRooms.d.ts +2 -2
  154. package/dist/lib/core/realtime/hotelClerk.d.ts +12 -6
  155. package/dist/lib/core/realtime/hotelClerk.js +29 -11
  156. package/dist/lib/core/realtime/index.d.ts +8 -3
  157. package/dist/lib/core/realtime/index.js +12 -5
  158. package/dist/lib/core/realtime/notification/document.d.ts +54 -25
  159. package/dist/lib/core/realtime/notification/document.js +10 -13
  160. package/dist/lib/core/realtime/notification/index.d.ts +9 -3
  161. package/dist/lib/core/realtime/notification/index.js +10 -4
  162. package/dist/lib/core/realtime/notification/server.d.ts +7 -10
  163. package/dist/lib/core/realtime/notification/server.js +4 -7
  164. package/dist/lib/core/realtime/notification/user.d.ts +45 -21
  165. package/dist/lib/core/realtime/notification/user.js +8 -9
  166. package/dist/lib/core/realtime/notifier.d.ts +52 -40
  167. package/dist/lib/core/realtime/notifier.js +60 -25
  168. package/dist/lib/core/realtime/room.d.ts +1 -1
  169. package/dist/lib/core/realtime/subscription.d.ts +11 -6
  170. package/dist/lib/core/realtime/subscription.js +5 -1
  171. package/dist/lib/core/security/index.d.ts +14 -6
  172. package/dist/lib/core/security/index.js +27 -13
  173. package/dist/lib/core/security/profileRepository.d.ts +24 -19
  174. package/dist/lib/core/security/profileRepository.js +23 -10
  175. package/dist/lib/core/security/roleRepository.d.ts +60 -23
  176. package/dist/lib/core/security/roleRepository.js +122 -53
  177. package/dist/lib/core/security/securityLoader.d.ts +33 -18
  178. package/dist/lib/core/security/securityLoader.js +43 -16
  179. package/dist/lib/core/security/tokenRepository.d.ts +21 -7
  180. package/dist/lib/core/security/tokenRepository.js +50 -23
  181. package/dist/lib/core/security/userRepository.d.ts +44 -21
  182. package/dist/lib/core/security/userRepository.js +59 -19
  183. package/dist/lib/core/shared/KoncordeWrapper.d.ts +1 -1
  184. package/dist/lib/core/shared/ObjectRepository.d.ts +80 -18
  185. package/dist/lib/core/shared/ObjectRepository.js +57 -29
  186. package/dist/lib/core/shared/abstractManifest.d.ts +21 -8
  187. package/dist/lib/core/shared/abstractManifest.js +57 -17
  188. package/dist/lib/core/shared/sdk/embeddedSdk.d.ts +3 -1
  189. package/dist/lib/core/shared/sdk/embeddedSdk.js +8 -7
  190. package/dist/lib/core/shared/sdk/funnelProtocol.d.ts +2 -1
  191. package/dist/lib/core/shared/sdk/funnelProtocol.js +12 -3
  192. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +11 -5
  193. package/dist/lib/core/shared/sdk/impersonatedSdk.js +22 -9
  194. package/dist/lib/core/shared/store.d.ts +45 -29
  195. package/dist/lib/core/shared/store.js +48 -27
  196. package/dist/lib/core/statistics/statistics.d.ts +1 -1
  197. package/dist/lib/core/storage/clientAdapter.d.ts +39 -21
  198. package/dist/lib/core/storage/clientAdapter.js +88 -48
  199. package/dist/lib/core/storage/indexCache.d.ts +8 -0
  200. package/dist/lib/core/storage/indexCache.js +16 -7
  201. package/dist/lib/core/storage/storageEngine.d.ts +7 -6
  202. package/dist/lib/core/storage/storageEngine.js +11 -8
  203. package/dist/lib/core/validation/baseType.d.ts +22 -22
  204. package/dist/lib/core/validation/baseType.js +11 -26
  205. package/dist/lib/core/validation/specification.d.ts +148 -0
  206. package/dist/lib/core/validation/specification.js +34 -0
  207. package/dist/lib/core/validation/typeOptions.d.ts +62 -0
  208. package/dist/lib/core/validation/typeOptions.js +23 -0
  209. package/dist/lib/core/validation/types/anything.d.ts +3 -6
  210. package/dist/lib/core/validation/types/anything.js +7 -7
  211. package/dist/lib/core/validation/types/boolean.d.ts +5 -12
  212. package/dist/lib/core/validation/types/boolean.js +7 -12
  213. package/dist/lib/core/validation/types/date.d.ts +19 -11
  214. package/dist/lib/core/validation/types/date.js +212 -161
  215. package/dist/lib/core/validation/types/email.d.ts +7 -11
  216. package/dist/lib/core/validation/types/email.js +13 -17
  217. package/dist/lib/core/validation/types/enum.d.ts +7 -11
  218. package/dist/lib/core/validation/types/enum.js +39 -20
  219. package/dist/lib/core/validation/types/geoPoint.d.ts +5 -13
  220. package/dist/lib/core/validation/types/geoPoint.js +10 -15
  221. package/dist/lib/core/validation/types/geoShape.d.ts +22 -21
  222. package/dist/lib/core/validation/types/geoShape.js +113 -129
  223. package/dist/lib/core/validation/types/geoShapeUtils.d.ts +15 -0
  224. package/dist/lib/core/validation/types/geoShapeUtils.js +75 -0
  225. package/dist/lib/core/validation/types/integer.d.ts +7 -5
  226. package/dist/lib/core/validation/types/integer.js +7 -13
  227. package/dist/lib/core/validation/types/ipAddress.d.ts +7 -11
  228. package/dist/lib/core/validation/types/ipAddress.js +13 -17
  229. package/dist/lib/core/validation/types/numeric.d.ts +7 -11
  230. package/dist/lib/core/validation/types/numeric.js +22 -29
  231. package/dist/lib/core/validation/types/object.d.ts +8 -15
  232. package/dist/lib/core/validation/types/object.js +12 -21
  233. package/dist/lib/core/validation/types/string.d.ts +7 -11
  234. package/dist/lib/core/validation/types/string.js +22 -29
  235. package/dist/lib/core/validation/types/url.d.ts +7 -11
  236. package/dist/lib/core/validation/types/url.js +14 -18
  237. package/dist/lib/core/validation/validation.d.ts +119 -80
  238. package/dist/lib/core/validation/validation.js +470 -412
  239. package/dist/lib/core/validation/validationUtils.d.ts +31 -0
  240. package/dist/lib/core/validation/validationUtils.js +190 -0
  241. package/dist/lib/kerror/codes/4-plugin.json +0 -12
  242. package/dist/lib/kerror/codes/index.d.ts +12 -2
  243. package/dist/lib/kerror/codes/index.js +5 -4
  244. package/dist/lib/kerror/errors/badRequestError.d.ts +1 -1
  245. package/dist/lib/kerror/errors/badRequestError.js +1 -1
  246. package/dist/lib/kerror/errors/externalServiceError.d.ts +1 -1
  247. package/dist/lib/kerror/errors/externalServiceError.js +1 -1
  248. package/dist/lib/kerror/errors/forbiddenError.d.ts +1 -1
  249. package/dist/lib/kerror/errors/forbiddenError.js +1 -1
  250. package/dist/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
  251. package/dist/lib/kerror/errors/gatewayTimeoutError.js +1 -1
  252. package/dist/lib/kerror/errors/internalError.d.ts +1 -1
  253. package/dist/lib/kerror/errors/internalError.js +1 -1
  254. package/dist/lib/kerror/errors/kuzzleError.d.ts +32 -3
  255. package/dist/lib/kerror/errors/kuzzleError.js +21 -7
  256. package/dist/lib/kerror/errors/multipleErrorsError.d.ts +2 -2
  257. package/dist/lib/kerror/errors/multipleErrorsError.js +2 -2
  258. package/dist/lib/kerror/errors/notFoundError.d.ts +1 -1
  259. package/dist/lib/kerror/errors/notFoundError.js +1 -1
  260. package/dist/lib/kerror/errors/partialError.d.ts +8 -2
  261. package/dist/lib/kerror/errors/partialError.js +22 -9
  262. package/dist/lib/kerror/errors/pluginImplementationError.d.ts +9 -1
  263. package/dist/lib/kerror/errors/pluginImplementationError.js +9 -3
  264. package/dist/lib/kerror/errors/preconditionError.d.ts +1 -1
  265. package/dist/lib/kerror/errors/preconditionError.js +1 -1
  266. package/dist/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
  267. package/dist/lib/kerror/errors/serviceUnavailableError.js +1 -1
  268. package/dist/lib/kerror/errors/sizeLimitError.d.ts +1 -1
  269. package/dist/lib/kerror/errors/sizeLimitError.js +1 -1
  270. package/dist/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
  271. package/dist/lib/kerror/errors/tooManyRequestsError.js +1 -1
  272. package/dist/lib/kerror/errors/unauthorizedError.d.ts +1 -1
  273. package/dist/lib/kerror/errors/unauthorizedError.js +1 -1
  274. package/dist/lib/kerror/index.d.ts +19 -13
  275. package/dist/lib/kerror/index.js +60 -19
  276. package/dist/lib/kuzzle/Logger.d.ts +2 -2
  277. package/dist/lib/kuzzle/dumpGenerator.d.ts +12 -8
  278. package/dist/lib/kuzzle/dumpGenerator.js +130 -62
  279. package/dist/lib/kuzzle/event/KuzzleEventEmitter.d.ts +18 -9
  280. package/dist/lib/kuzzle/event/KuzzleEventEmitter.js +45 -18
  281. package/dist/lib/kuzzle/event/pipeRunner.d.ts +37 -16
  282. package/dist/lib/kuzzle/event/pipeRunner.js +73 -26
  283. package/dist/lib/kuzzle/event/waterfall.d.ts +11 -1
  284. package/dist/lib/kuzzle/event/waterfall.js +38 -13
  285. package/dist/lib/kuzzle/internalIndexHandler.d.ts +11 -174
  286. package/dist/lib/kuzzle/internalIndexHandler.js +58 -29
  287. package/dist/lib/kuzzle/kuzzle.d.ts +25 -10
  288. package/dist/lib/kuzzle/kuzzle.js +74 -17
  289. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +16 -12
  290. package/dist/lib/kuzzle/kuzzleStateEnum.js +5 -7
  291. package/dist/lib/kuzzle/vault.d.ts +5 -1
  292. package/dist/lib/kuzzle/vault.js +29 -17
  293. package/dist/lib/model/security/profile.d.ts +34 -5
  294. package/dist/lib/model/security/profile.js +6 -5
  295. package/dist/lib/model/security/rights.d.ts +12 -4
  296. package/dist/lib/model/security/rights.js +7 -6
  297. package/dist/lib/model/security/role.d.ts +8 -4
  298. package/dist/lib/model/security/role.js +12 -6
  299. package/dist/lib/model/security/token.d.ts +8 -0
  300. package/dist/lib/model/security/user.d.ts +8 -2
  301. package/dist/lib/model/security/user.js +7 -4
  302. package/dist/lib/model/storage/apiKey.d.ts +55 -26
  303. package/dist/lib/model/storage/apiKey.js +97 -24
  304. package/dist/lib/model/storage/baseModel.d.ts +77 -66
  305. package/dist/lib/model/storage/baseModel.js +21 -34
  306. package/dist/lib/service/cache/redis.d.ts +53 -36
  307. package/dist/lib/service/cache/redis.js +148 -71
  308. package/dist/lib/service/service.d.ts +14 -19
  309. package/dist/lib/service/service.js +41 -22
  310. package/dist/lib/service/storage/7/elasticsearch.d.ts +136 -93
  311. package/dist/lib/service/storage/7/elasticsearch.js +218 -165
  312. package/dist/lib/service/storage/7/esWrapper.d.ts +30 -13
  313. package/dist/lib/service/storage/7/esWrapper.js +58 -37
  314. package/dist/lib/service/storage/8/elasticsearch.d.ts +153 -119
  315. package/dist/lib/service/storage/8/elasticsearch.js +286 -213
  316. package/dist/lib/service/storage/8/esWrapper.d.ts +30 -13
  317. package/dist/lib/service/storage/8/esWrapper.js +59 -38
  318. package/dist/lib/service/storage/commons/queryTranslator.d.ts +3 -3
  319. package/dist/lib/service/storage/commons/queryTranslator.js +71 -35
  320. package/dist/lib/types/ApiRoute.d.ts +12 -0
  321. package/dist/lib/types/ApiRoute.js +23 -0
  322. package/dist/lib/types/ClientConnection.d.ts +1 -1
  323. package/dist/lib/types/EventHandler.d.ts +10 -0
  324. package/dist/lib/types/Global.d.ts +8 -3
  325. package/dist/lib/types/HttpMessage.d.ts +2 -2
  326. package/dist/lib/types/HttpStream.d.ts +1 -1
  327. package/dist/lib/types/HttpStream.js +3 -1
  328. package/dist/lib/types/JSONObject.d.ts +9 -0
  329. package/dist/lib/types/JSONObject.js +23 -0
  330. package/dist/lib/types/Kuzzle.d.ts +5 -3
  331. package/dist/lib/types/KuzzleDocument.d.ts +1 -1
  332. package/dist/lib/types/KuzzleWebSocket.d.ts +24 -0
  333. package/dist/lib/types/KuzzleWebSocket.js +23 -0
  334. package/dist/lib/types/OpenApiDefinition.d.ts +1 -1
  335. package/dist/lib/types/Plugin.d.ts +33 -8
  336. package/dist/lib/types/PluginInstance.d.ts +67 -0
  337. package/dist/lib/types/PluginInstance.js +23 -0
  338. package/dist/lib/types/Policy.d.ts +1 -1
  339. package/dist/lib/types/Target.d.ts +8 -0
  340. package/dist/lib/types/Token.d.ts +14 -2
  341. package/dist/lib/types/config/HttpConfiguration.d.ts +5 -0
  342. package/dist/lib/types/config/KuzzleConfiguration.d.ts +102 -1
  343. package/dist/lib/types/config/PluginsConfiguration.d.ts +3 -2
  344. package/dist/lib/types/config/SecurityConfiguration.d.ts +6 -2
  345. package/dist/lib/types/config/ServerConfiguration.d.ts +2 -2
  346. package/dist/lib/types/config/ServicesConfiguration.d.ts +1 -1
  347. package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.d.ts +131 -0
  348. package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.js +3 -0
  349. package/dist/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +2 -106
  350. package/dist/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +2 -26
  351. package/dist/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +3 -0
  352. package/dist/lib/types/controllers/Controller.d.ts +12 -3
  353. package/dist/lib/types/controllers/ControllerDefinition.d.ts +2 -2
  354. package/dist/lib/types/controllers/{adminControlller.type.js → adminController.type.js} +1 -1
  355. package/dist/lib/types/controllers/authController.type.d.ts +2 -2
  356. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -1
  357. package/dist/lib/types/errors/ErrorDomains.d.ts +1 -1
  358. package/dist/lib/types/events/EventGenericDocument.d.ts +10 -9
  359. package/dist/lib/types/events/EventProtocol.d.ts +4 -4
  360. package/dist/lib/types/index.d.ts +7 -0
  361. package/dist/lib/types/index.js +7 -0
  362. package/dist/lib/types/shared/StoreCollectionsDefinition.d.ts +1 -1
  363. package/dist/lib/types/storage/7/Elasticsearch.d.ts +62 -13
  364. package/dist/lib/types/storage/8/Elasticsearch.d.ts +62 -13
  365. package/dist/lib/util/Inflector.d.ts +4 -1
  366. package/dist/lib/util/Inflector.js +0 -3
  367. package/dist/lib/util/assertType.d.ts +24 -27
  368. package/dist/lib/util/assertType.js +28 -39
  369. package/dist/lib/util/async.js +19 -6
  370. package/dist/lib/util/asyncStore.js +1 -1
  371. package/dist/lib/util/bufferedPassThrough.d.ts +9 -0
  372. package/dist/lib/util/bufferedPassThrough.js +27 -13
  373. package/dist/lib/util/bytes.d.ts +1 -1
  374. package/dist/lib/util/bytes.js +6 -2
  375. package/dist/lib/util/debug.d.ts +3 -1
  376. package/dist/lib/util/debug.js +42 -10
  377. package/dist/lib/util/deprecate.d.ts +9 -1
  378. package/dist/lib/util/deprecate.js +10 -6
  379. package/dist/lib/util/didYouMean.d.ts +2 -1
  380. package/dist/lib/util/didYouMean.js +8 -4
  381. package/dist/lib/util/distributedLock.d.ts +56 -0
  382. package/dist/lib/util/distributedLock.js +166 -0
  383. package/dist/lib/util/dump-collection.d.ts +1 -1
  384. package/dist/lib/util/dump-collection.js +4 -5
  385. package/dist/lib/util/extractFields.d.ts +15 -11
  386. package/dist/lib/util/extractFields.js +8 -9
  387. package/dist/lib/util/koncordeCompat.d.ts +2 -2
  388. package/dist/lib/util/koncordeCompat.js +33 -0
  389. package/dist/lib/util/memoize.d.ts +7 -6
  390. package/dist/lib/util/memoize.js +3 -3
  391. package/dist/lib/util/mutex.d.ts +22 -2
  392. package/dist/lib/util/mutex.js +39 -1
  393. package/dist/lib/util/name-generator.js +14 -2
  394. package/dist/lib/util/promback.d.ts +20 -11
  395. package/dist/lib/util/promback.js +14 -7
  396. package/dist/lib/util/requestAssertions.d.ts +30 -10
  397. package/dist/lib/util/requestAssertions.js +125 -121
  398. package/dist/lib/util/safeObject.d.ts +3 -3
  399. package/dist/lib/util/safeObject.js +7 -3
  400. package/dist/lib/util/stackTrace.d.ts +13 -5
  401. package/dist/lib/util/stackTrace.js +17 -12
  402. package/dist/lib/util/thrown.d.ts +13 -0
  403. package/dist/lib/util/thrown.js +46 -0
  404. package/dist/package.json +26 -19
  405. package/package.json +26 -19
  406. package/dist/lib/util/wildcard.d.ts +0 -1
  407. package/dist/lib/util/wildcard.js +0 -46
  408. /package/dist/lib/types/controllers/{adminControlller.type.d.ts → adminController.type.d.ts} +0 -0
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /*
2
3
  * Kuzzle, a backend software, self-hostable and ready to use
3
4
  * to power modern apps
@@ -18,110 +19,98 @@
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 { BadRequestError } = require("../kerror/errors");
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.assertInteger = exports.assertString = exports.assertArray = exports.assertArrayOrObject = exports.assertObject = void 0;
24
+ const errors_1 = require("../kerror/errors");
23
25
  /**
24
- * Throws if the provided data is not an object.
25
- * Returns the unmodified data if validated
26
- *
27
- * @throws
28
- * @param {string} attr - tested attribute name
29
- * @param {*} data
30
- * @return {object}
26
+ * The first overload is what the callers in `lib/api/request` need: they hand
27
+ * it a value they already have a type for and want it back, not widened to a
28
+ * bare record. The second is the original signature, kept because the function
29
+ * has to accept anything in order to reject it.
31
30
  */
32
31
  function assertObject(attr, data) {
33
32
  if (data === null || data === undefined) {
34
33
  return null;
35
34
  }
36
35
  if (typeof data !== "object" || Array.isArray(data)) {
37
- throw new BadRequestError(`Attribute ${attr} must be of type "object"`);
36
+ throw new errors_1.BadRequestError(`Attribute ${attr} must be of type "object"`);
38
37
  }
39
38
  return data;
40
39
  }
40
+ exports.assertObject = assertObject;
41
41
  /**
42
42
  * Throws if the provided data is not an object or an array.
43
43
  * Returns the unmodified data if validated
44
44
  *
45
45
  * @throws
46
- * @param {string} attr - tested attribute name
47
- * @param {*} data
48
- * @return {object|array}
46
+ * @param attr - tested attribute name
47
+ * @param data
49
48
  */
50
49
  function assertArrayOrObject(attr, data) {
51
50
  if (data === null || data === undefined) {
52
51
  return null;
53
52
  }
54
53
  if (typeof data !== "object") {
55
- throw new BadRequestError(`Attribute ${attr} must be of type "object" or "array"`);
54
+ throw new errors_1.BadRequestError(`Attribute ${attr} must be of type "object" or "array"`);
56
55
  }
57
56
  return data;
58
57
  }
58
+ exports.assertArrayOrObject = assertArrayOrObject;
59
59
  /**
60
- * Throws if the provided data is not an array containing exclusively
61
- * values of the specified "type"
62
- * Returns a clone of the provided array if valid
63
- *
64
- * @throws
65
- * @param {string} attr - tested attribute name
66
- * @param {*} data
67
- * @return {array}
60
+ * The overload above is not a claim the implementation does not make: every
61
+ * element that reaches the returned array has been checked with
62
+ * `typeof d !== type`, so a call with `"string"` really does answer `string[]`.
68
63
  */
69
64
  function assertArray(attr, data, type) {
70
65
  if (data === null || data === undefined) {
71
66
  return [];
72
67
  }
73
68
  if (!Array.isArray(data)) {
74
- throw new BadRequestError(`Attribute ${attr} must be of type "array"`);
69
+ throw new errors_1.BadRequestError(`Attribute ${attr} must be of type "array"`);
75
70
  }
76
71
  const clone = [];
77
72
  for (const d of data) {
78
73
  if (d !== undefined && d !== null) {
79
74
  if (typeof d !== type) {
80
- throw new BadRequestError(`Attribute ${attr} must contain only values of type "${type}"`);
75
+ throw new errors_1.BadRequestError(`Attribute ${attr} must contain only values of type "${type}"`);
81
76
  }
82
77
  clone.push(d);
83
78
  }
84
79
  }
85
80
  return clone;
86
81
  }
82
+ exports.assertArray = assertArray;
87
83
  /**
88
84
  * Throws if the provided data is not a string
89
85
  * Returns the unmodified data if validated
90
86
  *
91
87
  * @throws
92
- * @param {string} attr - tested attribute name
93
- * @param {*} data
94
- * @return {null|string}
88
+ * @param attr - tested attribute name
89
+ * @param data
95
90
  */
96
91
  function assertString(attr, data) {
97
92
  if (data === null || data === undefined) {
98
93
  return null;
99
94
  }
100
95
  if (typeof data !== "string") {
101
- throw new BadRequestError(`Attribute ${attr} must be of type "string"`);
96
+ throw new errors_1.BadRequestError(`Attribute ${attr} must be of type "string"`);
102
97
  }
103
98
  return data;
104
99
  }
100
+ exports.assertString = assertString;
105
101
  /**
106
102
  * Throws if the provided data is not an integer
107
103
  * Returns the unmodified data if validated
108
104
  *
109
105
  * @throws
110
- * @param {string} attr - tested attribute name
111
- * @param {*} data
112
- * @return {number}
106
+ * @param attr - tested attribute name
107
+ * @param data
113
108
  */
114
109
  function assertInteger(attr, data) {
115
110
  if (!Number.isInteger(data)) {
116
- throw new BadRequestError(`Attribute ${attr} must be an integer`);
111
+ throw new errors_1.BadRequestError(`Attribute ${attr} must be an integer`);
117
112
  }
118
113
  return data;
119
114
  }
120
- module.exports = {
121
- assertArray,
122
- assertArrayOrObject,
123
- assertInteger,
124
- assertObject,
125
- assertString,
126
- };
115
+ exports.assertInteger = assertInteger;
127
116
  //# sourceMappingURL=assertType.js.map
@@ -8,23 +8,36 @@ exports.promiseAllN = void 0;
8
8
  * https://gist.github.com/jcouyang/632709f30e12a7879a73e9e132c0d56b
9
9
  */
10
10
  function promiseAllN(collection, n = 100) {
11
+ // An empty collection resolves to an empty list. The guard clause this
12
+ // replaces read `return resolve([])`, which answers `undefined` — the
13
+ // resolver's return value — rather than the promise it had just settled.
14
+ if (collection.length === 0) {
15
+ return Promise.resolve([]);
16
+ }
11
17
  let i = 0;
12
18
  let jobsLeft = collection.length;
13
19
  const outcome = [];
14
20
  let rejected = false;
15
21
  // create a new promise and capture reference to resolve and reject to avoid nesting of code
16
- let resolve, reject;
22
+ let resolve = () => undefined;
23
+ let reject = () => undefined;
17
24
  const pendingPromise = new Promise((res, rej) => {
18
25
  resolve = res;
19
26
  reject = rej;
20
27
  });
21
- // Guard clause
22
- if (collection.length === 0) {
23
- return resolve([]);
24
- }
25
28
  // execute the j'th thunk
26
29
  function runJob(j) {
27
- collection[j]()
30
+ const job = collection[j];
31
+ // `j` is always an index into `collection` — the bootstrap below and the
32
+ // `i < collection.length` check are what keep it one.
33
+ if (job === undefined) {
34
+ return;
35
+ }
36
+ // `Reflect.apply` with the collection as the receiver: `collection[j]()`
37
+ // passed the array as `this`, and hoisting the lookup out of the call is
38
+ // how that gets dropped silently. Every caller hands arrows, so nothing
39
+ // reads it — preserved rather than re-decided.
40
+ Reflect.apply(job, collection, [])
28
41
  .then((result) => {
29
42
  if (rejected) {
30
43
  return; // no op!
@@ -62,7 +62,7 @@ class AsyncStore {
62
62
  }
63
63
  _getStore() {
64
64
  const store = this._asyncLocalStorage.getStore();
65
- (0, assert_1.default)(Boolean(store), "Associated AsyncStore is not set");
65
+ (0, assert_1.default)(store !== undefined, "Associated AsyncStore is not set");
66
66
  return store;
67
67
  }
68
68
  }
@@ -74,5 +74,14 @@ export declare class BufferedPassThrough extends stream.Duplex {
74
74
  * @param callback
75
75
  */
76
76
  _destroy(err: Error, callback: Callback): void;
77
+ /**
78
+ * Pushes whatever the buffer still holds, closes the stream and releases the
79
+ * buffer. Both `_final` and `_destroy` end up here, and `_destroy` may run
80
+ * after `_final` has already flushed — resetting the offset is what stops the
81
+ * tail being pushed twice. It used to be `this.buffer = null` that stopped
82
+ * it, which made the declared `Buffer` a lie the two call sites had to
83
+ * maintain.
84
+ */
85
+ private flushAndClose;
77
86
  }
78
87
  export {};
@@ -25,6 +25,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.BufferedPassThrough = void 0;
27
27
  const stream_1 = __importDefault(require("stream"));
28
+ const DEFAULT_BUFFER_SIZE = 8196;
28
29
  /**
29
30
  * This streams accumulate chunks data into a buffer until the amount of data is equal or exceed the buffer size.
30
31
  * Then, it emits a single chunk with the accumulated data.
@@ -33,10 +34,16 @@ const stream_1 = __importDefault(require("stream"));
33
34
  * This can helps reducing the number of syscall made by the stream consumer.
34
35
  */
35
36
  class BufferedPassThrough extends stream_1.default.Duplex {
36
- constructor(options = { highWaterMark: 8196 }) {
37
- super(options);
38
- this.bufferSize = options.highWaterMark;
39
- this.buffer = Buffer.alloc(options.highWaterMark);
37
+ constructor(options) {
38
+ // `highWaterMark` is optional on DuplexOptions, so it is resolved once and
39
+ // handed to both the stream and the internal buffer. It used to be a
40
+ // default argument, which covered the no-argument call and nothing else:
41
+ // `new BufferedPassThrough({})` reached `Buffer.alloc(undefined)`, which
42
+ // throws.
43
+ const highWaterMark = options?.highWaterMark ?? DEFAULT_BUFFER_SIZE;
44
+ super({ ...options, highWaterMark });
45
+ this.bufferSize = highWaterMark;
46
+ this.buffer = Buffer.alloc(highWaterMark);
40
47
  this.offset = 0;
41
48
  }
42
49
  /**
@@ -133,12 +140,7 @@ class BufferedPassThrough extends stream_1.default.Duplex {
133
140
  * @param callback
134
141
  */
135
142
  _final(callback) {
136
- if (this.buffer && this.offset > 0) {
137
- // Push last bit of data
138
- this.push(this.buffer.slice(0, this.offset));
139
- }
140
- this.push(null); // Close the stream
141
- this.buffer = null;
143
+ this.flushAndClose();
142
144
  callback();
143
145
  }
144
146
  /**
@@ -148,13 +150,25 @@ class BufferedPassThrough extends stream_1.default.Duplex {
148
150
  * @param callback
149
151
  */
150
152
  _destroy(err, callback) {
151
- if (this.buffer && this.offset > 0) {
153
+ this.flushAndClose();
154
+ callback(err);
155
+ }
156
+ /**
157
+ * Pushes whatever the buffer still holds, closes the stream and releases the
158
+ * buffer. Both `_final` and `_destroy` end up here, and `_destroy` may run
159
+ * after `_final` has already flushed — resetting the offset is what stops the
160
+ * tail being pushed twice. It used to be `this.buffer = null` that stopped
161
+ * it, which made the declared `Buffer` a lie the two call sites had to
162
+ * maintain.
163
+ */
164
+ flushAndClose() {
165
+ if (this.offset > 0) {
152
166
  // Push last bit of data
153
167
  this.push(this.buffer.slice(0, this.offset));
168
+ this.offset = 0;
154
169
  }
155
170
  this.push(null); // Close the stream
156
- this.buffer = null;
157
- callback(err);
171
+ this.buffer = Buffer.alloc(0);
158
172
  }
159
173
  }
160
174
  exports.BufferedPassThrough = BufferedPassThrough;
@@ -1,2 +1,2 @@
1
+ declare function bytes(input: unknown): number | null;
1
2
  export = bytes;
2
- declare function bytes(input: any): number;
@@ -19,11 +19,15 @@ function bytes(input) {
19
19
  else if (input.toLowerCase().includes("tb")) {
20
20
  unit = 1024 ** 4;
21
21
  }
22
- const match = input.match(/\d+/);
22
+ const match = /\d+/.exec(input);
23
23
  if (!match) {
24
24
  return null;
25
25
  }
26
- const number = parseInt(match[0], 10);
26
+ const [digits] = match;
27
+ if (digits === undefined) {
28
+ return null;
29
+ }
30
+ const number = Number.parseInt(digits, 10);
27
31
  if (Number.isNaN(number)) {
28
32
  return null;
29
33
  }
@@ -1,2 +1,4 @@
1
+ /// <reference types="lib/types/debug" />
2
+ import "../types/Global";
3
+ declare function createDebug(namespace: string): import("debug").Debugger;
1
4
  export = createDebug;
2
- declare function createDebug(namespace: any): any;
@@ -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,24 +19,55 @@
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 debug = require("debug");
23
- const util = require("util");
24
- debug.formatters.a = (value) => {
25
- const inspectOpts = debug.inspectOpts;
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 util = __importStar(require("node:util"));
49
+ const debug_1 = __importDefault(require("debug"));
50
+ require("../types/Global");
51
+ debug_1.default.formatters.a = (value) => {
52
+ const inspectOpts = debug_1.default.inspectOpts;
26
53
  if (inspectOpts.expand) {
27
54
  return `\n${util.inspect(value, inspectOpts)}`;
28
55
  }
29
- return util.inspect(value, inspectOpts).replace(/\s*\n\s*/g, " ");
56
+ // Collapse whitespace runs that contain a newline into a single space,
57
+ // leaving newline-free whitespace untouched. A single `\s+` scan with a
58
+ // predicate avoids the super-linear backtracking of `\s*\n\s*`.
59
+ return util
60
+ .inspect(value, inspectOpts)
61
+ .replace(/\s+/g, (match) => (match.includes("\n") ? " " : match));
30
62
  };
31
- debug.formatArgs = () => { };
63
+ debug_1.default.formatArgs = () => { };
32
64
  function createDebug(namespace) {
33
- const myDebug = debug(namespace);
34
- myDebug.log = (...args) => {
65
+ const myDebug = (0, debug_1.default)(namespace);
66
+ myDebug.log = (msg, ...args) => {
35
67
  if (!["debug", "trace"].includes(global.kuzzle.log.level)) {
36
68
  global.kuzzle.log.level = "debug";
37
69
  }
38
- global.kuzzle.log.debug({ namespace }, ...args);
70
+ global.kuzzle.log.debug({ namespace }, msg, ...args);
39
71
  };
40
72
  return myDebug;
41
73
  }
@@ -1 +1,9 @@
1
- export function deprecateProperties(logger: any, target: any, deprecations?: {}): any;
1
+ import "../types/Global";
2
+ interface DeprecationLogger {
3
+ warn: (...args: unknown[]) => void;
4
+ }
5
+ type Deprecations = Record<string, string | {
6
+ message?: string;
7
+ } | null>;
8
+ export declare const deprecateProperties: <T extends object>(logger: DeprecationLogger, target: T, deprecations?: Deprecations) => T;
9
+ export {};
@@ -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,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
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.deprecateProperties = void 0;
24
+ require("../types/Global");
22
25
  const deprecationWarning = (logger, ...args) => {
23
26
  if (global.NODE_ENV === "development") {
24
27
  logger.warn("DEPRECATION WARNING");
@@ -26,11 +29,14 @@ const deprecationWarning = (logger, ...args) => {
26
29
  }
27
30
  };
28
31
  const warnIfDeprecated = (logger, deprecations, member) => {
29
- const deprecatedProperty = Object.keys(deprecations).find((deprecated) => deprecated === member), alternative = deprecations[deprecatedProperty];
32
+ const deprecatedProperty = Object.keys(deprecations).find((deprecated) => deprecated === member);
30
33
  if (!deprecatedProperty) {
31
34
  return;
32
35
  }
33
- if (alternative && typeof alternative.message === "string") {
36
+ const alternative = deprecations[deprecatedProperty];
37
+ if (alternative &&
38
+ typeof alternative === "object" &&
39
+ typeof alternative.message === "string") {
34
40
  deprecationWarning(logger, alternative.message);
35
41
  }
36
42
  else if (typeof alternative === "string") {
@@ -58,7 +64,5 @@ const deprecateProperties = (logger, target, deprecations = {}) => {
58
64
  },
59
65
  });
60
66
  };
61
- module.exports = {
62
- deprecateProperties,
63
- };
67
+ exports.deprecateProperties = deprecateProperties;
64
68
  //# sourceMappingURL=deprecate.js.map
@@ -1,2 +1,3 @@
1
+ import "../types/Global";
2
+ declare function printDidYouMean(str: string, list: readonly string[]): string;
1
3
  export = printDidYouMean;
2
- declare function printDidYouMean(...args: any[]): string;
@@ -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,16 @@
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 didYouMean = require("didyoumean");
23
- function printDidYouMean(...args) {
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ const didyoumean_1 = __importDefault(require("didyoumean"));
26
+ require("../types/Global");
27
+ function printDidYouMean(str, list) {
24
28
  if (global.NODE_ENV !== "development") {
25
29
  return "";
26
30
  }
27
- const result = didYouMean(...args);
31
+ const result = (0, didyoumean_1.default)(str, list);
28
32
  if (!result) {
29
33
  return "";
30
34
  }
@@ -0,0 +1,56 @@
1
+ import "../types/Global";
2
+ /**
3
+ * withLock() options
4
+ */
5
+ export interface MutexConfig {
6
+ /**
7
+ * Number of acquisition retries after the first failed attempt, i.e. at
8
+ * most `retryAttempts + 1` attempts are made (default: 10)
9
+ */
10
+ retryAttempts?: number;
11
+ /**
12
+ * Delay between 2 lock acquisition attempts, in milliseconds (default: 200)
13
+ */
14
+ retryDelay?: number;
15
+ /**
16
+ * Lock TTL in milliseconds (default: 30000)
17
+ */
18
+ ttl?: number;
19
+ }
20
+ /**
21
+ * Thrown when a lock acquired by `withLock` is lost while its callback is
22
+ * still running (e.g. TTL extension failed and another node may now hold
23
+ * the lock).
24
+ */
25
+ export declare class MutexLockLostError extends Error {
26
+ constructor(key: string, cause?: Error);
27
+ }
28
+ /**
29
+ * Runs `callback` while holding a distributed, reentrant lock on `key`.
30
+ *
31
+ * Reentrant: if the current async context already holds `key` (i.e. this is
32
+ * a nested call from inside another `withLock(key, ...)` call for the same
33
+ * key), `callback` runs immediately with no new Redis round-trip, and
34
+ * `config` is silently ignored (the ancestor's lock/TTL/retry settings
35
+ * apply — this is correct reentrant-mutex semantics, not a bug).
36
+ *
37
+ * The lock's TTL is extended in the background while `callback` runs. If
38
+ * the lock cannot be acquired within `retryAttempts + 1` attempts, the
39
+ * returned promise rejects without running `callback`.
40
+ *
41
+ * If the lock is lost mid-callback (e.g. TTL extension failed and another
42
+ * node may now hold it), the returned promise rejects with
43
+ * `MutexLockLostError` as soon as that's detected. `callback` itself cannot
44
+ * be cancelled and keeps running in the background; do not perform
45
+ * authoritative side effects after observing this rejection.
46
+ *
47
+ * Do not use on the same resource key as the deprecated `Mutex` class
48
+ * concurrently: both write to the same Redis key with incompatible
49
+ * value/TTL formats and will contend with (but never corrupt) each other.
50
+ *
51
+ * @param key - resource identifier to be locked (must be identical across
52
+ * all nodes)
53
+ * @param callback - executed while the lock is held
54
+ * @param config - lock options (ignored if this call is reentrant)
55
+ */
56
+ export declare function withLock<T>(key: string, callback: () => Promise<T>, config?: MutexConfig): Promise<T>;