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,195 +19,245 @@
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 kerror = require("../../../kerror"), { has, isPlainObject } = require("../../../util/safeObject"), BaseType = require("../baseType"), moment = require("moment"), formatMap = {
23
- basic_date: (date) => moment.utc(date, "YYYYMMDD", true),
24
- basic_date_time: (date) => moment.utc(date, "YYYYMMDD\\THHmmss.SSSZ", true),
25
- basic_date_time_no_millis: (date) => moment.utc(date, "YYYYMMDD\\THHmmssZ", true),
26
- basic_ordinal_date: (date) => moment.utc(date, "YYYYDDD", true),
27
- basic_ordinal_date_time: (date) => moment.utc(date, "YYYYDDD\\THHmmss.SSSZ", true),
28
- basic_ordinal_date_time_no_millis: (date) => moment.utc(date, "YYYYDDD\\THHmmssZ", true),
29
- basic_t_time: (date) => moment.utc(date, "\\THHmmss.SSSZ", true),
30
- basic_t_time_no_millis: (date) => moment.utc(date, "\\THHmmssZ", true),
31
- basic_time: (date) => moment.utc(date, "HHmmss.SSSZ", true),
32
- basic_time_no_millis: (date) => moment.utc(date, "HHmmssZ", true),
33
- basic_week_date: (date) => moment.utc(date, "gggg\\Wwwe", false),
34
- basic_week_date_time: (date) => moment.utc(date, "gggg\\Wwwe\\THHmmss.SSSZ", false),
35
- basic_week_date_time_no_millis: (date) => moment.utc(date, "gggg\\Wwwe\\THHmmssZ", false),
36
- date: (date) => moment.utc(date, "YYYY-MM-DD", false),
37
- date_hour: (date) => moment.utc(date, "YYYY-MM-DD\\THH", false),
38
- date_hour_minute: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm", false),
39
- date_hour_minute_second: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ss", false),
40
- date_hour_minute_second_fraction: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ss.SSS", false),
41
- date_hour_minute_second_millis: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ss.SSS", false),
42
- date_time: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ss.SSSZZ", false),
43
- date_time_no_millis: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ssZZ", false),
44
- epoch_millis: (date) => typeof date === "number" ? moment.utc(date) : moment.invalid(),
45
- epoch_second: (date) => typeof date === "number"
46
- ? moment.utc(moment.unix(date))
47
- : moment.invalid(),
48
- hour: (date) => moment.utc(date, "HH", false),
49
- hour_minute: (date) => moment.utc(date, "HH:mm", false),
50
- hour_minute_second: (date) => moment.utc(date, "HH:mm:ss", false),
51
- hour_minute_second_fraction: (date) => moment.utc(date, "HH:mm:ss.SSS", false),
52
- hour_minute_second_millis: (date) => moment.utc(date, "HH:mm:ss.SSS", false),
53
- ordinal_date: (date) => moment.utc(date, "YYYY-DDD", false),
54
- ordinal_date_time: (date) => moment.utc(date, "YYYY-DDD\\THH:mm:ss.SSSZZ", false),
55
- ordinal_date_time_no_millis: (date) => moment.utc(date, "YYYY-DDD\\THH:mm:ssZZ", false),
56
- strict_basic_week_date: (date) => moment.utc(date, "gggg\\Wwwe", true),
57
- strict_basic_week_date_time: (date) => moment.utc(date, "gggg\\Wwwe\\THHmmss.SSSZ", true),
58
- strict_basic_week_date_time_no_millis: (date) => moment.utc(date, "gggg\\Wwwe\\THHmmssZ", true),
59
- strict_date: (date) => moment.utc(date, "YYYY-MM-DD", true),
60
- strict_date_hour: (date) => moment.utc(date, "YYYY-MM-DD\\THH", true),
61
- strict_date_hour_minute: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm", true),
62
- strict_date_hour_minute_second: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ss", true),
63
- strict_date_hour_minute_second_fraction: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ss.SSS", true),
64
- strict_date_hour_minute_second_millis: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ss.SSS", true),
65
- strict_date_optional_time: (date) => moment.utc(date, moment.ISO_8601, true),
66
- strict_date_time: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ss.SSSZZ", true),
67
- strict_date_time_no_millis: (date) => moment.utc(date, "YYYY-MM-DD\\THH:mm:ssZZ", true),
68
- strict_hour: (date) => moment.utc(date, "HH", true),
69
- strict_hour_minute: (date) => moment.utc(date, "HH:mm", true),
70
- strict_hour_minute_second: (date) => moment.utc(date, "HH:mm:ss", true),
71
- strict_hour_minute_second_fraction: (date) => moment.utc(date, "HH:mm:ss.SSS", true),
72
- strict_hour_minute_second_millis: (date) => moment.utc(date, "HH:mm:ss.SSS", true),
73
- strict_ordinal_date: (date) => moment.utc(date, "YYYY-DDD", true),
74
- strict_ordinal_date_time: (date) => moment.utc(date, "YYYY-DDD\\THH:mm:ss.SSSZZ", true),
75
- strict_ordinal_date_time_no_millis: (date) => moment.utc(date, "YYYY-DDD\\THH:mm:ssZZ", true),
76
- strict_t_time: (date) => moment.utc(date, "\\THH:mm:ss.SSSZZ", true),
77
- strict_t_time_no_millis: (date) => moment.utc(date, "\\THH:mm:ssZZ", true),
78
- strict_time: (date) => moment.utc(date, "HH:mm:ss.SSSZZ", true),
79
- strict_time_no_millis: (date) => moment.utc(date, "HH:mm:ssZZ", true),
80
- strict_week_date: (date) => moment.utc(date, "gggg-\\Www-e", true),
81
- strict_week_date_time: (date) => moment.utc(date, "gggg-\\Www-e\\THH:mm:ss.SSSZZ", true),
82
- strict_week_date_time_no_millis: (date) => moment.utc(date, "gggg-\\Www-e\\THH:mm:ssZZ", true),
83
- strict_weekyear: (date) => moment.utc(date, "gggg", true),
84
- strict_weekyear_week: (date) => moment.utc(date, "ggggww", true),
85
- strict_weekyear_week_day: (date) => moment.utc(date, "ggggwwe", true),
86
- strict_year: (date) => moment.utc(date, "YYYY", true),
87
- strict_year_month: (date) => moment.utc(date, "YYYYMM", true),
88
- strict_year_month_day: (date) => moment.utc(date, "YYYYMMDD", true),
89
- t_time: (date) => moment.utc(date, "\\THH:mm:ss.SSSZZ", false),
90
- t_time_no_millis: (date) => moment.utc(date, "\\THH:mm:ssZZ", false),
91
- time: (date) => moment.utc(date, "HH:mm:ss.SSSZZ", false),
92
- time_no_millis: (date) => moment.utc(date, "HH:mm:ssZZ", false),
93
- week_date: (date) => moment.utc(date, "gggg-\\Www-e", false),
94
- week_date_time: (date) => moment.utc(date, "gggg-\\Www-e\\THH:mm:ss.SSSZZ", false),
95
- week_date_time_no_millis: (date) => moment.utc(date, "gggg-\\Www-e\\THH:mm:ssZZ", false),
96
- weekyear: (date) => moment.utc(date, "gggg", false),
97
- weekyear_week: (date) => moment.utc(date, "ggggww", false),
98
- weekyear_week_day: (date) => moment.utc(date, "ggggwwe", false),
99
- year: (date) => moment.utc(date, "YYYY", false),
100
- year_month: (date) => moment.utc(date, "YYYYMM", false),
101
- year_month_day: (date) => moment.utc(date, "YYYYMMDD", false),
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 moment_1 = __importDefault(require("moment"));
49
+ const kerror = __importStar(require("../../../kerror"));
50
+ const safeObject_1 = require("../../../util/safeObject");
51
+ const baseType_1 = __importDefault(require("../baseType"));
52
+ const formatMap = {
53
+ basic_date: (date) => moment_1.default.utc(date, "YYYYMMDD", true),
54
+ basic_date_time: (date) => moment_1.default.utc(date, String.raw `YYYYMMDD\THHmmss.SSSZ`, true),
55
+ basic_date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `YYYYMMDD\THHmmssZ`, true),
56
+ basic_ordinal_date: (date) => moment_1.default.utc(date, "YYYYDDD", true),
57
+ basic_ordinal_date_time: (date) => moment_1.default.utc(date, String.raw `YYYYDDD\THHmmss.SSSZ`, true),
58
+ basic_ordinal_date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `YYYYDDD\THHmmssZ`, true),
59
+ basic_t_time: (date) => moment_1.default.utc(date, String.raw `\THHmmss.SSSZ`, true),
60
+ basic_t_time_no_millis: (date) => moment_1.default.utc(date, String.raw `\THHmmssZ`, true),
61
+ basic_time: (date) => moment_1.default.utc(date, "HHmmss.SSSZ", true),
62
+ basic_time_no_millis: (date) => moment_1.default.utc(date, "HHmmssZ", true),
63
+ basic_week_date: (date) => moment_1.default.utc(date, String.raw `gggg\Wwwe`, false),
64
+ basic_week_date_time: (date) => moment_1.default.utc(date, String.raw `gggg\Wwwe\THHmmss.SSSZ`, false),
65
+ basic_week_date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `gggg\Wwwe\THHmmssZ`, false),
66
+ date: (date) => moment_1.default.utc(date, "YYYY-MM-DD", false),
67
+ date_hour: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH`, false),
68
+ date_hour_minute: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm`, false),
69
+ date_hour_minute_second: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ss`, false),
70
+ date_hour_minute_second_fraction: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ss.SSS`, false),
71
+ date_hour_minute_second_millis: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ss.SSS`, false),
72
+ date_time: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ss.SSSZZ`, false),
73
+ date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ssZZ`, false),
74
+ epoch_millis: (date) => typeof date === "number" ? moment_1.default.utc(date) : moment_1.default.invalid(),
75
+ epoch_second: (date) => typeof date === "number" ? moment_1.default.utc(moment_1.default.unix(date)) : moment_1.default.invalid(),
76
+ hour: (date) => moment_1.default.utc(date, "HH", false),
77
+ hour_minute: (date) => moment_1.default.utc(date, "HH:mm", false),
78
+ hour_minute_second: (date) => moment_1.default.utc(date, "HH:mm:ss", false),
79
+ hour_minute_second_fraction: (date) => moment_1.default.utc(date, "HH:mm:ss.SSS", false),
80
+ hour_minute_second_millis: (date) => moment_1.default.utc(date, "HH:mm:ss.SSS", false),
81
+ ordinal_date: (date) => moment_1.default.utc(date, "YYYY-DDD", false),
82
+ ordinal_date_time: (date) => moment_1.default.utc(date, String.raw `YYYY-DDD\THH:mm:ss.SSSZZ`, false),
83
+ ordinal_date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `YYYY-DDD\THH:mm:ssZZ`, false),
84
+ strict_basic_week_date: (date) => moment_1.default.utc(date, String.raw `gggg\Wwwe`, true),
85
+ strict_basic_week_date_time: (date) => moment_1.default.utc(date, String.raw `gggg\Wwwe\THHmmss.SSSZ`, true),
86
+ strict_basic_week_date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `gggg\Wwwe\THHmmssZ`, true),
87
+ strict_date: (date) => moment_1.default.utc(date, "YYYY-MM-DD", true),
88
+ strict_date_hour: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH`, true),
89
+ strict_date_hour_minute: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm`, true),
90
+ strict_date_hour_minute_second: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ss`, true),
91
+ strict_date_hour_minute_second_fraction: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ss.SSS`, true),
92
+ strict_date_hour_minute_second_millis: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ss.SSS`, true),
93
+ strict_date_optional_time: (date) => moment_1.default.utc(date, moment_1.default.ISO_8601, true),
94
+ strict_date_time: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ss.SSSZZ`, true),
95
+ strict_date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `YYYY-MM-DD\THH:mm:ssZZ`, true),
96
+ strict_hour: (date) => moment_1.default.utc(date, "HH", true),
97
+ strict_hour_minute: (date) => moment_1.default.utc(date, "HH:mm", true),
98
+ strict_hour_minute_second: (date) => moment_1.default.utc(date, "HH:mm:ss", true),
99
+ strict_hour_minute_second_fraction: (date) => moment_1.default.utc(date, "HH:mm:ss.SSS", true),
100
+ strict_hour_minute_second_millis: (date) => moment_1.default.utc(date, "HH:mm:ss.SSS", true),
101
+ strict_ordinal_date: (date) => moment_1.default.utc(date, "YYYY-DDD", true),
102
+ strict_ordinal_date_time: (date) => moment_1.default.utc(date, String.raw `YYYY-DDD\THH:mm:ss.SSSZZ`, true),
103
+ strict_ordinal_date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `YYYY-DDD\THH:mm:ssZZ`, true),
104
+ strict_t_time: (date) => moment_1.default.utc(date, String.raw `\THH:mm:ss.SSSZZ`, true),
105
+ strict_t_time_no_millis: (date) => moment_1.default.utc(date, String.raw `\THH:mm:ssZZ`, true),
106
+ strict_time: (date) => moment_1.default.utc(date, "HH:mm:ss.SSSZZ", true),
107
+ strict_time_no_millis: (date) => moment_1.default.utc(date, "HH:mm:ssZZ", true),
108
+ strict_week_date: (date) => moment_1.default.utc(date, String.raw `gggg-\Www-e`, true),
109
+ strict_week_date_time: (date) => moment_1.default.utc(date, String.raw `gggg-\Www-e\THH:mm:ss.SSSZZ`, true),
110
+ strict_week_date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `gggg-\Www-e\THH:mm:ssZZ`, true),
111
+ strict_weekyear: (date) => moment_1.default.utc(date, "gggg", true),
112
+ strict_weekyear_week: (date) => moment_1.default.utc(date, "ggggww", true),
113
+ strict_weekyear_week_day: (date) => moment_1.default.utc(date, "ggggwwe", true),
114
+ strict_year: (date) => moment_1.default.utc(date, "YYYY", true),
115
+ strict_year_month: (date) => moment_1.default.utc(date, "YYYYMM", true),
116
+ strict_year_month_day: (date) => moment_1.default.utc(date, "YYYYMMDD", true),
117
+ t_time: (date) => moment_1.default.utc(date, String.raw `\THH:mm:ss.SSSZZ`, false),
118
+ t_time_no_millis: (date) => moment_1.default.utc(date, String.raw `\THH:mm:ssZZ`, false),
119
+ time: (date) => moment_1.default.utc(date, "HH:mm:ss.SSSZZ", false),
120
+ time_no_millis: (date) => moment_1.default.utc(date, "HH:mm:ssZZ", false),
121
+ week_date: (date) => moment_1.default.utc(date, String.raw `gggg-\Www-e`, false),
122
+ week_date_time: (date) => moment_1.default.utc(date, String.raw `gggg-\Www-e\THH:mm:ss.SSSZZ`, false),
123
+ week_date_time_no_millis: (date) => moment_1.default.utc(date, String.raw `gggg-\Www-e\THH:mm:ssZZ`, false),
124
+ weekyear: (date) => moment_1.default.utc(date, "gggg", false),
125
+ weekyear_week: (date) => moment_1.default.utc(date, "ggggww", false),
126
+ weekyear_week_day: (date) => moment_1.default.utc(date, "ggggwwe", false),
127
+ year: (date) => moment_1.default.utc(date, "YYYY", false),
128
+ year_month: (date) => moment_1.default.utc(date, "YYYYMM", false),
129
+ year_month_day: (date) => moment_1.default.utc(date, "YYYYMMDD", false),
102
130
  };
103
131
  const assertionError = kerror.wrap("validation", "assert"), typeError = kerror.wrap("validation", "types");
104
- /**
105
- * @class DateType
106
- */
107
- class DateType extends BaseType {
132
+ class DateType extends baseType_1.default {
108
133
  constructor() {
109
- super();
134
+ super(...arguments);
110
135
  this.typeName = "date";
111
136
  this.allowChildren = false;
112
137
  this.allowedTypeOptions = ["range", "formats"];
113
138
  }
114
- /**
115
- * @param {TypeOptions} typeOptions
116
- * @param {*} fieldValue
117
- * @param {string[]} errorMessages
118
- * @returns {boolean}
119
- */
120
139
  validate(typeOptions, fieldValue, errorMessages) {
121
- let momentDate = null;
122
- for (const formatOpt of typeOptions.formats) {
123
- momentDate = formatMap[formatOpt](fieldValue);
124
- if (momentDate.isValid()) {
125
- break;
126
- }
127
- }
128
- if (momentDate === null || !momentDate.isValid()) {
140
+ const momentDate = parseDate(typeOptions.formats ?? [], fieldValue);
141
+ if (!momentDate?.isValid()) {
129
142
  errorMessages.push("The date format is invalid.");
130
143
  return false;
131
144
  }
132
- if (isPlainObject(typeOptions.range)) {
133
- if (typeOptions.range.min) {
134
- const min = typeOptions.range.min === "NOW"
135
- ? moment.utc()
136
- : typeOptions.range.min;
137
- if (momentDate.isBefore(min)) {
138
- errorMessages.push("The provided date is before the defined minimum.");
139
- return false;
140
- }
141
- }
142
- if (typeOptions.range.max) {
143
- const max = typeOptions.range.max === "NOW"
144
- ? moment.utc()
145
- : typeOptions.range.max;
146
- if (max.isBefore(momentDate)) {
147
- errorMessages.push("The provided date is after the defined maximum.");
148
- return false;
149
- }
150
- }
145
+ const { range } = typeOptions;
146
+ if (!(0, safeObject_1.isPlainObject)(range)) {
147
+ return true;
151
148
  }
152
- return true;
149
+ return checkRange(momentDate, range, errorMessages);
150
+ }
151
+ /**
152
+ * Normalises the specification **in place**, as it always has — the caller's
153
+ * object is the one it answers — which is why the result is `Object.assign`ed
154
+ * onto it rather than built beside it.
155
+ *
156
+ * @throws {PreconditionError}
157
+ */
158
+ validateFieldSpecification(specification) {
159
+ const formats = validateFormats(specification);
160
+ const range = this.validateRange(specification);
161
+ return Object.assign(specification, range === undefined ? { formats } : { formats, range });
153
162
  }
154
163
  /**
155
- * @param {TypeOptions} typeOptions
156
- * @returns {TypeOptions}
164
+ * Converts `range`'s bounds, in place: each becomes a moment, except `NOW`,
165
+ * which is kept verbatim so that it resolves at validation time rather than
166
+ * at specification time.
167
+ *
157
168
  * @throws {PreconditionError}
158
169
  */
159
- validateFieldSpecification(typeOptions) {
160
- if (has(typeOptions, "formats")) {
161
- if (!Array.isArray(typeOptions.formats) ||
162
- typeOptions.formats.length === 0) {
163
- throw assertionError.get("invalid_type", "formats", "non-empty array");
164
- }
165
- const unrecognized = typeOptions.formats.filter((f) => !formatMap[f]);
166
- if (unrecognized.length > 0) {
167
- throw typeError.get("invalid_date_format", unrecognized.join(", "));
168
- }
170
+ validateRange(specification) {
171
+ if (!(0, safeObject_1.has)(specification, "range")) {
172
+ return undefined;
173
+ }
174
+ const { range } = specification;
175
+ if (!this.checkAllowedProperties(range, ["min", "max"])) {
176
+ throw assertionError.get("unexpected_properties", "range", "min, max");
177
+ }
178
+ const bounds = {};
179
+ let min = null, max = null;
180
+ if ((0, safeObject_1.has)(range, "min")) {
181
+ min = convertRangeValue(range.min);
182
+ bounds.min = range.min === "NOW" ? "NOW" : min;
183
+ }
184
+ if ((0, safeObject_1.has)(range, "max")) {
185
+ max = convertRangeValue(range.max);
186
+ bounds.max = range.max === "NOW" ? "NOW" : max;
187
+ }
188
+ if (min && max?.isBefore(min)) {
189
+ throw assertionError.get("invalid_range", "range", "min", "max");
169
190
  }
170
- else {
171
- typeOptions.formats = ["epoch_millis"];
191
+ return Object.assign(range, bounds);
192
+ }
193
+ }
194
+ /**
195
+ * Parses `fieldValue` with the first of `formats` that accepts it.
196
+ */
197
+ function parseDate(formats, fieldValue) {
198
+ let momentDate = null;
199
+ for (const formatOpt of formats) {
200
+ const parse = formatMap[formatOpt];
201
+ // unreachable: validateFieldSpecification rejects unknown formats
202
+ if (!parse) {
203
+ continue;
204
+ }
205
+ // `moment` is the one telling an unparseable value apart from a date
206
+ momentDate = parse(fieldValue);
207
+ if (momentDate.isValid()) {
208
+ break;
209
+ }
210
+ }
211
+ return momentDate;
212
+ }
213
+ function checkRange(momentDate, range, errorMessages) {
214
+ if (range.min) {
215
+ const min = range.min === "NOW" ? moment_1.default.utc() : range.min;
216
+ if (momentDate.isBefore(min)) {
217
+ errorMessages.push("The provided date is before the defined minimum.");
218
+ return false;
172
219
  }
173
- if (has(typeOptions, "range")) {
174
- let min = null, max = null;
175
- if (!this.checkAllowedProperties(typeOptions.range, ["min", "max"])) {
176
- throw assertionError.get("unexpected_properties", "range", "min, max");
177
- }
178
- if (has(typeOptions.range, "min")) {
179
- min = convertRangeValue("min", typeOptions.range.min);
180
- }
181
- if (has(typeOptions.range, "max")) {
182
- max = convertRangeValue("max", typeOptions.range.max);
183
- }
184
- if (min && max && max.isBefore(min)) {
185
- throw assertionError.get("invalid_range", "range", "min", "max");
186
- }
187
- // We want to keep NOW as a special value, else we would keep the time
188
- // of the launch
189
- if (min && typeOptions.range.min !== "NOW") {
190
- typeOptions.range.min = min;
191
- }
192
- if (max && typeOptions.range.max !== "NOW") {
193
- typeOptions.range.max = max;
194
- }
220
+ }
221
+ if (range.max) {
222
+ const max = range.max === "NOW" ? moment_1.default.utc() : range.max;
223
+ if (max.isBefore(momentDate)) {
224
+ errorMessages.push("The provided date is after the defined maximum.");
225
+ return false;
195
226
  }
196
- return typeOptions;
197
227
  }
228
+ return true;
229
+ }
230
+ /**
231
+ * Checks `formats`, defaulting it to `epoch_millis` when absent.
232
+ *
233
+ * @throws {PreconditionError}
234
+ */
235
+ function validateFormats(typeOptions) {
236
+ if (!(0, safeObject_1.has)(typeOptions, "formats")) {
237
+ typeOptions.formats = ["epoch_millis"];
238
+ return typeOptions.formats;
239
+ }
240
+ const { formats } = typeOptions;
241
+ if (!Array.isArray(formats) || formats.length === 0) {
242
+ throw assertionError.get("invalid_type", "formats", "non-empty array");
243
+ }
244
+ const unrecognized = formats.filter((f) => !formatMap[f]);
245
+ if (unrecognized.length > 0) {
246
+ throw typeError.get("invalid_date_format", unrecognized.join(", "));
247
+ }
248
+ return formats;
198
249
  }
199
- function convertRangeValue(name, value) {
250
+ function convertRangeValue(value) {
200
251
  let converted;
201
252
  if (typeof value === "string") {
202
253
  converted =
203
- value === "NOW" ? moment.utc() : moment.utc(value, moment.ISO_8601);
254
+ value === "NOW" ? moment_1.default.utc() : moment_1.default.utc(value, moment_1.default.ISO_8601);
204
255
  }
205
256
  else if (typeof value === "number") {
206
257
  // epoch or epoch-millis
207
- converted = moment.utc(value);
258
+ converted = moment_1.default.utc(value);
208
259
  }
209
- if (!converted || !converted.isValid()) {
260
+ if (!converted?.isValid()) {
210
261
  throw typeError.get("invalid_date", value);
211
262
  }
212
263
  return converted;
@@ -1,17 +1,13 @@
1
- export = EmailType;
2
- /**
3
- * @class EmailType
4
- */
5
- declare class EmailType extends BaseType {
1
+ import BaseType from "../baseType";
2
+ import type { NotEmptyTypeOptions } from "../typeOptions";
3
+ declare class EmailType extends BaseType<NotEmptyTypeOptions> {
6
4
  typeName: string;
7
5
  allowChildren: boolean;
8
6
  allowedTypeOptions: string[];
7
+ validate(typeOptions: NotEmptyTypeOptions, fieldValue: unknown, errorMessages: string[]): boolean;
9
8
  /**
10
- * @param {TypeOptions} typeOptions
11
- * @param {*} fieldValue
12
- * @param {string[]} errorMessages
13
- * @returns {boolean}
9
+ * @throws {PreconditionError}
14
10
  */
15
- validate(typeOptions: TypeOptions, fieldValue: any, errorMessages: string[]): boolean;
11
+ validateFieldSpecification(typeOptions: NotEmptyTypeOptions): NotEmptyTypeOptions;
16
12
  }
17
- import BaseType = require("../baseType");
13
+ export = EmailType;
@@ -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,21 @@
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 kerror = require("../../../kerror").wrap("validation", "assert"), BaseType = require("../baseType"), validator = require("validator");
23
- /**
24
- * @class EmailType
25
- */
26
- class EmailType extends BaseType {
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ const isEmail_1 = __importDefault(require("validator/lib/isEmail"));
26
+ const kerror_1 = require("../../../kerror");
27
+ const safeObject_1 = require("../../../util/safeObject");
28
+ const baseType_1 = __importDefault(require("../baseType"));
29
+ const kerror = (0, kerror_1.wrap)("validation", "assert");
30
+ class EmailType extends baseType_1.default {
27
31
  constructor() {
28
- super();
32
+ super(...arguments);
29
33
  this.typeName = "email";
30
34
  this.allowChildren = false;
31
35
  this.allowedTypeOptions = ["notEmpty"];
32
36
  }
33
- /**
34
- * @param {TypeOptions} typeOptions
35
- * @param {*} fieldValue
36
- * @param {string[]} errorMessages
37
- * @returns {boolean}
38
- */
39
37
  validate(typeOptions, fieldValue, errorMessages) {
40
38
  if (fieldValue === undefined || fieldValue === null) {
41
39
  if (typeOptions.notEmpty) {
@@ -55,19 +53,17 @@ class EmailType extends BaseType {
55
53
  }
56
54
  return true;
57
55
  }
58
- if (!validator.isEmail(fieldValue)) {
56
+ if (!(0, isEmail_1.default)(fieldValue)) {
59
57
  errorMessages.push("The string must be a valid email address.");
60
58
  return false;
61
59
  }
62
60
  return true;
63
61
  }
64
62
  /**
65
- * @param {TypeOptions} typeOptions
66
- * @returns {TypeOptions}
67
63
  * @throws {PreconditionError}
68
64
  */
69
65
  validateFieldSpecification(typeOptions) {
70
- if (!Object.prototype.hasOwnProperty.call(typeOptions, "notEmpty")) {
66
+ if (!(0, safeObject_1.has)(typeOptions, "notEmpty")) {
71
67
  typeOptions.notEmpty = false;
72
68
  }
73
69
  else if (typeof typeOptions.notEmpty !== "boolean") {
@@ -1,17 +1,13 @@
1
- export = EnumType;
2
- /**
3
- * @class EnumType
4
- */
5
- declare class EnumType extends BaseType {
1
+ import BaseType from "../baseType";
2
+ import type { EnumTypeOptions } from "../typeOptions";
3
+ declare class EnumType extends BaseType<EnumTypeOptions> {
6
4
  typeName: string;
7
5
  allowChildren: boolean;
8
6
  allowedTypeOptions: string[];
7
+ validate(typeOptions: EnumTypeOptions, fieldValue: unknown, errorMessages: string[]): boolean;
9
8
  /**
10
- * @param {TypeOptions} typeOptions
11
- * @param {*} fieldValue
12
- * @param {string[]} errorMessages
13
- * @returns {boolean}
9
+ * @throws {PreconditionError}
14
10
  */
15
- validate(typeOptions: TypeOptions, fieldValue: any, errorMessages: string[]): boolean;
11
+ validateFieldSpecification(typeOptions: EnumTypeOptions): EnumTypeOptions;
16
12
  }
17
- import BaseType = require("../baseType");
13
+ export = EnumType;
@@ -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,48 +19,66 @@
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 kerror = require("../../../kerror"), BaseType = require("../baseType");
23
- /**
24
- * @class EnumType
25
- */
26
- class EnumType extends BaseType {
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 kerror = __importStar(require("../../../kerror"));
49
+ const safeObject_1 = require("../../../util/safeObject");
50
+ const baseType_1 = __importDefault(require("../baseType"));
51
+ class EnumType extends baseType_1.default {
27
52
  constructor() {
28
- super();
53
+ super(...arguments);
29
54
  this.typeName = "enum";
30
55
  this.allowChildren = false;
31
56
  this.allowedTypeOptions = ["values"];
32
57
  }
33
- /**
34
- * @param {TypeOptions} typeOptions
35
- * @param {*} fieldValue
36
- * @param {string[]} errorMessages
37
- * @returns {boolean}
38
- */
39
58
  validate(typeOptions, fieldValue, errorMessages) {
40
59
  if (typeof fieldValue !== "string") {
41
60
  errorMessages.push("The field must be a string.");
42
61
  return false;
43
62
  }
44
- if (!typeOptions.values.includes(fieldValue)) {
45
- errorMessages.push(`The field only accepts following values: "${typeOptions.values.join(", ")}".`);
63
+ const values = typeOptions.values ?? [];
64
+ if (!values.includes(fieldValue)) {
65
+ errorMessages.push(`The field only accepts following values: "${values.join(", ")}".`);
46
66
  return false;
47
67
  }
48
68
  return true;
49
69
  }
50
70
  /**
51
- * @param {TypeOptions} typeOptions
52
- * @returns {TypeOptions}
53
71
  * @throws {PreconditionError}
54
72
  */
55
73
  validateFieldSpecification(typeOptions) {
56
- if (!Object.prototype.hasOwnProperty.call(typeOptions, "values")) {
74
+ if (!(0, safeObject_1.has)(typeOptions, "values")) {
57
75
  throw kerror.get("validation", "types", "missing_enum_values");
58
76
  }
59
- if (!Array.isArray(typeOptions.values) || typeOptions.values.length === 0) {
77
+ const { values } = typeOptions;
78
+ if (!Array.isArray(values) || values.length === 0) {
60
79
  throw kerror.get("validation", "assert", "invalid_type", "values", "string[]");
61
80
  }
62
- const nonString = typeOptions.values.filter((value) => typeof value !== "string");
81
+ const nonString = values.filter((value) => typeof value !== "string");
63
82
  if (nonString.length > 0) {
64
83
  throw kerror.get("validation", "assert", "invalid_type", "values", "string[]");
65
84
  }