kuzzle 2.56.0 → 2.57.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/dist/bin/copy-binaries.js +71 -4
  2. package/dist/bin/start-kuzzle-server +191 -97
  3. package/dist/index.d.ts +31 -1
  4. package/dist/index.js +45 -2
  5. package/dist/lib/api/controllers/adminController.d.ts +4 -3
  6. package/dist/lib/api/controllers/adminController.js +1 -2
  7. package/dist/lib/api/controllers/authController.d.ts +37 -16
  8. package/dist/lib/api/controllers/authController.js +88 -39
  9. package/dist/lib/api/controllers/baseController.d.ts +10 -5
  10. package/dist/lib/api/controllers/baseController.js +36 -15
  11. package/dist/lib/api/controllers/bulkController.d.ts +11 -7
  12. package/dist/lib/api/controllers/bulkController.js +28 -5
  13. package/dist/lib/api/controllers/clusterController.d.ts +2 -2
  14. package/dist/lib/api/controllers/clusterController.js +3 -3
  15. package/dist/lib/api/controllers/collectionController.d.ts +57 -21
  16. package/dist/lib/api/controllers/collectionController.js +40 -11
  17. package/dist/lib/api/controllers/debugController.d.ts +1 -1
  18. package/dist/lib/api/controllers/documentController.d.ts +137 -28
  19. package/dist/lib/api/controllers/documentController.js +156 -125
  20. package/dist/lib/api/controllers/index.d.ts +27 -12
  21. package/dist/lib/api/controllers/index.js +28 -13
  22. package/dist/lib/api/controllers/indexController.d.ts +17 -10
  23. package/dist/lib/api/controllers/indexController.js +13 -11
  24. package/dist/lib/api/controllers/memoryStorageController.d.ts +2 -5
  25. package/dist/lib/api/controllers/memoryStorageController.js +199 -127
  26. package/dist/lib/api/controllers/realtimeController.d.ts +19 -9
  27. package/dist/lib/api/controllers/realtimeController.js +8 -4
  28. package/dist/lib/api/controllers/securityController.d.ts +42 -29
  29. package/dist/lib/api/controllers/securityController.js +35 -19
  30. package/dist/lib/api/controllers/serverController.d.ts +114 -19
  31. package/dist/lib/api/controllers/serverController.js +69 -29
  32. package/dist/lib/api/documentExtractor.d.ts +9 -7
  33. package/dist/lib/api/documentExtractor.js +105 -41
  34. package/dist/lib/api/funnel.d.ts +131 -29
  35. package/dist/lib/api/funnel.js +436 -225
  36. package/dist/lib/api/httpRoutes.d.ts +16 -11
  37. package/dist/lib/api/httpRoutes.js +272 -2
  38. package/dist/lib/api/openapi/OpenApiManager.d.ts +1 -1
  39. package/dist/lib/api/openapi/openApiGenerator.d.ts +1 -1
  40. package/dist/lib/api/rateLimiter.d.ts +15 -5
  41. package/dist/lib/api/rateLimiter.js +42 -14
  42. package/dist/lib/api/request/kuzzleRequest.d.ts +83 -12
  43. package/dist/lib/api/request/kuzzleRequest.js +88 -23
  44. package/dist/lib/api/request/requestContext.d.ts +20 -5
  45. package/dist/lib/api/request/requestContext.js +14 -4
  46. package/dist/lib/api/request/requestInput.d.ts +37 -6
  47. package/dist/lib/api/request/requestInput.js +22 -9
  48. package/dist/lib/api/request/requestResponse.d.ts +45 -9
  49. package/dist/lib/api/request/requestResponse.js +34 -3
  50. package/dist/lib/cluster/command.d.ts +131 -37
  51. package/dist/lib/cluster/command.js +243 -71
  52. package/dist/lib/cluster/idCardHandler.d.ts +18 -5
  53. package/dist/lib/cluster/idCardHandler.js +52 -19
  54. package/dist/lib/cluster/index.d.ts +8 -2
  55. package/dist/lib/cluster/index.js +6 -2
  56. package/dist/lib/cluster/node.d.ts +127 -49
  57. package/dist/lib/cluster/node.js +412 -179
  58. package/dist/lib/cluster/protobuf/command.proto +18 -0
  59. package/dist/lib/cluster/protobuf/commandMessages.d.ts +104 -0
  60. package/dist/lib/cluster/protobuf/commandMessages.js +30 -0
  61. package/dist/lib/cluster/protobuf/syncMessages.d.ts +184 -0
  62. package/dist/lib/cluster/protobuf/syncMessages.js +23 -0
  63. package/dist/lib/cluster/publisher.d.ts +118 -78
  64. package/dist/lib/cluster/publisher.js +174 -72
  65. package/dist/lib/cluster/state.d.ts +15 -9
  66. package/dist/lib/cluster/state.js +12 -8
  67. package/dist/lib/cluster/subscriber.d.ts +185 -131
  68. package/dist/lib/cluster/subscriber.js +357 -95
  69. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +39 -8
  70. package/dist/lib/cluster/workers/IDCardRenewer.js +88 -23
  71. package/dist/lib/config/default.config.d.ts +2 -2
  72. package/dist/lib/config/default.config.js +10 -3
  73. package/dist/lib/config/documentEventAliases.d.ts +1 -1
  74. package/dist/lib/config/index.d.ts +2 -5
  75. package/dist/lib/config/index.js +30 -17
  76. package/dist/lib/core/auth/formatProcessing.d.ts +3 -3
  77. package/dist/lib/core/auth/passportResponse.d.ts +1 -1
  78. package/dist/lib/core/auth/passportWrapper.d.ts +1 -1
  79. package/dist/lib/core/auth/passportWrapper.js +14 -13
  80. package/dist/lib/core/auth/tokenManager.d.ts +24 -3
  81. package/dist/lib/core/auth/tokenManager.js +47 -19
  82. package/dist/lib/core/backend/applicationManager.d.ts +2 -2
  83. package/dist/lib/core/backend/backend.d.ts +16 -5
  84. package/dist/lib/core/backend/backend.js +14 -6
  85. package/dist/lib/core/backend/backendCluster.d.ts +1 -1
  86. package/dist/lib/core/backend/backendConfig.d.ts +17 -5
  87. package/dist/lib/core/backend/backendConfig.js +1 -0
  88. package/dist/lib/core/backend/backendController.d.ts +1 -1
  89. package/dist/lib/core/backend/backendController.js +8 -1
  90. package/dist/lib/core/backend/backendErrors.d.ts +15 -8
  91. package/dist/lib/core/backend/backendErrors.js +5 -0
  92. package/dist/lib/core/backend/backendHook.d.ts +1 -1
  93. package/dist/lib/core/backend/backendImport.d.ts +1 -1
  94. package/dist/lib/core/backend/backendOpenApi.d.ts +3 -2
  95. package/dist/lib/core/backend/backendPipe.d.ts +1 -1
  96. package/dist/lib/core/backend/backendPipe.js +9 -1
  97. package/dist/lib/core/backend/backendPlugin.d.ts +2 -2
  98. package/dist/lib/core/backend/backendSubscription.d.ts +2 -2
  99. package/dist/lib/core/backend/backendVault.d.ts +1 -1
  100. package/dist/lib/core/backend/backendVault.js +8 -1
  101. package/dist/lib/core/cache/cacheEngine.d.ts +7 -4
  102. package/dist/lib/core/cache/cacheEngine.js +25 -8
  103. package/dist/lib/core/debug/kuzzleDebugger.d.ts +2 -1
  104. package/dist/lib/core/debug/kuzzleDebugger.js +31 -17
  105. package/dist/lib/core/network/accessLogger.d.ts +33 -18
  106. package/dist/lib/core/network/accessLogger.js +135 -73
  107. package/dist/lib/core/network/clientConnection.d.ts +13 -11
  108. package/dist/lib/core/network/clientConnection.js +33 -9
  109. package/dist/lib/core/network/context.d.ts +17 -22
  110. package/dist/lib/core/network/context.js +43 -26
  111. package/dist/lib/core/network/entryPoint.d.ts +38 -16
  112. package/dist/lib/core/network/entryPoint.js +119 -48
  113. package/dist/lib/core/network/httpRouter/index.d.ts +20 -50
  114. package/dist/lib/core/network/httpRouter/index.js +61 -75
  115. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +17 -32
  116. package/dist/lib/core/network/httpRouter/routeHandler.js +26 -36
  117. package/dist/lib/core/network/httpRouter/routePart.d.ts +9 -18
  118. package/dist/lib/core/network/httpRouter/routePart.js +61 -43
  119. package/dist/lib/core/network/httpRouter/routeTypes.d.ts +3 -0
  120. package/dist/lib/core/network/httpRouter/routeTypes.js +23 -0
  121. package/dist/lib/core/network/networkEntryPoint.d.ts +20 -0
  122. package/dist/lib/core/network/networkEntryPoint.js +23 -0
  123. package/dist/lib/core/network/protocolManifest.d.ts +5 -4
  124. package/dist/lib/core/network/protocolManifest.js +6 -3
  125. package/dist/lib/core/network/protocols/httpMessage.d.ts +25 -18
  126. package/dist/lib/core/network/protocols/httpMessage.js +14 -11
  127. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +84 -93
  128. package/dist/lib/core/network/protocols/httpwsProtocol.js +284 -129
  129. package/dist/lib/core/network/protocols/internalProtocol.d.ts +26 -15
  130. package/dist/lib/core/network/protocols/internalProtocol.js +17 -16
  131. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +56 -32
  132. package/dist/lib/core/network/protocols/mqttProtocol.js +91 -44
  133. package/dist/lib/core/network/protocols/protocol.d.ts +85 -21
  134. package/dist/lib/core/network/protocols/protocol.js +83 -27
  135. package/dist/lib/core/network/router.d.ts +13 -22
  136. package/dist/lib/core/network/router.js +59 -46
  137. package/dist/lib/core/plugin/plugin.d.ts +57 -51
  138. package/dist/lib/core/plugin/plugin.js +218 -103
  139. package/dist/lib/core/plugin/pluginContext.d.ts +54 -11
  140. package/dist/lib/core/plugin/pluginContext.js +99 -58
  141. package/dist/lib/core/plugin/pluginManifest.d.ts +6 -2
  142. package/dist/lib/core/plugin/pluginManifest.js +18 -11
  143. package/dist/lib/core/plugin/pluginRepository.d.ts +35 -44
  144. package/dist/lib/core/plugin/pluginRepository.js +35 -50
  145. package/dist/lib/core/plugin/pluginsManager.d.ts +128 -46
  146. package/dist/lib/core/plugin/pluginsManager.js +468 -231
  147. package/dist/lib/core/plugin/privilegedContext.d.ts +4 -9
  148. package/dist/lib/core/plugin/privilegedContext.js +5 -10
  149. package/dist/lib/core/realtime/actionEnum.d.ts +12 -21
  150. package/dist/lib/core/realtime/actionEnum.js +6 -7
  151. package/dist/lib/core/realtime/channel.d.ts +11 -5
  152. package/dist/lib/core/realtime/channel.js +17 -2
  153. package/dist/lib/core/realtime/connectionRooms.d.ts +2 -2
  154. package/dist/lib/core/realtime/hotelClerk.d.ts +12 -6
  155. package/dist/lib/core/realtime/hotelClerk.js +29 -11
  156. package/dist/lib/core/realtime/index.d.ts +8 -3
  157. package/dist/lib/core/realtime/index.js +12 -5
  158. package/dist/lib/core/realtime/notification/document.d.ts +54 -25
  159. package/dist/lib/core/realtime/notification/document.js +10 -13
  160. package/dist/lib/core/realtime/notification/index.d.ts +9 -3
  161. package/dist/lib/core/realtime/notification/index.js +10 -4
  162. package/dist/lib/core/realtime/notification/server.d.ts +7 -10
  163. package/dist/lib/core/realtime/notification/server.js +4 -7
  164. package/dist/lib/core/realtime/notification/user.d.ts +45 -21
  165. package/dist/lib/core/realtime/notification/user.js +8 -9
  166. package/dist/lib/core/realtime/notifier.d.ts +52 -40
  167. package/dist/lib/core/realtime/notifier.js +60 -25
  168. package/dist/lib/core/realtime/room.d.ts +1 -1
  169. package/dist/lib/core/realtime/subscription.d.ts +11 -6
  170. package/dist/lib/core/realtime/subscription.js +5 -1
  171. package/dist/lib/core/security/index.d.ts +14 -6
  172. package/dist/lib/core/security/index.js +27 -13
  173. package/dist/lib/core/security/profileRepository.d.ts +24 -19
  174. package/dist/lib/core/security/profileRepository.js +23 -10
  175. package/dist/lib/core/security/roleRepository.d.ts +60 -23
  176. package/dist/lib/core/security/roleRepository.js +122 -53
  177. package/dist/lib/core/security/securityLoader.d.ts +33 -18
  178. package/dist/lib/core/security/securityLoader.js +43 -16
  179. package/dist/lib/core/security/tokenRepository.d.ts +21 -7
  180. package/dist/lib/core/security/tokenRepository.js +50 -23
  181. package/dist/lib/core/security/userRepository.d.ts +44 -21
  182. package/dist/lib/core/security/userRepository.js +59 -19
  183. package/dist/lib/core/shared/KoncordeWrapper.d.ts +1 -1
  184. package/dist/lib/core/shared/ObjectRepository.d.ts +80 -18
  185. package/dist/lib/core/shared/ObjectRepository.js +57 -29
  186. package/dist/lib/core/shared/abstractManifest.d.ts +21 -8
  187. package/dist/lib/core/shared/abstractManifest.js +57 -17
  188. package/dist/lib/core/shared/sdk/embeddedSdk.d.ts +3 -1
  189. package/dist/lib/core/shared/sdk/embeddedSdk.js +8 -7
  190. package/dist/lib/core/shared/sdk/funnelProtocol.d.ts +2 -1
  191. package/dist/lib/core/shared/sdk/funnelProtocol.js +12 -3
  192. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +11 -5
  193. package/dist/lib/core/shared/sdk/impersonatedSdk.js +22 -9
  194. package/dist/lib/core/shared/store.d.ts +45 -29
  195. package/dist/lib/core/shared/store.js +48 -27
  196. package/dist/lib/core/statistics/statistics.d.ts +1 -1
  197. package/dist/lib/core/storage/clientAdapter.d.ts +39 -21
  198. package/dist/lib/core/storage/clientAdapter.js +88 -48
  199. package/dist/lib/core/storage/indexCache.d.ts +8 -0
  200. package/dist/lib/core/storage/indexCache.js +16 -7
  201. package/dist/lib/core/storage/storageEngine.d.ts +7 -6
  202. package/dist/lib/core/storage/storageEngine.js +11 -8
  203. package/dist/lib/core/validation/baseType.d.ts +22 -22
  204. package/dist/lib/core/validation/baseType.js +11 -26
  205. package/dist/lib/core/validation/specification.d.ts +148 -0
  206. package/dist/lib/core/validation/specification.js +34 -0
  207. package/dist/lib/core/validation/typeOptions.d.ts +62 -0
  208. package/dist/lib/core/validation/typeOptions.js +23 -0
  209. package/dist/lib/core/validation/types/anything.d.ts +3 -6
  210. package/dist/lib/core/validation/types/anything.js +7 -7
  211. package/dist/lib/core/validation/types/boolean.d.ts +5 -12
  212. package/dist/lib/core/validation/types/boolean.js +7 -12
  213. package/dist/lib/core/validation/types/date.d.ts +19 -11
  214. package/dist/lib/core/validation/types/date.js +212 -161
  215. package/dist/lib/core/validation/types/email.d.ts +7 -11
  216. package/dist/lib/core/validation/types/email.js +13 -17
  217. package/dist/lib/core/validation/types/enum.d.ts +7 -11
  218. package/dist/lib/core/validation/types/enum.js +39 -20
  219. package/dist/lib/core/validation/types/geoPoint.d.ts +5 -13
  220. package/dist/lib/core/validation/types/geoPoint.js +10 -15
  221. package/dist/lib/core/validation/types/geoShape.d.ts +22 -21
  222. package/dist/lib/core/validation/types/geoShape.js +113 -129
  223. package/dist/lib/core/validation/types/geoShapeUtils.d.ts +15 -0
  224. package/dist/lib/core/validation/types/geoShapeUtils.js +75 -0
  225. package/dist/lib/core/validation/types/integer.d.ts +7 -5
  226. package/dist/lib/core/validation/types/integer.js +7 -13
  227. package/dist/lib/core/validation/types/ipAddress.d.ts +7 -11
  228. package/dist/lib/core/validation/types/ipAddress.js +13 -17
  229. package/dist/lib/core/validation/types/numeric.d.ts +7 -11
  230. package/dist/lib/core/validation/types/numeric.js +22 -29
  231. package/dist/lib/core/validation/types/object.d.ts +8 -15
  232. package/dist/lib/core/validation/types/object.js +12 -21
  233. package/dist/lib/core/validation/types/string.d.ts +7 -11
  234. package/dist/lib/core/validation/types/string.js +22 -29
  235. package/dist/lib/core/validation/types/url.d.ts +7 -11
  236. package/dist/lib/core/validation/types/url.js +14 -18
  237. package/dist/lib/core/validation/validation.d.ts +119 -80
  238. package/dist/lib/core/validation/validation.js +470 -412
  239. package/dist/lib/core/validation/validationUtils.d.ts +31 -0
  240. package/dist/lib/core/validation/validationUtils.js +190 -0
  241. package/dist/lib/kerror/codes/4-plugin.json +0 -12
  242. package/dist/lib/kerror/codes/index.d.ts +12 -2
  243. package/dist/lib/kerror/codes/index.js +5 -4
  244. package/dist/lib/kerror/errors/badRequestError.d.ts +1 -1
  245. package/dist/lib/kerror/errors/badRequestError.js +1 -1
  246. package/dist/lib/kerror/errors/externalServiceError.d.ts +1 -1
  247. package/dist/lib/kerror/errors/externalServiceError.js +1 -1
  248. package/dist/lib/kerror/errors/forbiddenError.d.ts +1 -1
  249. package/dist/lib/kerror/errors/forbiddenError.js +1 -1
  250. package/dist/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
  251. package/dist/lib/kerror/errors/gatewayTimeoutError.js +1 -1
  252. package/dist/lib/kerror/errors/internalError.d.ts +1 -1
  253. package/dist/lib/kerror/errors/internalError.js +1 -1
  254. package/dist/lib/kerror/errors/kuzzleError.d.ts +32 -3
  255. package/dist/lib/kerror/errors/kuzzleError.js +21 -7
  256. package/dist/lib/kerror/errors/multipleErrorsError.d.ts +2 -2
  257. package/dist/lib/kerror/errors/multipleErrorsError.js +2 -2
  258. package/dist/lib/kerror/errors/notFoundError.d.ts +1 -1
  259. package/dist/lib/kerror/errors/notFoundError.js +1 -1
  260. package/dist/lib/kerror/errors/partialError.d.ts +8 -2
  261. package/dist/lib/kerror/errors/partialError.js +22 -9
  262. package/dist/lib/kerror/errors/pluginImplementationError.d.ts +9 -1
  263. package/dist/lib/kerror/errors/pluginImplementationError.js +9 -3
  264. package/dist/lib/kerror/errors/preconditionError.d.ts +1 -1
  265. package/dist/lib/kerror/errors/preconditionError.js +1 -1
  266. package/dist/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
  267. package/dist/lib/kerror/errors/serviceUnavailableError.js +1 -1
  268. package/dist/lib/kerror/errors/sizeLimitError.d.ts +1 -1
  269. package/dist/lib/kerror/errors/sizeLimitError.js +1 -1
  270. package/dist/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
  271. package/dist/lib/kerror/errors/tooManyRequestsError.js +1 -1
  272. package/dist/lib/kerror/errors/unauthorizedError.d.ts +1 -1
  273. package/dist/lib/kerror/errors/unauthorizedError.js +1 -1
  274. package/dist/lib/kerror/index.d.ts +19 -13
  275. package/dist/lib/kerror/index.js +60 -19
  276. package/dist/lib/kuzzle/Logger.d.ts +2 -2
  277. package/dist/lib/kuzzle/dumpGenerator.d.ts +12 -8
  278. package/dist/lib/kuzzle/dumpGenerator.js +130 -62
  279. package/dist/lib/kuzzle/event/KuzzleEventEmitter.d.ts +18 -9
  280. package/dist/lib/kuzzle/event/KuzzleEventEmitter.js +45 -18
  281. package/dist/lib/kuzzle/event/pipeRunner.d.ts +37 -16
  282. package/dist/lib/kuzzle/event/pipeRunner.js +73 -26
  283. package/dist/lib/kuzzle/event/waterfall.d.ts +11 -1
  284. package/dist/lib/kuzzle/event/waterfall.js +38 -13
  285. package/dist/lib/kuzzle/internalIndexHandler.d.ts +11 -174
  286. package/dist/lib/kuzzle/internalIndexHandler.js +58 -29
  287. package/dist/lib/kuzzle/kuzzle.d.ts +25 -10
  288. package/dist/lib/kuzzle/kuzzle.js +74 -17
  289. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +16 -12
  290. package/dist/lib/kuzzle/kuzzleStateEnum.js +5 -7
  291. package/dist/lib/kuzzle/vault.d.ts +5 -1
  292. package/dist/lib/kuzzle/vault.js +29 -17
  293. package/dist/lib/model/security/profile.d.ts +34 -5
  294. package/dist/lib/model/security/profile.js +6 -5
  295. package/dist/lib/model/security/rights.d.ts +12 -4
  296. package/dist/lib/model/security/rights.js +7 -6
  297. package/dist/lib/model/security/role.d.ts +8 -4
  298. package/dist/lib/model/security/role.js +12 -6
  299. package/dist/lib/model/security/token.d.ts +8 -0
  300. package/dist/lib/model/security/user.d.ts +8 -2
  301. package/dist/lib/model/security/user.js +7 -4
  302. package/dist/lib/model/storage/apiKey.d.ts +55 -26
  303. package/dist/lib/model/storage/apiKey.js +97 -24
  304. package/dist/lib/model/storage/baseModel.d.ts +77 -66
  305. package/dist/lib/model/storage/baseModel.js +21 -34
  306. package/dist/lib/service/cache/redis.d.ts +53 -36
  307. package/dist/lib/service/cache/redis.js +148 -71
  308. package/dist/lib/service/service.d.ts +14 -19
  309. package/dist/lib/service/service.js +41 -22
  310. package/dist/lib/service/storage/7/elasticsearch.d.ts +136 -93
  311. package/dist/lib/service/storage/7/elasticsearch.js +218 -165
  312. package/dist/lib/service/storage/7/esWrapper.d.ts +30 -13
  313. package/dist/lib/service/storage/7/esWrapper.js +58 -37
  314. package/dist/lib/service/storage/8/elasticsearch.d.ts +153 -119
  315. package/dist/lib/service/storage/8/elasticsearch.js +286 -213
  316. package/dist/lib/service/storage/8/esWrapper.d.ts +30 -13
  317. package/dist/lib/service/storage/8/esWrapper.js +59 -38
  318. package/dist/lib/service/storage/commons/queryTranslator.d.ts +3 -3
  319. package/dist/lib/service/storage/commons/queryTranslator.js +71 -35
  320. package/dist/lib/types/ApiRoute.d.ts +12 -0
  321. package/dist/lib/types/ApiRoute.js +23 -0
  322. package/dist/lib/types/ClientConnection.d.ts +1 -1
  323. package/dist/lib/types/EventHandler.d.ts +10 -0
  324. package/dist/lib/types/Global.d.ts +8 -3
  325. package/dist/lib/types/HttpMessage.d.ts +2 -2
  326. package/dist/lib/types/HttpStream.d.ts +1 -1
  327. package/dist/lib/types/HttpStream.js +3 -1
  328. package/dist/lib/types/JSONObject.d.ts +9 -0
  329. package/dist/lib/types/JSONObject.js +23 -0
  330. package/dist/lib/types/Kuzzle.d.ts +5 -3
  331. package/dist/lib/types/KuzzleDocument.d.ts +1 -1
  332. package/dist/lib/types/KuzzleWebSocket.d.ts +24 -0
  333. package/dist/lib/types/KuzzleWebSocket.js +23 -0
  334. package/dist/lib/types/OpenApiDefinition.d.ts +1 -1
  335. package/dist/lib/types/Plugin.d.ts +33 -8
  336. package/dist/lib/types/PluginInstance.d.ts +67 -0
  337. package/dist/lib/types/PluginInstance.js +23 -0
  338. package/dist/lib/types/Policy.d.ts +1 -1
  339. package/dist/lib/types/Target.d.ts +8 -0
  340. package/dist/lib/types/Token.d.ts +14 -2
  341. package/dist/lib/types/config/HttpConfiguration.d.ts +5 -0
  342. package/dist/lib/types/config/KuzzleConfiguration.d.ts +102 -1
  343. package/dist/lib/types/config/PluginsConfiguration.d.ts +3 -2
  344. package/dist/lib/types/config/SecurityConfiguration.d.ts +6 -2
  345. package/dist/lib/types/config/ServerConfiguration.d.ts +2 -2
  346. package/dist/lib/types/config/ServicesConfiguration.d.ts +1 -1
  347. package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.d.ts +131 -0
  348. package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.js +3 -0
  349. package/dist/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +2 -106
  350. package/dist/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +2 -26
  351. package/dist/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +3 -0
  352. package/dist/lib/types/controllers/Controller.d.ts +12 -3
  353. package/dist/lib/types/controllers/ControllerDefinition.d.ts +2 -2
  354. package/dist/lib/types/controllers/{adminControlller.type.js → adminController.type.js} +1 -1
  355. package/dist/lib/types/controllers/authController.type.d.ts +2 -2
  356. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -1
  357. package/dist/lib/types/errors/ErrorDomains.d.ts +1 -1
  358. package/dist/lib/types/events/EventGenericDocument.d.ts +10 -9
  359. package/dist/lib/types/events/EventProtocol.d.ts +4 -4
  360. package/dist/lib/types/index.d.ts +7 -0
  361. package/dist/lib/types/index.js +7 -0
  362. package/dist/lib/types/shared/StoreCollectionsDefinition.d.ts +1 -1
  363. package/dist/lib/types/storage/7/Elasticsearch.d.ts +62 -13
  364. package/dist/lib/types/storage/8/Elasticsearch.d.ts +62 -13
  365. package/dist/lib/util/Inflector.d.ts +4 -1
  366. package/dist/lib/util/Inflector.js +0 -3
  367. package/dist/lib/util/assertType.d.ts +24 -27
  368. package/dist/lib/util/assertType.js +28 -39
  369. package/dist/lib/util/async.js +19 -6
  370. package/dist/lib/util/asyncStore.js +1 -1
  371. package/dist/lib/util/bufferedPassThrough.d.ts +9 -0
  372. package/dist/lib/util/bufferedPassThrough.js +27 -13
  373. package/dist/lib/util/bytes.d.ts +1 -1
  374. package/dist/lib/util/bytes.js +6 -2
  375. package/dist/lib/util/debug.d.ts +3 -1
  376. package/dist/lib/util/debug.js +42 -10
  377. package/dist/lib/util/deprecate.d.ts +9 -1
  378. package/dist/lib/util/deprecate.js +10 -6
  379. package/dist/lib/util/didYouMean.d.ts +2 -1
  380. package/dist/lib/util/didYouMean.js +8 -4
  381. package/dist/lib/util/distributedLock.d.ts +56 -0
  382. package/dist/lib/util/distributedLock.js +166 -0
  383. package/dist/lib/util/dump-collection.d.ts +1 -1
  384. package/dist/lib/util/dump-collection.js +4 -5
  385. package/dist/lib/util/extractFields.d.ts +15 -11
  386. package/dist/lib/util/extractFields.js +8 -9
  387. package/dist/lib/util/koncordeCompat.d.ts +2 -2
  388. package/dist/lib/util/koncordeCompat.js +33 -0
  389. package/dist/lib/util/memoize.d.ts +7 -6
  390. package/dist/lib/util/memoize.js +3 -3
  391. package/dist/lib/util/mutex.d.ts +22 -2
  392. package/dist/lib/util/mutex.js +39 -1
  393. package/dist/lib/util/name-generator.js +14 -2
  394. package/dist/lib/util/promback.d.ts +20 -11
  395. package/dist/lib/util/promback.js +14 -7
  396. package/dist/lib/util/requestAssertions.d.ts +30 -10
  397. package/dist/lib/util/requestAssertions.js +125 -121
  398. package/dist/lib/util/safeObject.d.ts +3 -3
  399. package/dist/lib/util/safeObject.js +7 -3
  400. package/dist/lib/util/stackTrace.d.ts +13 -5
  401. package/dist/lib/util/stackTrace.js +17 -12
  402. package/dist/lib/util/thrown.d.ts +13 -0
  403. package/dist/lib/util/thrown.js +46 -0
  404. package/dist/package.json +26 -19
  405. package/package.json +26 -19
  406. package/dist/lib/util/wildcard.d.ts +0 -1
  407. package/dist/lib/util/wildcard.js +0 -46
  408. /package/dist/lib/types/controllers/{adminControlller.type.d.ts → adminController.type.d.ts} +0 -0
