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
@@ -0,0 +1,31 @@
1
+ import type { CuratedFieldSpecification, ErrorMessages, RawSpecification, StructuredFieldSpecification, VerboseErrorMessages } from "./specification";
2
+ /**
3
+ * Narrows `object` to a plain object holding none but the allowed properties.
4
+ */
5
+ export declare function checkAllowedProperties(object: unknown, allowedProperties: string[]): object is Record<string, unknown>;
6
+ /**
7
+ * Assembles curated fields, grouped by depth, into the tree the validator
8
+ * walks. Depth counting starts at 1.
9
+ *
10
+ * @throws {PreconditionError}
11
+ */
12
+ export declare function curateStructuredFields(typeAllowsChildren: string[], fields: Record<number, CuratedFieldSpecification[]>, maxDepth: number): StructuredFieldSpecification;
13
+ /**
14
+ * Walks a field's path down the tree and answers the node that must hold it.
15
+ *
16
+ * @throws {PreconditionError} when an intermediate node is missing
17
+ */
18
+ export declare function getParent(structuredFields: StructuredFieldSpecification, fieldPath: string[]): StructuredFieldSpecification;
19
+ /**
20
+ * Files a validation message, or throws it.
21
+ *
22
+ * When `structured` holds, the message is hung off `errorHolder` at the field's
23
+ * own path so the caller can report it in place; when it does not, the first
24
+ * message throws and the holder is never written to.
25
+ *
26
+ * @throws {BadRequestError} when `structured` is false
27
+ */
28
+ export declare function storeErrorMessage(errorContext: string | string[], errorHolder: VerboseErrorMessages, message: string): void;
29
+ export declare function throwErrorMessage(errorContext: string | string[], message: string): never;
30
+ export declare function manageErrorMessage(errorContext: string | string[], errorHolder: ErrorMessages, message: string, structured: boolean): void;
31
+ export declare function getValidationConfiguration(): Promise<RawSpecification>;
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ /*
3
+ * Kuzzle, a backend software, self-hostable and ready to use
4
+ * to power modern apps
5
+ *
6
+ * Copyright 2015-2022 Kuzzle
7
+ * mailto: support AT kuzzle.io
8
+ * website: http://kuzzle.io
9
+ *
10
+ * Licensed under the Apache License, Version 2.0 (the "License");
11
+ * you may not use this file except in compliance with the License.
12
+ * You may obtain a copy of the License at
13
+ *
14
+ * https://www.apache.org/licenses/LICENSE-2.0
15
+ *
16
+ * Unless required by applicable law or agreed to in writing, software
17
+ * distributed under the License is distributed on an "AS IS" BASIS,
18
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ * See the License for the specific language governing permissions and
20
+ * limitations under the License.
21
+ */
22
+ 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
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.getValidationConfiguration = exports.manageErrorMessage = exports.throwErrorMessage = exports.storeErrorMessage = exports.getParent = exports.curateStructuredFields = exports.checkAllowedProperties = void 0;
47
+ const kerror = __importStar(require("../../kerror"));
48
+ const safeObject_1 = require("../../util/safeObject");
49
+ const specification_1 = require("./specification");
50
+ const assertionError = kerror.wrap("validation", "assert");
51
+ /**
52
+ * Narrows `object` to a plain object holding none but the allowed properties.
53
+ */
54
+ function checkAllowedProperties(object, allowedProperties) {
55
+ if (!(0, safeObject_1.isPlainObject)(object)) {
56
+ return false;
57
+ }
58
+ return !Object.keys(object).some((propertyName) => !allowedProperties.includes(propertyName));
59
+ }
60
+ exports.checkAllowedProperties = checkAllowedProperties;
61
+ /**
62
+ * Assembles curated fields, grouped by depth, into the tree the validator
63
+ * walks. Depth counting starts at 1.
64
+ *
65
+ * @throws {PreconditionError}
66
+ */
67
+ function curateStructuredFields(typeAllowsChildren, fields, maxDepth) {
68
+ const structuredFields = {
69
+ children: {},
70
+ root: true,
71
+ };
72
+ for (let i = 1; i <= maxDepth; i++) {
73
+ const sameDepth = fields[i];
74
+ if (sameDepth === undefined) {
75
+ throw assertionError.get("missing_nested_spec");
76
+ }
77
+ sameDepth.forEach((field) => {
78
+ const parent = getParent(structuredFields, field.path),
79
+ // `path` is a field's key split on "/", so it always has a last
80
+ // segment; the fallback is what makes that readable to the compiler.
81
+ childKey = field.path.at(-1) ?? "";
82
+ if (!parent.root && !typeAllowsChildren.includes(parent.type ?? "")) {
83
+ throw assertionError.get("unexpected_children", parent.type);
84
+ }
85
+ const children = (parent.children ?? (parent.children = {}));
86
+ children[childKey] = field;
87
+ });
88
+ }
89
+ return structuredFields;
90
+ }
91
+ exports.curateStructuredFields = curateStructuredFields;
92
+ /**
93
+ * Walks a field's path down the tree and answers the node that must hold it.
94
+ *
95
+ * @throws {PreconditionError} when an intermediate node is missing
96
+ */
97
+ function getParent(structuredFields, fieldPath) {
98
+ if (fieldPath.length === 1) {
99
+ return structuredFields;
100
+ }
101
+ let pointer = structuredFields;
102
+ for (const segment of fieldPath.slice(0, -1)) {
103
+ const child = pointer.children?.[segment];
104
+ if (child === undefined) {
105
+ throw assertionError.get("missing_parent", fieldPath.join("."));
106
+ }
107
+ pointer = child;
108
+ }
109
+ return pointer;
110
+ }
111
+ exports.getParent = getParent;
112
+ /**
113
+ * Files a validation message, or throws it.
114
+ *
115
+ * When `structured` holds, the message is hung off `errorHolder` at the field's
116
+ * own path so the caller can report it in place; when it does not, the first
117
+ * message throws and the holder is never written to.
118
+ *
119
+ * @throws {BadRequestError} when `structured` is false
120
+ */
121
+ function storeErrorMessage(errorContext, errorHolder, message) {
122
+ if (errorContext === "document") {
123
+ const documentScope = (errorHolder.documentScope ?? (errorHolder.documentScope = []));
124
+ documentScope.push(message);
125
+ return;
126
+ }
127
+ let pointer = (errorHolder.fieldScope ?? (errorHolder.fieldScope = {}));
128
+ for (const segment of errorContext) {
129
+ const children = (pointer.children ?? (pointer.children = {}));
130
+ pointer = children[segment] ?? (children[segment] = {});
131
+ }
132
+ const messages = (pointer.messages ?? (pointer.messages = []));
133
+ messages.push(message);
134
+ }
135
+ exports.storeErrorMessage = storeErrorMessage;
136
+ function throwErrorMessage(errorContext, message) {
137
+ if (errorContext === "document") {
138
+ throw kerror.get("validation", "check", "failed_document", message);
139
+ }
140
+ // Everything that is not the "document" literal is a field path.
141
+ throw kerror.get("validation", "check", "failed_field", Array.isArray(errorContext) ? errorContext.join(".") : errorContext, message);
142
+ }
143
+ exports.throwErrorMessage = throwErrorMessage;
144
+ function manageErrorMessage(errorContext, errorHolder, message, structured) {
145
+ if (!structured) {
146
+ throwErrorMessage(errorContext, message);
147
+ }
148
+ // `structured` and the holder's shape are the same fact: `validate` builds an
149
+ // object exactly when `verbose` holds, and a list when it does not. The
150
+ // narrowing is what says so; the branch cannot be taken.
151
+ if (Array.isArray(errorHolder)) {
152
+ return;
153
+ }
154
+ storeErrorMessage(errorContext, errorHolder, message);
155
+ }
156
+ exports.manageErrorMessage = manageErrorMessage;
157
+ /**
158
+ * Reads every stored specification, falling back to the one in the
159
+ * configuration when the internal index holds none — the database is not
160
+ * necessarily prepared yet when this first runs.
161
+ */
162
+ function collectStoredSpecification(validation, hit) {
163
+ var _a;
164
+ const { _id, _source } = hit;
165
+ const collectionName = `${_id.split("#")[0]}/${_id.split("#")[1]}`;
166
+ for (const required of ["index", "collection", "validation"]) {
167
+ if (!(0, safeObject_1.get)(_source, required)) {
168
+ throw assertionError.get("incorrect_validation_format", collectionName, required);
169
+ }
170
+ }
171
+ const indexValidation = (validation[_a = _source.index] ?? (validation[_a] = {}));
172
+ indexValidation[_source.collection] = _source.validation;
173
+ }
174
+ function getValidationConfiguration() {
175
+ return global.kuzzle.internalIndex
176
+ .search("validations", {}, { from: 0, size: 1000 })
177
+ .then((result) => {
178
+ if (!result || !Array.isArray(result.hits) || result.hits.length === 0) {
179
+ // We can't wait prepareDb as it runs outside of the rest of the start
180
+ return (0, specification_1.configuredSpecifications)() || {};
181
+ }
182
+ const validation = {};
183
+ for (const hit of result.hits) {
184
+ collectStoredSpecification(validation, hit);
185
+ }
186
+ return validation;
187
+ });
188
+ }
189
+ exports.getValidationConfiguration = getValidationConfiguration;
190
+ //# sourceMappingURL=validationUtils.js.map
@@ -93,12 +93,6 @@
93
93
  "code": 15,