@@ -1,17 +1,9 @@
1
- export = GeoPointType;
2
- /**
3
- * @class GeoPointType
4
- */
1
+ import BaseType from "../baseType";
2
+ import type { TypeOptions } from "../typeOptions";
5
3
  declare class GeoPointType extends BaseType {
6
4
  typeName: string;
7
5
  allowChildren: boolean;
8
- allowedTypeOptions: any[];
9
- /**
10
- * @param {TypeOptions} typeOptions
11
- * @param {*} fieldValue
12
- * @param {string[]} errorMessages
13
- * @returns {boolean}
14
- */
15
- validate(typeOptions: TypeOptions, fieldValue: any, errorMessages: string[]): boolean;
6
+ allowedTypeOptions: string[];
7
+ validate(typeOptions: TypeOptions, fieldValue: unknown, errorMessages: string[]): boolean;
16
8
  }
17
- import BaseType = require("../baseType");
9
+ export = GeoPointType;
@@ -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,27 +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 BaseType = require("../baseType");
23
- const { Koncorde } = require("../../shared/KoncordeWrapper");
24
- /**
25
- * @class GeoPointType
26
- */
27
- class GeoPointType extends BaseType {
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ const KoncordeWrapper_1 = require("../../shared/KoncordeWrapper");
26
+ const baseType_1 = __importDefault(require("../baseType"));
27
+ class GeoPointType extends baseType_1.default {
28
28
  constructor() {
29
- super();
29
+ super(...arguments);
30
30
  this.typeName = "geo_point";
31
31
  this.allowChildren = false;
32
32
  this.allowedTypeOptions = [];
33
33
  }
34
- /**
35
- * @param {TypeOptions} typeOptions
36
- * @param {*} fieldValue
37
- * @param {string[]} errorMessages
38
- * @returns {boolean}
39
- */
40
34
  validate(typeOptions, fieldValue, errorMessages) {
41
- if (Koncorde.convertGeopoint(fieldValue) === null) {
35
+ // `convertGeopoint` is the one telling a geopoint apart from anything else
36
+ if (KoncordeWrapper_1.Koncorde.convertGeopoint(fieldValue) === null) {
42
37
  errorMessages.push("Invalid GeoPoint format");
43
38
  return false;
44
39
  }
@@ -1,31 +1,32 @@
1
- export = GeoShapeType;
1
+ import BaseType from "../baseType";
2
+ import type { GeoShapeTypeOptions } from "../typeOptions";
2
3
  /**
3
- * @class GeoShapeType
4
+ * A GeoJSON-like shape, as the user submits it: nothing but `type` can be
5
+ * assumed to be there, which is what `checkStructure` is for.
4
6
  */
5
- declare class GeoShapeType extends BaseType {
7
+ interface GeoShape {
8
+ type?: string;
9
+ coordinates?: unknown[];
10
+ radius?: string | number;
11
+ orientation?: string;
12
+ geometries?: GeoShape[];
13
+ }
14
+ declare class GeoShapeType extends BaseType<GeoShapeTypeOptions> {
6
15
  typeName: string;
7
16
  allowChildren: boolean;
8
17
  allowedTypeOptions: string[];
18
+ validate(typeOptions: GeoShapeTypeOptions, fieldValue: GeoShape, errorMessages: string[]): boolean;
19
+ recursiveShapeValidation(allowedShapes: string[], shape: GeoShape, errorMessages: string[]): boolean;
20
+ private checkGeometries;
21
+ checkStructure(allowedShapes: string[], shape: GeoShape, errorMessages: string[]): boolean;
22
+ private checkShapeType;
9
23
  /**
10
- * @param {TypeOptions} typeOptions
11
- * @param {GeoShape} fieldValue
12
- * @param {string[]} errorMessages
13
- * @returns {boolean}
14
- */
15
- validate(typeOptions: TypeOptions, fieldValue: GeoShape, errorMessages: string[]): boolean;
16
- /**
17
- * @param {string[]} allowedShapes
18
- * @param {GeoShape} shape
19
- * @param {string[]} errorMessages
20
- * @returns {boolean}
24
+ * Checks the properties each shape type does and does not accept.
21
25
  */
22
- recursiveShapeValidation(allowedShapes: string[], shape: GeoShape, errorMessages: string[]): boolean;
26
+ private checkShapeProperties;
23
27
  /**
24
- * @param {string[]} allowedShapes
25
- * @param {GeoShape} shape
26
- * @param {string[]} errorMessages
27
- * @returns {boolean}
28
+ * @throws {PreconditionError}
28
29
  */
29
- checkStructure(allowedShapes: string[], shape: GeoShape, errorMessages: string[]): boolean;
30
+ validateFieldSpecification(typeOptions: GeoShapeTypeOptions): GeoShapeTypeOptions;
30
31
  }
31
- import BaseType = require("../baseType");
32
+ export = GeoShapeType;
@@ -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,51 @@
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 { Koncorde } = require("koncorde");
23
- const kerror = require("../../../kerror");
24
- const BaseType = require("../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 koncorde_1 = require("koncorde");
49
+ const kerror = __importStar(require("../../../kerror"));
50
+ const safeObject_1 = require("../../../util/safeObject");
51
+ const baseType_1 = __importDefault(require("../baseType"));
52
+ const geoShapeUtils_1 = require("./geoShapeUtils");
25
53
  const allowedShapeProperties = [
26
54
  "type",
27
55
  "coordinates",
28
56
  "radius",
29
57
  "orientation",
30
58
  "geometries",
31
- ], allowedOrientations = [
59
+ ], allowedOrientations = new Set([
32
60
  "right",
33
61
  "ccw",
34
62
  "counterclockwise",
35
63
  "left",
36
64
  "cw",
37
65
  "clockwise",
38
- ], multiTypes = ["multipoint", "multilinestring", "multipolygon"], allowedShapeTypes = [
66
+ ]), multiTypes = new Set(["multipoint", "multilinestring", "multipolygon"]), allowedShapeTypes = [
39
67
  "point",
40
68
  "linestring",
41
69
  "polygon",
@@ -46,123 +74,98 @@ const allowedShapeProperties = [
46
74
  "envelope",
47
75
  "circle",
48
76
  ];
49
- /**
50
- * @class GeoShapeType
51
- */
52
- class GeoShapeType extends BaseType {
77
+ class GeoShapeType extends baseType_1.default {
53
78
  constructor() {
54
- super();
79
+ super(...arguments);
55
80
  this.typeName = "geo_shape";
56
81
  this.allowChildren = false;
57
82
  this.allowedTypeOptions = ["shapeTypes"];
58
83
  }
59
- /**
60
- * @param {TypeOptions} typeOptions
61
- * @param {GeoShape} fieldValue
62
- * @param {string[]} errorMessages
63
- * @returns {boolean}
64
- */
65
84
  validate(typeOptions, fieldValue, errorMessages) {
66
- return this.recursiveShapeValidation(typeOptions.shapeTypes, fieldValue, errorMessages);
85
+ return this.recursiveShapeValidation(typeOptions.shapeTypes ?? [], fieldValue, errorMessages);
67
86
  }
68
- /**
69
- * @param {string[]} allowedShapes
70
- * @param {GeoShape} shape
71
- * @param {string[]} errorMessages
72
- * @returns {boolean}
73
- */
74
87
  recursiveShapeValidation(allowedShapes, shape, errorMessages) {
75
88
  if (!this.checkStructure(allowedShapes, shape, errorMessages)) {
76
89
  return false;
77
90
  }
78
- const isMulti = multiTypes.indexOf(shape.type) !== -1;
79
- let coordinateValidation, result = true;
80
- switch (shape.type) {
91
+ // checkStructure has just proven these three are there; the defaults only
92
+ // exist to keep the destructuring total.
93
+ const { type = "", coordinates = [], geometries = [] } = shape;
94
+ const isMulti = multiTypes.has(type);
95
+ // the default also covers "geometrycollection", which holds no coordinates
96
+ // of its own, and the unreachable `default:` branch below
97
+ let coordinateValidation = () => true, result = true;
98
+ switch (type) {
81
99
  case "point":
82
100
  case "multipoint":
83
- coordinateValidation = isPoint;
101
+ coordinateValidation = geoShapeUtils_1.isPoint;
84
102
  break;
85
103
  case "linestring":
86
104
  case "multilinestring":
87
- coordinateValidation = isLine;
105
+ coordinateValidation = geoShapeUtils_1.isLine;
88
106
  break;
89
107
  case "polygon":
90
108
  case "multipolygon":
91
- coordinateValidation = isPolygon;
92
- if (shape.orientation &&
93
- !allowedOrientations.includes(shape.orientation)) {
94
- errorMessages.push("The orientation property has not a valid value.");
95
- result = false;
96
- }
109
+ coordinateValidation = geoShapeUtils_1.isPolygon;
110
+ result = checkOrientation(shape, errorMessages);
97
111
  break;
98
112
  case "geometrycollection":
99
- coordinateValidation = () => true;
100
- for (let i = 0; i < shape.geometries.length; i++) {
101
- if (!this.recursiveShapeValidation(allowedShapes, shape.geometries[i], errorMessages)) {
102
- result = false;
103
- }
104
- }
113
+ result = this.checkGeometries(allowedShapes, geometries, errorMessages);
105
114
  break;
106
115
  case "envelope":
107
- coordinateValidation = isEnvelope;
116
+ coordinateValidation = geoShapeUtils_1.isEnvelope;
108
117
  break;
109
118
  case "circle":
110
- coordinateValidation = isPoint;
111
- if (typeof shape.radius === "string") {
112
- try {
113
- if (typeof Koncorde.convertDistance(shape.radius) !== "number") {
114
- errorMessages.push("The radius property has not a valid format.");
115
- result = false;
116
- }
117
- }
118
- catch (error) {
119
- errorMessages.push("The radius property has not a valid format.");
120
- result = false;
121
- }
122
- }
123
- else if (typeof shape.radius !== "number") {
124
- errorMessages.push("The radius property has not a valid format.");
125
- result = false;
126
- }
119
+ coordinateValidation = geoShapeUtils_1.isPoint;
120
+ result = checkRadius(shape, errorMessages);
127
121
  break;
128
122
  default:
129
123
  // added to comply with sonarqube
130
124
  // but it's currently not possible to get here
131
- errorMessages.push(`Unrecognized shape: ${shape.type}`);
125
+ errorMessages.push(`Unrecognized shape: ${type}`);
132
126
  result = false;
133
127
  }
134
- if (isMulti) {
135
- if (shape.coordinates.some((coordinate) => !coordinateValidation(coordinate))) {
136
- errorMessages.push(`One of the shapes in the shape type "${shape.type}" has bad coordinates.`);
128
+ // evaluated before the `&&` so that its error message is pushed even when
129
+ // the switch has already invalidated the shape
130
+ const coordinatesOk = checkCoordinates(type, isMulti, coordinates, coordinateValidation, errorMessages);
131
+ return result && coordinatesOk;
132
+ }
133
+ checkGeometries(allowedShapes, geometries, errorMessages) {
134
+ let result = true;
135
+ for (const geometry of geometries) {
136
+ if (!this.recursiveShapeValidation(allowedShapes, geometry, errorMessages)) {
137
137
  result = false;
138
138
  }
139
139
  }
140
- else if (!coordinateValidation(shape.coordinates)) {
141
- errorMessages.push(`The shape type "${shape.type}" has bad coordinates.`);
142
- return false;
143
- }
144
140
  return result;
145
141
  }
146
- /**
147
- * @param {string[]} allowedShapes
148
- * @param {GeoShape} shape
149
- * @param {string[]} errorMessages
150
- * @returns {boolean}
151
- */
152
142
  checkStructure(allowedShapes, shape, errorMessages) {
153
- let result = true;
154
143
  if (!shape.type) {
155
144
  errorMessages.push("The shape object has no type defined.");
156
145
  return false;
157
146
  }
147
+ // every check pushes its own message, so none of them may be short-circuited
148
+ const typeOk = this.checkShapeType(allowedShapes, shape, shape.type, errorMessages);
149
+ const propertiesOk = this.checkShapeProperties(shape, errorMessages);
150
+ return typeOk && propertiesOk;
151
+ }
152
+ checkShapeType(allowedShapes, shape, type, errorMessages) {
153
+ let result = true;
158
154
  if (!this.checkAllowedProperties(shape, allowedShapeProperties)) {
159
155
  errorMessages.push("The shape object has a not allowed property.");
160
156
  result = false;
161
157
  }
162
- if (allowedShapes.indexOf(shape.type) === -1) {
158
+ if (!allowedShapes.includes(type)) {
163
159
  errorMessages.push("The provided shape type is not allowed.");
164
160
  result = false;
165
161
  }
162
+ return result;
163
+ }
164
+ /**
165
+ * Checks the properties each shape type does and does not accept.
166
+ */
167
+ checkShapeProperties(shape, errorMessages) {
168
+ let result = true;
166
169
  if (shape.type === "geometrycollection" && shape.coordinates) {
167
170
  errorMessages.push('The coordinates property must not be provided for the "geometrycollection" shape type.');
168
171
  result = false;
@@ -198,17 +201,15 @@ class GeoShapeType extends BaseType {
198
201
  return result;
199
202
  }
200
203
  /**
201
- * @param {TypeOptions} typeOptions
202
- * @returns {TypeOptions}
203
204
  * @throws {PreconditionError}
204
205
  */
205
206
  validateFieldSpecification(typeOptions) {
206
- if (Object.prototype.hasOwnProperty.call(typeOptions, "shapeTypes")) {
207
- if (!Array.isArray(typeOptions.shapeTypes) ||
208
- typeOptions.shapeTypes.length === 0) {
207
+ if ((0, safeObject_1.has)(typeOptions, "shapeTypes")) {
208
+ const { shapeTypes } = typeOptions;
209
+ if (!Array.isArray(shapeTypes) || shapeTypes.length === 0) {
209
210
  throw kerror.get("validation", "assert", "invalid_type", "shapeTypes", "string[]");
210
211
  }
211
- const invalid = typeOptions.shapeTypes.filter((shape) => !allowedShapeTypes.includes(shape));
212
+ const invalid = shapeTypes.filter((shape) => !allowedShapeTypes.includes(shape));
212
213
  if (invalid.length > 0) {
213
214
  throw kerror.get("validation", "types", "invalid_geoshape", invalid);
214
215
  }
@@ -219,62 +220,45 @@ class GeoShapeType extends BaseType {
219
220
  return typeOptions;
220
221
  }
221
222
  }
222
- /**
223
- * @param {GeoShapePointCoordinates} point
224
- * @returns {boolean}
225
- */
226
- function isPoint(point) {
227
- if (!Array.isArray(point) || point.length !== 2) {
223
+ function checkOrientation(shape, errorMessages) {
224
+ if (shape.orientation && !allowedOrientations.has(shape.orientation)) {
225
+ errorMessages.push("The orientation property has not a valid value.");
228
226
  return false;
229
227
  }
230
- return !(point[0] < -180 ||
231
- point[0] > 180 ||
232
- point[1] < -90 ||
233
- point[1] > 90);
234
- }
235
- /**
236
- * @param {GeoShapePointCoordinates} pointA
237
- * @param {GeoShapePointCoordinates} pointB
238
- * @returns {boolean}
239
- */
240
- function isPointEqual(pointA, pointB) {
241
- return pointA[0] === pointB[0] && pointA[1] === pointB[1];
228
+ return true;
242
229
  }
243
- /**
244
- * @param {GeoShapeLineCoordinates} line
245
- * @returns {boolean}
246
- */
247
- function isLine(line) {
248
- if (!Array.isArray(line) || line.length < 2) {
249
- return false;
230
+ function checkRadius(shape, errorMessages) {
231
+ let valid;
232
+ if (typeof shape.radius === "string") {
233
+ try {
234
+ valid = typeof koncorde_1.Koncorde.convertDistance(shape.radius) === "number";
235
+ }
236
+ catch {
237
+ // an unparseable distance is an invalid radius, like any other
238
+ valid = false;
239
+ }
250
240
  }
251
- return line.every((point) => isPoint(point));
252
- }
253
- /**
254
- * @param {GeoShapePolygonPart} polygonPart
255
- * @returns {boolean}
256
- */
257
- function isPolygonPart(polygonPart) {
258
- return (Array.isArray(polygonPart) &&
259
- polygonPart.length >= 4 &&
260
- isLine(polygonPart) &&
261
- isPointEqual(polygonPart[0], polygonPart[polygonPart.length - 1]));
262
- }
263
- /**
264
- * @param {GeoShapePolygon} polygon
265
- * @returns {boolean}
266
- */
267
- function isPolygon(polygon) {
268
- if (!Array.isArray(polygon)) {
269
- return false;
241
+ else {
242
+ valid = typeof shape.radius === "number";
270
243
  }
271
- return polygon.every((polygonPart) => isPolygonPart(polygonPart));
244
+ if (!valid) {
245
+ errorMessages.push("The radius property has not a valid format.");
246
+ }
247
+ return valid;
272
248
  }
273
- function isEnvelope(envelope) {
274
- if (!Array.isArray(envelope) || envelope.length !== 2) {
249
+ function checkCoordinates(type, isMulti, coordinates, coordinateValidation, errorMessages) {
250
+ if (isMulti) {
251
+ if (coordinates.some((coordinate) => !coordinateValidation(coordinate))) {
252
+ errorMessages.push(`One of the shapes in the shape type "${type}" has bad coordinates.`);
253
+ return false;
254
+ }
255
+ return true;
256
+ }
257
+ if (!coordinateValidation(coordinates)) {
258
+ errorMessages.push(`The shape type "${type}" has bad coordinates.`);
275
259
  return false;
276
260
  }
277
- return isPoint(envelope[0]) && isPoint(envelope[1]);
261
+ return true;
278
262
  }
279
263
  module.exports = GeoShapeType;
280
264
  //# sourceMappingURL=geoShape.js.map
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The coordinate predicates a GeoJSON-like shape is checked against.
3
+ *
4
+ * They are pure functions of a coordinate array, and they are the unit worth
5
+ * testing directly: `geoShape.ts` uses `export =`, which cannot carry named
6
+ * exports beside it, so the only way a spec could address them was `rewire`'s
7
+ * `__get__` — and, from there, `__set__` to replace them in the module that
8
+ * calls them (ADR-0001, step 13 L6g).
9
+ */
10
+ export declare function isPoint(point: unknown): boolean;
11
+ export declare function isPointEqual(pointA: unknown[], pointB: unknown[]): boolean;
12
+ export declare function isLine(line: unknown): boolean;
13
+ export declare function isPolygonPart(polygonPart: unknown): boolean;
14
+ export declare function isPolygon(polygon: unknown): boolean;
15
+ export declare function isEnvelope(envelope: unknown): boolean;
@@ -0,0 +1,75 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.isEnvelope = exports.isPolygon = exports.isPolygonPart = exports.isLine = exports.isPointEqual = exports.isPoint = void 0;
24
+ /**
25
+ * The coordinate predicates a GeoJSON-like shape is checked against.
26
+ *
27
+ * They are pure functions of a coordinate array, and they are the unit worth
28
+ * testing directly: `geoShape.ts` uses `export =`, which cannot carry named
29
+ * exports beside it, so the only way a spec could address them was `rewire`'s
30
+ * `__get__` — and, from there, `__set__` to replace them in the module that
31
+ * calls them (ADR-0001, step 13 L6g).
32
+ */
33
+ function isPoint(point) {
34
+ if (!Array.isArray(point) || point.length !== 2) {
35
+ return false;
36
+ }
37
+ return !(point[0] < -180 ||
38
+ point[0] > 180 ||
39
+ point[1] < -90 ||
40
+ point[1] > 90);
41
+ }
42
+ exports.isPoint = isPoint;
43
+ function isPointEqual(pointA, pointB) {
44
+ return pointA[0] === pointB[0] && pointA[1] === pointB[1];
45
+ }
46
+ exports.isPointEqual = isPointEqual;
47
+ function isLine(line) {
48
+ if (!Array.isArray(line) || line.length < 2) {
49
+ return false;
50
+ }
51
+ return line.every((point) => isPoint(point));
52
+ }
53
+ exports.isLine = isLine;
54
+ function isPolygonPart(polygonPart) {
55
+ return (Array.isArray(polygonPart) &&
56
+ polygonPart.length >= 4 &&
57
+ isLine(polygonPart) &&
58
+ isPointEqual(polygonPart[0], polygonPart.at(-1)));
59
+ }
60
+ exports.isPolygonPart = isPolygonPart;
61
+ function isPolygon(polygon) {
62
+ if (!Array.isArray(polygon)) {
63
+ return false;
64
+ }
65
+ return polygon.every((polygonPart) => isPolygonPart(polygonPart));
66
+ }
67
+ exports.isPolygon = isPolygon;
68
+ function isEnvelope(envelope) {
69
+ if (!Array.isArray(envelope) || envelope.length !== 2) {
70
+ return false;
71
+ }
72
+ return isPoint(envelope[0]) && isPoint(envelope[1]);
73
+ }
74
+ exports.isEnvelope = isEnvelope;
75
+ //# sourceMappingURL=geoShapeUtils.js.map
@@ -1,7 +1,9 @@
1
- export = IntegerType;
2
- /**
3
- * @class IntegerType
4
- */
1
+ import type { NumericTypeOptions } from "../typeOptions";
2
+ import Numeric from "./numeric";
5
3
  declare class IntegerType extends Numeric {
4
+ typeName: string;
5
+ allowChildren: boolean;
6
+ allowedTypeOptions: string[];
7
+ validate(typeOptions: NumericTypeOptions, fieldValue: unknown, errorMessages: string[]): boolean;
6
8
  }
7
- import Numeric = require("./numeric");
9
+ export = IntegerType;
@@ -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,17 @@
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 Numeric = require("./numeric");
23
- /**
24
- * @class IntegerType
25
- */
26
- class IntegerType extends Numeric {
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ const numeric_1 = __importDefault(require("./numeric"));
26
+ class IntegerType extends numeric_1.default {
27
27
  constructor() {
28
- super();
28
+ super(...arguments);
29
29
  this.typeName = "integer";
30
30
  this.allowChildren = false;
31
31
  this.allowedTypeOptions = ["range"];
32
32
  }
33
- /**
34
- * @param {TypeOptions} typeOptions
35
- * @param {*} fieldValue
36
- * @param {string[]} errorMessages
37
- * @returns {boolean}
38
- */
39
33
  validate(typeOptions, fieldValue, errorMessages) {
40
34
  if (!super.validate(typeOptions, fieldValue, errorMessages)) {
41
35
  return false;
@@ -1,17 +1,13 @@
1
- export = IpAddressType;
2
- /**
3
- * @class IpAddressType
4
- */
5
- declare class IpAddressType extends BaseType {
1
+ import BaseType from "../baseType";
2
+ import type { NotEmptyTypeOptions } from "../typeOptions";
3
+ declare class IpAddressType 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 = IpAddressType;