94
94
  "message": "Plugin \"%s\" not found.%s",
95
95
  "class": "NotFoundError"
96
- },
97
- "invalid_openapi_schema": {
98
- "description": "OpenAPI specification is invalid",
99
- "code": 16,
100
- "message": "Invalid OpenAPI specification: \"%s\"",
101
- "class": "PluginImplementationError"
102
96
  }
103
97
  }
104
98
  },
@@ -349,12 +343,6 @@
349
343
  "code": 9,
350
344
  "message": "Unexpected return value from action \"%s:%s\": expected a Promise",
351
345
  "class": "PluginImplementationError"
352
- },
353
- "invalid_openapi_schema": {
354
- "description": "OpenAPI specification is invalid",
355
- "code": 10,
356
- "message": "Invalid OpenAPI specification in \"%s:%s\", %s : %s",
357
- "class": "PluginImplementationError"
358
346
  }
359
347
  }
360
348
  },
@@ -1,4 +1,4 @@
1
- import { ErrorDefinition } from "../../types/errors/ErrorDefinition";
1
+ import type { ErrorDefinition } from "../../types/errors/ErrorDefinition";
2
2
  type ErrorEntry = Omit<ErrorDefinition, "description"> & {
3
3
  description?: string;
4
4
  deprecated?: string;
@@ -15,7 +15,17 @@ export type Domains = Record<string, Domain>;
15
15
  type CheckOptions = {
16
16
  plugin?: boolean;
17
17
  };
18
- declare const domains: Domains;
18
+ declare const domains: {
19
+ api: Domain;
20
+ cluster: Domain;
21
+ core: Domain;
22
+ network: Domain;
23
+ plugin: Domain;
24
+ protocol: Domain;
25
+ security: Domain;
26
+ services: Domain;
27
+ validation: Domain;
28
+ };
19
29
  declare function checkDomains(errorCodesFiles: Domains, options?: CheckOptions): void;
20
30
  declare function loadPluginsErrors(pluginManifest: {
21
31
  errors: Record<string, ErrorEntry>;
@@ -59,6 +59,9 @@ const _6_protocol_json_1 = __importDefault(require("./6-protocol.json"));
59
59
  const _7_security_json_1 = __importDefault(require("./7-security.json"));
60
60
  const _1_services_json_1 = __importDefault(require("./1-services.json"));
61
61
  const _5_validation_json_1 = __importDefault(require("./5-validation.json"));
62
+ // `satisfies`, not an annotation: the nine domains are known, and
63
+ // `loadPluginsErrors` reaches into `domains.plugin` — which, through a
64
+ // `Record<string, Domain>`, is `Domain | undefined`.
62
65
  const domains = {
63
66
  api: _2_api_json_1.default,
64
67
  cluster: _8_cluster_json_1.default,
@@ -94,8 +97,7 @@ function checkErrors(subdomain, domain, options) {
94
97
  }
95
98
  function checkSubdomains(domain, options) {
96
99
  const subdomainCodes = new Set();
97
- for (const subdomainName of Object.keys(domain.subDomains)) {
98
- const subdomain = domain.subDomains[subdomainName];
100
+ for (const [subdomainName, subdomain] of Object.entries(domain.subDomains)) {
99
101
  if (!options.plugin) {
100
102
  (0, assert_1.default)((0, safeObject_1.has)(subdomain, "code"), `Error configuration file : Missing required 'code' field (domain: ${domain.code}, subdomain: ${subdomainName}).`);
101
103
  }
@@ -115,8 +117,7 @@ function checkSubdomains(domain, options) {
115
117
  }
116
118
  function checkDomains(errorCodesFiles, options = { plugin: false }) {
117
119
  const domainCodes = new Set();
118
- for (const domainName of Object.keys(errorCodesFiles)) {
119
- const domain = errorCodesFiles[domainName];
120
+ for (const [domainName, domain] of Object.entries(errorCodesFiles)) {
120
121
  (0, assert_1.default)((0, safeObject_1.has)(domain, "code"), `Error configuration file : Missing required 'code' field. (domain: '${domainName}').`);
121
122
  (0, assert_1.default)(Number.isInteger(domain.code), `Error configuration file : Field 'code' must be an integer. (domain: '${domainName}').`);
122
123
  (0, assert_1.default)(domain.code >= 0x00 && domain.code <= 0xff, `Error configuration file : Field 'code' must be between 0 and 255. (domain: '${domainName}').`);
@@ -1,4 +1,4 @@
1
1
  import { KuzzleError } from "./kuzzleError";
2
2
  export declare class BadRequestError extends KuzzleError {
3
- constructor(message: any, id?: any, code?: any);
3
+ constructor(message?: unknown, id?: unknown, code?: unknown);
4
4
  }
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.BadRequestError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
25
  class BadRequestError extends kuzzleError_1.KuzzleError {
26
- constructor(message, id, code) {
26
+ constructor(message = "", id, code) {
27
27
  super(message, 400, id, code);
28
28
  }
29
29
  }
@@ -1,4 +1,4 @@
1
1
  import { KuzzleError } from "./kuzzleError";
2
2
  export declare class ExternalServiceError extends KuzzleError {
3
- constructor(message: any, id?: any, code?: any);
3
+ constructor(message?: unknown, id?: unknown, code?: unknown);
4
4
  }
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.ExternalServiceError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
25
  class ExternalServiceError extends kuzzleError_1.KuzzleError {
26
- constructor(message, id, code) {
26
+ constructor(message = "", id, code) {
27
27
  super(message, 500, id, code);
28
28
  }
29
29
  }
@@ -1,4 +1,4 @@
1
1
  import { KuzzleError } from "./kuzzleError";
2
2
  export declare class ForbiddenError extends KuzzleError {
3
- constructor(message: any, id?: any, code?: any);
3
+ constructor(message?: unknown, id?: unknown, code?: unknown);
4
4
  }
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.ForbiddenError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
25
  class ForbiddenError extends kuzzleError_1.KuzzleError {
26
- constructor(message, id, code) {
26
+ constructor(message = "", id, code) {
27
27
  super(message, 403, id, code);
28
28
  }
29
29
  }
@@ -1,4 +1,4 @@
1
1
  import { KuzzleError } from "./kuzzleError";
2
2
  export declare class GatewayTimeoutError extends KuzzleError {
3
- constructor(message: any, id?: any, code?: any);
3
+ constructor(message?: unknown, id?: unknown, code?: unknown);
4
4
  }
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.GatewayTimeoutError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
25
  class GatewayTimeoutError extends kuzzleError_1.KuzzleError {
26
- constructor(message, id, code) {
26
+ constructor(message = "", id, code) {
27
27
  super(message, 504, id, code);
28
28
  }
29
29
  }
@@ -1,4 +1,4 @@
1
1
  import { KuzzleError } from "./kuzzleError";
2
2
  export declare class InternalError extends KuzzleError {
3
- constructor(message: any, id?: any, code?: any);
3
+ constructor(message?: unknown, id?: unknown, code?: unknown);
4
4
  }
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.InternalError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
25
  class InternalError extends kuzzleError_1.KuzzleError {
26
- constructor(message, id, code) {
26
+ constructor(message = "", id, code) {
27
27
  super(message, 500, id, code);
28
28
  }
29
29
  }
@@ -1,4 +1,4 @@
1
- import { JSONObject } from "kuzzle-sdk";
1
+ import type { JSONObject } from "../../types/JSONObject";
2
2
  /**
3
3
  * API error are instances of this class.
4
4
  * See https://docs.kuzzle.io/core/2/api/errors/types/
@@ -11,17 +11,46 @@ export declare class KuzzleError extends Error {
11
11
  /**
12
12
  * Error unique code
13
13
  * @see https://docs.kuzzle.io/core/2/api/errors/error-codes/
14
+ *
15
+ * Set on every error built from the code registry (`kerror`), which is how
16
+ * Kuzzle builds its own; undefined on an error built by hand
17
+ * (`new BadRequestError("...")`), which plugins and Kuzzle itself also do.
18
+ * Declared as always present all the same, because that is what v2.56.0
19
+ * declared and what code compiled against it reads. See the constructor.
14
20
  */
15
21
  code: number;
16
22
  /**
17
23
  * Error unique identifier
24
+ *
25
+ * Undefined under the same conditions as {@link code}, and declared as
26
+ * always present for the same reason.
18
27
  */
19
28
  id: string;
20
29
  /**
21
- * Placeholders used to construct the error message.
30
+ * The placeholders that were substituted into the message, when `kerror`
31
+ * built the error; undefined otherwise. `kerror.get` takes them from its
32
+ * caller, which may hand it anything — an id, a count, the value that
33
+ * failed a type check — but `string[]` is what v2.56.0 declared, and code
34
+ * compiled against it assigns this to a `string[]`.
22
35
  */
23
36
  props: string[];
24
- constructor(message: string, status: number, id?: string, code?: number);
37
+ /**
38
+ * The arguments are not narrowed to what they are meant to be (a string or
39
+ * an `Error`, a string id, a numeric code): v2.56.0's subclasses took
40
+ * untyped ones, so `new InternalError(caught)` with a `catch` variable of
41
+ * type `unknown` compiled, and must still.
42
+ *
43
+ * A `message` that is not an `Error` is handed to `Error`, which
44
+ * stringifies it; `undefined` and `null` give an empty one —
45
+ * `doc/build-error-codes.js` constructs one of each class with no arguments
46
+ * just to read its `status`.
47
+ *
48
+ * @param message - a string, or an `Error` whose message and stack are kept
49
+ * @param status - HTTP status code
50
+ * @param id - error unique identifier (a string)
51
+ * @param code - error unique code (a number)
52
+ */
53
+ constructor(message: unknown, status: number, id?: unknown, code?: unknown);
25
54
  /**
26
55
  * Error class name (e.g: 'NotFoundError')
27
56
  */
@@ -45,24 +45,38 @@ var __importStar = (this && this.__importStar) || function (mod) {
45
45
  Object.defineProperty(exports, "__esModule", { value: true });
46
46
  exports.KuzzleError = void 0;
47
47
  const util = __importStar(require("util"));
48
+ /**
49
+ * `util.types.isNativeError` rather than `instanceof Error`: it answers true
50
+ * for an error built in another realm, which `instanceof` does not, and false
51
+ * for an object that merely has `Error.prototype`. Node deprecates it in
52
+ * favour of `Error.isError`, which needs Node 24 while this package supports
53
+ * `>=20` — hence the NOSONAR. Revisit when the floor moves.
54
+ */
55
+ function isError(value) {
56
+ return util.types.isNativeError(value); // NOSONAR
57
+ }
48
58
  /**
49
59
  * API error are instances of this class.
50
60
  * See https://docs.kuzzle.io/core/2/api/errors/types/
51
61
  */
52
62
  class KuzzleError extends Error {
63
+ /**
64
+ * The implementation names what `message` is meant to be; the public
65
+ * signature above is what it may be. Anything else goes straight to
66
+ * `Error`'s own conversion.
67
+ */
53
68
  constructor(message, status, id, code) {
54
- super(message);
69
+ super(isError(message) ? message.message : (message ?? ""));
55
70
  this.status = status;
56
- this.code = code;
57
- this.id = id;
58
- this.props = undefined;
71
+ // The three fields declared above as always present, stored as handed:
72
+ // their declarations are the ones code compiled against v2.56.0 reads,
73
+ // not a description of every value that reaches this line.
74
+ Object.assign(this, { code, id, props: undefined });
59
75
  this.stack = undefined;
60
- if (util.types.isNativeError(message)) {
61
- this.message = message.message;
76
+ if (isError(message)) {
62
77
  this.stack = message.stack;
63
78
  }
64
79
  else {
65
- this.message = message;
66
80
  Error.captureStackTrace(this, KuzzleError);
67
81
  }
68
82
  }
@@ -2,6 +2,6 @@ import { KuzzleError } from "./kuzzleError";
2
2
  export declare class MultipleErrorsError extends KuzzleError {
3
3
  errors: Array<KuzzleError>;
4
4
  count: number;
5
- constructor(message: string, errors?: KuzzleError[], id?: string, code?: number);
6
- toJSON(): import("kuzzle-sdk").JSONObject;
5
+ constructor(message?: string, errors?: KuzzleError[], id?: string, code?: number);
6
+ toJSON(): import("../../..").JSONObject;
7
7
  }
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.MultipleErrorsError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
25
  class MultipleErrorsError extends kuzzleError_1.KuzzleError {
26
- constructor(message, errors = [], id, code) {
26
+ constructor(message = "", errors = [], id, code) {
27
27
  super(message, 400, id, code);
28
28
  this.errors = errors;
29
29
  this.count = errors.length;
@@ -34,7 +34,7 @@ class MultipleErrorsError extends kuzzleError_1.KuzzleError {
34
34
  try {
35
35
  serialized.errors = this.errors.map((error) => error.toJSON());
36
36
  }
37
- catch (error) {
37
+ catch {
38
38
  serialized.errors = this.errors;
39
39
  }
40
40
  return serialized;
@@ -1,4 +1,4 @@
1
1
  import { KuzzleError } from "./kuzzleError";
2
2
  export declare class NotFoundError extends KuzzleError {
3
- constructor(message: any, id?: any, code?: any);
3
+ constructor(message?: unknown, id?: unknown, code?: unknown);
4
4
  }
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.NotFoundError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
25
  class NotFoundError extends kuzzleError_1.KuzzleError {
26
- constructor(message, id, code) {
26
+ constructor(message = "", id, code) {
27
27
  super(message, 404, id, code);
28
28
  }
29
29
  }
@@ -2,6 +2,12 @@ import { KuzzleError } from "./kuzzleError";
2
2
  export declare class PartialError extends KuzzleError {
3
3
  errors: Array<KuzzleError>;
4
4
  count: number;
5
- constructor(message: any, body: any, id: any, code: any);
6
- toJSON(): import("kuzzle-sdk").JSONObject;
5
+ constructor(message?: string | Error, id?: string, code?: number);
6
+ constructor(message?: string | Error, body?: KuzzleError[], id?: string, code?: number);
7
+ /**
8
+ * v2.56.0 declared all four arguments untyped: a body that is not a list of
9
+ * `KuzzleError` (`[{ _id, reason }]`, `Error[]`) compiled, and must still.
10
+ */
11
+ constructor(message?: unknown, body?: unknown, id?: unknown, code?: unknown);
12
+ toJSON(): import("../../..").JSONObject;
7
13
  }
@@ -23,18 +23,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.PartialError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
25
  class PartialError extends kuzzleError_1.KuzzleError {
26
- constructor(message, body, id, code) {
26
+ /**
27
+ * Two call shapes, both public API: the documented one carries the partial
28
+ * errors — `(message, body, id, code)` — and the one `kerror` uses for every
29
+ * other error class — `(message, id, code)`. They are told apart the way
30
+ * they always were: a numeric third argument with no fourth means the
31
+ * arguments are shifted by one.
32
+ */
33
+ constructor(message = "", body, id, code) {
34
+ let errors = [];
35
+ let errorId;
36
+ let errorCode;
27
37
  if (code === undefined && typeof id === "number") {
28
- code = id;
29
- id = body;
30
- body = [];
38
+ errorCode = id;
39
+ errorId = typeof body === "string" ? body : undefined;
31
40
  }
32
- else if (body === undefined) {
33
- body = [];
41
+ else {
42
+ errorId = typeof id === "string" ? id : undefined;
43
+ errorCode = code;
44
+ if (Array.isArray(body)) {
45
+ errors = body;
46
+ }
34
47
  }
35
- super(message, 206, id, code);
36
- this.errors = body;
37
- this.count = body.length;
48
+ super(message, 206, errorId, errorCode);
49
+ this.errors = errors;
50
+ this.count = errors.length;
38
51
  }
39
52
  toJSON() {
40
53
  const serialized = super.toJSON();
@@ -1,4 +1,12 @@
1
1
  import { KuzzleError } from "./kuzzleError";
2
+ /**
3
+ * An error in plugin or application code, as opposed to Kuzzle's own.
4
+ *
5
+ * Its message used to end with "This is probably not a Kuzzle error, but a
6
+ * problem with a plugin implementation." on every one of the ~80 ids of this
7
+ * class: it said nothing the id (`plugin.*`) does not, and it came between the
8
+ * message and the stack of the error that actually happened.
9
+ */
2
10
  export declare class PluginImplementationError extends KuzzleError {
3
- constructor(message: any, id?: any, code?: any);
11
+ constructor(message?: unknown, id?: unknown, code?: unknown);
4
12
  }
@@ -22,11 +22,17 @@
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.PluginImplementationError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
+ /**
26
+ * An error in plugin or application code, as opposed to Kuzzle's own.
27
+ *
28
+ * Its message used to end with "This is probably not a Kuzzle error, but a
29
+ * problem with a plugin implementation." on every one of the ~80 ids of this
30
+ * class: it said nothing the id (`plugin.*`) does not, and it came between the
31
+ * message and the stack of the error that actually happened.
32
+ */
25
33
  class PluginImplementationError extends kuzzleError_1.KuzzleError {
26
- constructor(message, id, code) {
34
+ constructor(message = "", id, code) {
27
35
  super(message, 500, id, code);
28
- this.message +=
29
- "\nThis is probably not a Kuzzle error, but a problem with a plugin implementation.";
30
36
  }
31
37
  }
32
38
  exports.PluginImplementationError = PluginImplementationError;
@@ -1,4 +1,4 @@
1
1
  import { KuzzleError } from "./kuzzleError";
2
2
  export declare class PreconditionError extends KuzzleError {
3
- constructor(message: any, id?: any, code?: any);
3
+ constructor(message?: unknown, id?: unknown, code?: unknown);
4
4
  }
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.PreconditionError = void 0;
24
24
  const kuzzleError_1 = require("./kuzzleError");
25
25
  class PreconditionError extends kuzzleError_1.KuzzleError {
26
- constructor(message, id, code) {
26
+ constructor(message = "", id, code) {
27
27
  super(message, 412, id, code);
28
28
  }
29
29
  }