kuzzle 2.49.1 → 2.50.0-beta.3

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 (592) hide show
  1. package/dist/bin/check-node-version.js +11 -0
  2. package/dist/bin/copy-protobuf.js +17 -0
  3. package/dist/lib/api/controllers/adminController.d.ts +51 -0
  4. package/dist/lib/api/controllers/adminController.js +191 -0
  5. package/{lib → dist/lib}/api/controllers/authController.d.ts +20 -40
  6. package/{lib → dist/lib}/api/controllers/authController.js +23 -24
  7. package/dist/lib/api/controllers/bulkController.d.ts +46 -0
  8. package/dist/lib/api/controllers/bulkController.js +132 -0
  9. package/dist/lib/api/controllers/clusterController.d.ts +6 -0
  10. package/{lib → dist/lib}/api/controllers/clusterController.js +7 -11
  11. package/dist/lib/api/controllers/collectionController.d.ts +136 -0
  12. package/dist/lib/api/controllers/collectionController.js +356 -0
  13. package/dist/lib/api/controllers/documentController.d.ts +181 -0
  14. package/dist/lib/api/controllers/documentController.js +768 -0
  15. package/dist/lib/api/controllers/index.d.ts +12 -0
  16. package/{lib → dist/lib}/api/controllers/index.js +13 -14
  17. package/dist/lib/api/controllers/indexController.d.ts +65 -0
  18. package/dist/lib/api/controllers/indexController.js +139 -0
  19. package/dist/lib/api/controllers/memoryStorageController.d.ts +8 -0
  20. package/dist/lib/api/controllers/memoryStorageController.js +867 -0
  21. package/dist/lib/api/controllers/realtimeController.d.ts +47 -0
  22. package/dist/lib/api/controllers/realtimeController.js +128 -0
  23. package/dist/lib/api/controllers/securityController.d.ts +423 -0
  24. package/dist/lib/api/controllers/securityController.js +1139 -0
  25. package/dist/lib/api/controllers/serverController.d.ts +82 -0
  26. package/dist/lib/api/controllers/serverController.js +321 -0
  27. package/dist/lib/api/documentExtractor.d.ts +9 -0
  28. package/dist/lib/api/documentExtractor.js +274 -0
  29. package/dist/lib/api/funnel.d.ts +183 -0
  30. package/dist/lib/api/funnel.js +821 -0
  31. package/dist/lib/api/httpRoutes.d.ts +17 -0
  32. package/dist/lib/api/httpRoutes.js +1496 -0
  33. package/dist/lib/api/rateLimiter.d.ts +18 -0
  34. package/dist/lib/api/rateLimiter.js +74 -0
  35. package/{lib → dist/lib}/api/request/kuzzleRequest.d.ts +2 -2
  36. package/{lib → dist/lib}/api/request/requestContext.d.ts +2 -1
  37. package/dist/lib/cluster/command.d.ts +73 -0
  38. package/dist/lib/cluster/command.js +236 -0
  39. package/dist/lib/cluster/index.d.ts +2 -0
  40. package/{lib → dist/lib}/cluster/index.js +1 -2
  41. package/dist/lib/cluster/node.d.ts +278 -0
  42. package/dist/lib/cluster/node.js +876 -0
  43. package/dist/lib/cluster/publisher.d.ts +188 -0
  44. package/dist/lib/cluster/publisher.js +347 -0
  45. package/dist/lib/cluster/subscriber.d.ts +269 -0
  46. package/dist/lib/cluster/subscriber.js +555 -0
  47. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +13 -0
  48. package/dist/lib/cluster/workers/IDCardRenewer.js +120 -0
  49. package/{lib → dist/lib}/config/documentEventAliases.d.ts +1 -2
  50. package/dist/lib/config/index.d.ts +5 -0
  51. package/dist/lib/config/index.js +244 -0
  52. package/dist/lib/config/sdkCompatibility.json +9 -0
  53. package/dist/lib/core/auth/formatProcessing.d.ts +30 -0
  54. package/dist/lib/core/auth/formatProcessing.js +55 -0
  55. package/dist/lib/core/auth/passportResponse.d.ts +15 -0
  56. package/{lib → dist/lib}/core/auth/passportResponse.js +24 -30
  57. package/dist/lib/core/auth/passportWrapper.d.ts +28 -0
  58. package/dist/lib/core/auth/passportWrapper.js +126 -0
  59. package/{lib → dist/lib}/core/backend/backendConfig.js +2 -2
  60. package/{lib → dist/lib}/core/backend/backendErrors.js +9 -12
  61. package/dist/lib/core/cache/cacheEngine.d.ts +15 -0
  62. package/dist/lib/core/cache/cacheEngine.js +205 -0
  63. package/dist/lib/core/network/accessLogger.d.ts +29 -0
  64. package/dist/lib/core/network/accessLogger.js +250 -0
  65. package/dist/lib/core/network/clientConnection.d.ts +15 -0
  66. package/{lib → dist/lib}/core/network/clientConnection.js +17 -24
  67. package/dist/lib/core/network/context.d.ts +42 -0
  68. package/dist/lib/core/network/context.js +57 -0
  69. package/dist/lib/core/network/entryPoint.d.ts +62 -0
  70. package/dist/lib/core/network/entryPoint.js +261 -0
  71. package/dist/lib/core/network/httpRouter/index.d.ts +85 -0
  72. package/dist/lib/core/network/httpRouter/index.js +258 -0
  73. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +46 -0
  74. package/dist/lib/core/network/httpRouter/routeHandler.js +101 -0
  75. package/dist/lib/core/network/httpRouter/routePart.d.ts +35 -0
  76. package/dist/lib/core/network/httpRouter/routePart.js +117 -0
  77. package/dist/lib/core/network/protocolManifest.d.ts +6 -0
  78. package/{lib → dist/lib}/core/network/protocolManifest.js +5 -9
  79. package/dist/lib/core/network/protocols/httpMessage.d.ts +22 -0
  80. package/dist/lib/core/network/protocols/httpMessage.js +62 -0
  81. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +171 -0
  82. package/dist/lib/core/network/protocols/httpwsProtocol.js +921 -0
  83. package/dist/lib/core/network/protocols/internalProtocol.d.ts +27 -0
  84. package/dist/lib/core/network/protocols/internalProtocol.js +82 -0
  85. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +39 -0
  86. package/dist/lib/core/network/protocols/mqttProtocol.js +219 -0
  87. package/dist/lib/core/network/protocols/protocol.d.ts +26 -0
  88. package/dist/lib/core/network/protocols/protocol.js +74 -0
  89. package/dist/lib/core/network/router.d.ts +49 -0
  90. package/dist/lib/core/network/router.js +193 -0
  91. package/dist/lib/core/plugin/plugin.d.ts +56 -0
  92. package/dist/lib/core/plugin/plugin.js +282 -0
  93. package/{lib → dist/lib}/core/plugin/pluginContext.js +2 -2
  94. package/dist/lib/core/plugin/pluginManifest.d.ts +5 -0
  95. package/{lib → dist/lib}/core/plugin/pluginManifest.js +16 -27
  96. package/dist/lib/core/plugin/pluginRepository.d.ts +53 -0
  97. package/dist/lib/core/plugin/pluginRepository.js +112 -0
  98. package/dist/lib/core/plugin/pluginsManager.d.ts +190 -0
  99. package/dist/lib/core/plugin/pluginsManager.js +817 -0
  100. package/dist/lib/core/plugin/privilegedContext.d.ts +14 -0
  101. package/{lib → dist/lib}/core/plugin/privilegedContext.js +10 -14
  102. package/dist/lib/core/realtime/actionEnum.d.ts +25 -0
  103. package/{lib → dist/lib}/core/realtime/actionEnum.js +7 -10
  104. package/dist/lib/core/realtime/index.d.ts +8 -0
  105. package/{lib → dist/lib}/core/realtime/index.js +9 -13
  106. package/dist/lib/core/realtime/notification/document.d.ts +34 -0
  107. package/dist/lib/core/realtime/notification/document.js +98 -0
  108. package/dist/lib/core/realtime/notification/index.d.ts +3 -0
  109. package/{lib → dist/lib}/core/realtime/notification/index.js +4 -5
  110. package/dist/lib/core/realtime/notification/server.d.ts +17 -0
  111. package/{lib → dist/lib}/core/realtime/notification/server.js +8 -10
  112. package/dist/lib/core/realtime/notification/user.d.ts +29 -0
  113. package/dist/lib/core/realtime/notification/user.js +66 -0
  114. package/dist/lib/core/realtime/notifier.d.ts +171 -0
  115. package/dist/lib/core/realtime/notifier.js +405 -0
  116. package/dist/lib/core/security/index.d.ts +14 -0
  117. package/{lib → dist/lib}/core/security/index.js +15 -19
  118. package/dist/lib/core/security/roleRepository.d.ts +143 -0
  119. package/dist/lib/core/security/roleRepository.js +445 -0
  120. package/dist/lib/core/security/securityLoader.d.ts +24 -0
  121. package/dist/lib/core/security/securityLoader.js +125 -0
  122. package/{lib → dist/lib}/core/security/tokenRepository.js +1 -1
  123. package/dist/lib/core/security/userRepository.d.ts +81 -0
  124. package/dist/lib/core/security/userRepository.js +346 -0
  125. package/dist/lib/core/shared/abstractManifest.d.ts +27 -0
  126. package/dist/lib/core/shared/abstractManifest.js +85 -0
  127. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +7 -0
  128. package/dist/lib/core/shared/sdk/impersonatedSdk.js +80 -0
  129. package/{lib → dist/lib}/core/shared/store.d.ts +2 -2
  130. package/dist/lib/core/statistics/statistics.d.ts +94 -0
  131. package/dist/lib/core/statistics/statistics.js +287 -0
  132. package/dist/lib/core/storage/clientAdapter.d.ts +62 -0
  133. package/dist/lib/core/storage/clientAdapter.js +756 -0
  134. package/dist/lib/core/storage/storageEngine.d.ts +13 -0
  135. package/dist/lib/core/storage/storageEngine.js +52 -0
  136. package/dist/lib/core/validation/baseType.d.ts +35 -0
  137. package/dist/lib/core/validation/baseType.js +70 -0
  138. package/dist/lib/core/validation/types/anything.d.ts +10 -0
  139. package/{lib → dist/lib}/core/validation/types/anything.js +7 -10
  140. package/dist/lib/core/validation/types/boolean.d.ts +16 -0
  141. package/{lib → dist/lib}/core/validation/types/boolean.js +18 -23
  142. package/dist/lib/core/validation/types/date.d.ts +17 -0
  143. package/dist/lib/core/validation/types/date.js +215 -0
  144. package/dist/lib/core/validation/types/email.d.ts +17 -0
  145. package/dist/lib/core/validation/types/email.js +80 -0
  146. package/dist/lib/core/validation/types/enum.d.ts +17 -0
  147. package/dist/lib/core/validation/types/enum.js +70 -0
  148. package/dist/lib/core/validation/types/geoPoint.d.ts +17 -0
  149. package/{lib → dist/lib}/core/validation/types/geoPoint.js +19 -24
  150. package/dist/lib/core/validation/types/geoShape.d.ts +31 -0
  151. package/dist/lib/core/validation/types/geoShape.js +280 -0
  152. package/dist/lib/core/validation/types/integer.d.ts +7 -0
  153. package/{lib → dist/lib}/core/validation/types/integer.js +21 -27
  154. package/dist/lib/core/validation/types/ipAddress.d.ts +17 -0
  155. package/dist/lib/core/validation/types/ipAddress.js +73 -0
  156. package/dist/lib/core/validation/types/numeric.d.ts +17 -0
  157. package/dist/lib/core/validation/types/numeric.js +84 -0
  158. package/dist/lib/core/validation/types/object.d.ts +24 -0
  159. package/dist/lib/core/validation/types/object.js +74 -0
  160. package/dist/lib/core/validation/types/string.d.ts +17 -0
  161. package/dist/lib/core/validation/types/string.js +85 -0
  162. package/dist/lib/core/validation/types/url.d.ts +17 -0
  163. package/dist/lib/core/validation/types/url.js +73 -0
  164. package/dist/lib/core/validation/validation.d.ts +113 -0
  165. package/dist/lib/core/validation/validation.js +692 -0
  166. package/dist/lib/kerror/codes/0-core.json +194 -0
  167. package/dist/lib/kerror/codes/1-services.json +351 -0
  168. package/dist/lib/kerror/codes/2-api.json +195 -0
  169. package/dist/lib/kerror/codes/3-network.json +151 -0
  170. package/dist/lib/kerror/codes/4-plugin.json +498 -0
  171. package/dist/lib/kerror/codes/5-validation.json +158 -0
  172. package/dist/lib/kerror/codes/6-protocol.json +28 -0
  173. package/dist/lib/kerror/codes/7-security.json +283 -0
  174. package/dist/lib/kerror/codes/8-cluster.json +16 -0
  175. package/dist/lib/kerror/codes/index.d.ts +24 -0
  176. package/dist/lib/kerror/codes/index.js +140 -0
  177. package/{lib → dist/lib}/kerror/index.d.ts +5 -5
  178. package/{lib → dist/lib}/kuzzle/Logger.d.ts +6 -0
  179. package/{lib → dist/lib}/kuzzle/Logger.js +26 -5
  180. package/dist/lib/kuzzle/dumpGenerator.d.ts +14 -0
  181. package/dist/lib/kuzzle/dumpGenerator.js +180 -0
  182. package/dist/lib/kuzzle/event/pipeRunner.d.ts +30 -0
  183. package/dist/lib/kuzzle/event/pipeRunner.js +119 -0
  184. package/dist/lib/kuzzle/event/waterfall.d.ts +2 -0
  185. package/dist/lib/kuzzle/event/waterfall.js +90 -0
  186. package/dist/lib/kuzzle/internalIndexHandler.d.ts +186 -0
  187. package/dist/lib/kuzzle/internalIndexHandler.js +174 -0
  188. package/{lib → dist/lib}/kuzzle/kuzzle.d.ts +6 -7
  189. package/{lib → dist/lib}/kuzzle/kuzzle.js +5 -2
  190. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +20 -0
  191. package/{lib → dist/lib}/kuzzle/kuzzleStateEnum.js +5 -8
  192. package/dist/lib/kuzzle/vault.d.ts +2 -0
  193. package/dist/lib/kuzzle/vault.js +63 -0
  194. package/dist/lib/model/security/rights.d.ts +8 -0
  195. package/{lib → dist/lib}/model/security/rights.js +4 -8
  196. package/{lib → dist/lib}/model/security/role.d.ts +1 -1
  197. package/{lib → dist/lib}/model/security/user.d.ts +1 -0
  198. package/dist/lib/model/storage/apiKey.d.ts +49 -0
  199. package/dist/lib/model/storage/apiKey.js +126 -0
  200. package/dist/lib/model/storage/baseModel.d.ts +100 -0
  201. package/dist/lib/model/storage/baseModel.js +211 -0
  202. package/dist/lib/service/cache/redis.d.ts +74 -0
  203. package/dist/lib/service/cache/redis.js +237 -0
  204. package/dist/lib/service/service.d.ts +30 -0
  205. package/dist/lib/service/service.js +74 -0
  206. package/{lib → dist/lib}/service/storage/7/elasticsearch.d.ts +2 -2
  207. package/{lib → dist/lib}/service/storage/7/elasticsearch.js +23 -25
  208. package/dist/lib/service/storage/7/esWrapper.d.ts +19 -0
  209. package/dist/lib/service/storage/7/esWrapper.js +245 -0
  210. package/{lib → dist/lib}/service/storage/8/elasticsearch.js +23 -25
  211. package/dist/lib/service/storage/8/esWrapper.d.ts +19 -0
  212. package/dist/lib/service/storage/8/esWrapper.js +245 -0
  213. package/{lib → dist/lib}/types/Plugin.d.ts +1 -1
  214. package/{lib/types → dist/lib/types/controllers}/Controller.d.ts +2 -2
  215. package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.d.ts +1 -1
  216. package/dist/lib/types/controllers/adminControlller.type.d.ts +5 -0
  217. package/dist/lib/types/controllers/adminControlller.type.js +3 -0
  218. package/dist/lib/types/controllers/authController.type.d.ts +5 -0
  219. package/dist/lib/types/controllers/authController.type.js +3 -0
  220. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -0
  221. package/dist/lib/types/core/auth/formatProcessing.type.js +3 -0
  222. package/{lib → dist/lib}/types/index.d.ts +3 -3
  223. package/{lib → dist/lib}/types/index.js +3 -3
  224. package/dist/lib/util/assertType.d.ts +41 -0
  225. package/{lib → dist/lib}/util/assertType.js +38 -56
  226. package/dist/lib/util/asyncStore.d.ts +38 -0
  227. package/dist/lib/util/asyncStore.js +70 -0
  228. package/dist/lib/util/bytes.d.ts +2 -0
  229. package/dist/lib/util/bytes.js +33 -0
  230. package/dist/lib/util/debug.d.ts +2 -0
  231. package/{lib → dist/lib}/util/debug.js +15 -23
  232. package/dist/lib/util/deprecate.d.ts +1 -0
  233. package/dist/lib/util/deprecate.js +64 -0
  234. package/dist/lib/util/didYouMean.d.ts +2 -0
  235. package/{lib → dist/lib}/util/didYouMean.js +9 -15
  236. package/dist/lib/util/extractFields.d.ts +17 -0
  237. package/{lib → dist/lib}/util/extractFields.js +18 -32
  238. package/dist/lib/util/memoize.d.ts +7 -0
  239. package/{lib → dist/lib}/util/memoize.js +14 -21
  240. package/dist/lib/util/promback.d.ts +13 -0
  241. package/dist/lib/util/promback.js +60 -0
  242. package/dist/lib/util/requestAssertions.d.ts +10 -0
  243. package/dist/lib/util/requestAssertions.js +143 -0
  244. package/dist/lib/util/safeObject.d.ts +3 -0
  245. package/{lib → dist/lib}/util/safeObject.js +7 -13
  246. package/dist/lib/util/stackTrace.d.ts +19 -0
  247. package/{lib → dist/lib}/util/stackTrace.js +35 -41
  248. package/dist/lib/util/wildcard.d.ts +1 -0
  249. package/{lib → dist/lib}/util/wildcard.js +21 -30
  250. package/dist/package.json +120 -0
  251. package/package.json +45 -58
  252. package/bin/start-kuzzle-server +0 -126
  253. package/check-node-version.js +0 -17
  254. package/lib/api/controllers/adminController.js +0 -229
  255. package/lib/api/controllers/bulkController.js +0 -210
  256. package/lib/api/controllers/collectionController.js +0 -502
  257. package/lib/api/controllers/documentController.js +0 -1156
  258. package/lib/api/controllers/indexController.js +0 -179
  259. package/lib/api/controllers/memoryStorageController.js +0 -1023
  260. package/lib/api/controllers/realtimeController.js +0 -155
  261. package/lib/api/controllers/securityController.js +0 -1571
  262. package/lib/api/controllers/serverController.js +0 -381
  263. package/lib/api/documentExtractor.js +0 -309
  264. package/lib/api/funnel.js +0 -1143
  265. package/lib/api/httpRoutes.js +0 -1547
  266. package/lib/api/rateLimiter.js +0 -87
  267. package/lib/cluster/command.js +0 -284
  268. package/lib/cluster/node.js +0 -1203
  269. package/lib/cluster/publisher.js +0 -386
  270. package/lib/cluster/subscriber.js +0 -776
  271. package/lib/cluster/workers/IDCardRenewer.js +0 -144
  272. package/lib/config/index.js +0 -351
  273. package/lib/config/sdkCompatibility.json +0 -9
  274. package/lib/core/auth/formatProcessing.js +0 -66
  275. package/lib/core/auth/passportWrapper.js +0 -126
  276. package/lib/core/cache/cacheEngine.js +0 -278
  277. package/lib/core/network/accessLogger.js +0 -322
  278. package/lib/core/network/context.js +0 -80
  279. package/lib/core/network/entryPoint.js +0 -358
  280. package/lib/core/network/httpRouter/index.js +0 -316
  281. package/lib/core/network/httpRouter/routeHandler.js +0 -111
  282. package/lib/core/network/httpRouter/routePart.js +0 -147
  283. package/lib/core/network/protocols/httpMessage.js +0 -69
  284. package/lib/core/network/protocols/httpwsProtocol.js +0 -1254
  285. package/lib/core/network/protocols/internalProtocol.js +0 -109
  286. package/lib/core/network/protocols/mqttProtocol.js +0 -291
  287. package/lib/core/network/protocols/protocol.js +0 -102
  288. package/lib/core/network/router.js +0 -255
  289. package/lib/core/plugin/plugin.js +0 -436
  290. package/lib/core/plugin/pluginRepository.js +0 -132
  291. package/lib/core/plugin/pluginsManager.js +0 -1244
  292. package/lib/core/realtime/notification/document.js +0 -108
  293. package/lib/core/realtime/notification/user.js +0 -70
  294. package/lib/core/realtime/notifier.js +0 -541
  295. package/lib/core/security/README.md +0 -223
  296. package/lib/core/security/roleRepository.js +0 -569
  297. package/lib/core/security/securityLoader.js +0 -174
  298. package/lib/core/security/userRepository.js +0 -446
  299. package/lib/core/shared/README.md +0 -3
  300. package/lib/core/shared/abstractManifest.js +0 -102
  301. package/lib/core/shared/sdk/impersonatedSdk.js +0 -94
  302. package/lib/core/statistics/index.js +0 -24
  303. package/lib/core/statistics/statistics.js +0 -373
  304. package/lib/core/storage/clientAdapter.js +0 -1045
  305. package/lib/core/storage/storageEngine.js +0 -63
  306. package/lib/core/validation/baseType.js +0 -80
  307. package/lib/core/validation/index.js +0 -24
  308. package/lib/core/validation/types/date.js +0 -284
  309. package/lib/core/validation/types/email.js +0 -92
  310. package/lib/core/validation/types/enum.js +0 -100
  311. package/lib/core/validation/types/geoShape.js +0 -370
  312. package/lib/core/validation/types/ipAddress.js +0 -83
  313. package/lib/core/validation/types/numeric.js +0 -108
  314. package/lib/core/validation/types/object.js +0 -88
  315. package/lib/core/validation/types/string.js +0 -110
  316. package/lib/core/validation/types/url.js +0 -83
  317. package/lib/core/validation/validation.js +0 -1180
  318. package/lib/kerror/codes/0-core.json +0 -194
  319. package/lib/kerror/codes/1-services.json +0 -351
  320. package/lib/kerror/codes/2-api.json +0 -195
  321. package/lib/kerror/codes/3-network.json +0 -151
  322. package/lib/kerror/codes/4-plugin.json +0 -498
  323. package/lib/kerror/codes/5-validation.json +0 -158
  324. package/lib/kerror/codes/6-protocol.json +0 -28
  325. package/lib/kerror/codes/7-security.json +0 -283
  326. package/lib/kerror/codes/8-cluster.json +0 -16
  327. package/lib/kerror/codes/index.js +0 -208
  328. package/lib/kuzzle/dumpGenerator.js +0 -259
  329. package/lib/kuzzle/event/pipeRunner.js +0 -144
  330. package/lib/kuzzle/event/waterfall.js +0 -101
  331. package/lib/kuzzle/internalIndexHandler.js +0 -234
  332. package/lib/kuzzle/vault.js +0 -89
  333. package/lib/model/storage/apiKey.js +0 -158
  334. package/lib/model/storage/baseModel.js +0 -275
  335. package/lib/service/cache/redis.js +0 -282
  336. package/lib/service/service.js +0 -84
  337. package/lib/service/storage/7/esWrapper.js +0 -303
  338. package/lib/service/storage/8/esWrapper.js +0 -303
  339. package/lib/util/asyncStore.js +0 -112
  340. package/lib/util/bytes.js +0 -36
  341. package/lib/util/deprecate.js +0 -82
  342. package/lib/util/promback.js +0 -66
  343. package/lib/util/readYamlFile.d.ts +0 -2
  344. package/lib/util/readYamlFile.js +0 -10
  345. package/lib/util/requestAssertions.js +0 -157
  346. /package/{index.d.ts → dist/index.d.ts} +0 -0
  347. /package/{index.js → dist/index.js} +0 -0
  348. /package/{lib → dist/lib}/api/controllers/baseController.d.ts +0 -0
  349. /package/{lib → dist/lib}/api/controllers/baseController.js +0 -0
  350. /package/{lib → dist/lib}/api/controllers/debugController.d.ts +0 -0
  351. /package/{lib → dist/lib}/api/controllers/debugController.js +0 -0
  352. /package/{lib → dist/lib}/api/openapi/OpenApiManager.d.ts +0 -0
  353. /package/{lib → dist/lib}/api/openapi/OpenApiManager.js +0 -0
  354. /package/{lib → dist/lib}/api/openapi/index.d.ts +0 -0
  355. /package/{lib → dist/lib}/api/openapi/index.js +0 -0
  356. /package/{lib → dist/lib}/api/openapi/openApiGenerator.d.ts +0 -0
  357. /package/{lib → dist/lib}/api/openapi/openApiGenerator.js +0 -0
  358. /package/{lib → dist/lib}/api/request/index.d.ts +0 -0
  359. /package/{lib → dist/lib}/api/request/index.js +0 -0
  360. /package/{lib → dist/lib}/api/request/kuzzleRequest.js +0 -0
  361. /package/{lib → dist/lib}/api/request/requestContext.js +0 -0
  362. /package/{lib → dist/lib}/api/request/requestInput.d.ts +0 -0
  363. /package/{lib → dist/lib}/api/request/requestInput.js +0 -0
  364. /package/{lib → dist/lib}/api/request/requestResponse.d.ts +0 -0
  365. /package/{lib → dist/lib}/api/request/requestResponse.js +0 -0
  366. /package/{lib → dist/lib}/cluster/idCardHandler.d.ts +0 -0
  367. /package/{lib → dist/lib}/cluster/idCardHandler.js +0 -0
  368. /package/{lib → dist/lib}/cluster/protobuf/command.proto +0 -0
  369. /package/{lib → dist/lib}/cluster/protobuf/sync.proto +0 -0
  370. /package/{lib → dist/lib}/cluster/state.d.ts +0 -0
  371. /package/{lib → dist/lib}/cluster/state.js +0 -0
  372. /package/{lib → dist/lib}/config/default.config.d.ts +0 -0
  373. /package/{lib → dist/lib}/config/default.config.js +0 -0
  374. /package/{lib → dist/lib}/config/documentEventAliases.js +0 -0
  375. /package/{lib → dist/lib}/core/auth/tokenManager.d.ts +0 -0
  376. /package/{lib → dist/lib}/core/auth/tokenManager.js +0 -0
  377. /package/{lib → dist/lib}/core/backend/applicationManager.d.ts +0 -0
  378. /package/{lib → dist/lib}/core/backend/applicationManager.js +0 -0
  379. /package/{lib → dist/lib}/core/backend/backend.d.ts +0 -0
  380. /package/{lib → dist/lib}/core/backend/backend.js +0 -0
  381. /package/{lib → dist/lib}/core/backend/backendCluster.d.ts +0 -0
  382. /package/{lib → dist/lib}/core/backend/backendCluster.js +0 -0
  383. /package/{lib → dist/lib}/core/backend/backendConfig.d.ts +0 -0
  384. /package/{lib → dist/lib}/core/backend/backendController.d.ts +0 -0
  385. /package/{lib → dist/lib}/core/backend/backendController.js +0 -0
  386. /package/{lib → dist/lib}/core/backend/backendErrors.d.ts +0 -0
  387. /package/{lib → dist/lib}/core/backend/backendHook.d.ts +0 -0
  388. /package/{lib → dist/lib}/core/backend/backendHook.js +0 -0
  389. /package/{lib → dist/lib}/core/backend/backendImport.d.ts +0 -0
  390. /package/{lib → dist/lib}/core/backend/backendImport.js +0 -0
  391. /package/{lib → dist/lib}/core/backend/backendOpenApi.d.ts +0 -0
  392. /package/{lib → dist/lib}/core/backend/backendOpenApi.js +0 -0
  393. /package/{lib → dist/lib}/core/backend/backendPipe.d.ts +0 -0
  394. /package/{lib → dist/lib}/core/backend/backendPipe.js +0 -0
  395. /package/{lib → dist/lib}/core/backend/backendPlugin.d.ts +0 -0
  396. /package/{lib → dist/lib}/core/backend/backendPlugin.js +0 -0
  397. /package/{lib → dist/lib}/core/backend/backendStorage.d.ts +0 -0
  398. /package/{lib → dist/lib}/core/backend/backendStorage.js +0 -0
  399. /package/{lib → dist/lib}/core/backend/backendSubscription.d.ts +0 -0
  400. /package/{lib → dist/lib}/core/backend/backendSubscription.js +0 -0
  401. /package/{lib → dist/lib}/core/backend/backendVault.d.ts +0 -0
  402. /package/{lib → dist/lib}/core/backend/backendVault.js +0 -0
  403. /package/{lib → dist/lib}/core/backend/index.d.ts +0 -0
  404. /package/{lib → dist/lib}/core/backend/index.js +0 -0
  405. /package/{lib → dist/lib}/core/backend/internalLogger.d.ts +0 -0
  406. /package/{lib → dist/lib}/core/backend/internalLogger.js +0 -0
  407. /package/{lib → dist/lib}/core/cache/cacheDbEnum.d.ts +0 -0
  408. /package/{lib → dist/lib}/core/cache/cacheDbEnum.js +0 -0
  409. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.d.ts +0 -0
  410. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.js +0 -0
  411. /package/{lib → dist/lib}/core/plugin/pluginContext.d.ts +0 -0
  412. /package/{lib → dist/lib}/core/realtime/channel.d.ts +0 -0
  413. /package/{lib → dist/lib}/core/realtime/channel.js +0 -0
  414. /package/{lib → dist/lib}/core/realtime/connectionRooms.d.ts +0 -0
  415. /package/{lib → dist/lib}/core/realtime/connectionRooms.js +0 -0
  416. /package/{lib → dist/lib}/core/realtime/hotelClerk.d.ts +0 -0
  417. /package/{lib → dist/lib}/core/realtime/hotelClerk.js +0 -0
  418. /package/{lib → dist/lib}/core/realtime/room.d.ts +0 -0
  419. /package/{lib → dist/lib}/core/realtime/room.js +0 -0
  420. /package/{lib → dist/lib}/core/realtime/subscription.d.ts +0 -0
  421. /package/{lib → dist/lib}/core/realtime/subscription.js +0 -0
  422. /package/{lib → dist/lib}/core/security/profileRepository.d.ts +0 -0
  423. /package/{lib → dist/lib}/core/security/profileRepository.js +0 -0
  424. /package/{lib → dist/lib}/core/security/tokenRepository.d.ts +0 -0
  425. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.d.ts +0 -0
  426. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.js +0 -0
  427. /package/{lib → dist/lib}/core/shared/ObjectRepository.d.ts +0 -0
  428. /package/{lib → dist/lib}/core/shared/ObjectRepository.js +0 -0
  429. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.d.ts +0 -0
  430. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.js +0 -0
  431. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.d.ts +0 -0
  432. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.js +0 -0
  433. /package/{lib → dist/lib}/core/shared/store.js +0 -0
  434. /package/{lib → dist/lib}/core/storage/indexCache.d.ts +0 -0
  435. /package/{lib → dist/lib}/core/storage/indexCache.js +0 -0
  436. /package/{lib → dist/lib}/core/storage/storeScopeEnum.d.ts +0 -0
  437. /package/{lib → dist/lib}/core/storage/storeScopeEnum.js +0 -0
  438. /package/{lib → dist/lib}/kerror/errors/badRequestError.d.ts +0 -0
  439. /package/{lib → dist/lib}/kerror/errors/badRequestError.js +0 -0
  440. /package/{lib → dist/lib}/kerror/errors/externalServiceError.d.ts +0 -0
  441. /package/{lib → dist/lib}/kerror/errors/externalServiceError.js +0 -0
  442. /package/{lib → dist/lib}/kerror/errors/forbiddenError.d.ts +0 -0
  443. /package/{lib → dist/lib}/kerror/errors/forbiddenError.js +0 -0
  444. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.d.ts +0 -0
  445. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.js +0 -0
  446. /package/{lib → dist/lib}/kerror/errors/index.d.ts +0 -0
  447. /package/{lib → dist/lib}/kerror/errors/index.js +0 -0
  448. /package/{lib → dist/lib}/kerror/errors/internalError.d.ts +0 -0
  449. /package/{lib → dist/lib}/kerror/errors/internalError.js +0 -0
  450. /package/{lib → dist/lib}/kerror/errors/kuzzleError.d.ts +0 -0
  451. /package/{lib → dist/lib}/kerror/errors/kuzzleError.js +0 -0
  452. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.d.ts +0 -0
  453. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.js +0 -0
  454. /package/{lib → dist/lib}/kerror/errors/notFoundError.d.ts +0 -0
  455. /package/{lib → dist/lib}/kerror/errors/notFoundError.js +0 -0
  456. /package/{lib → dist/lib}/kerror/errors/partialError.d.ts +0 -0
  457. /package/{lib → dist/lib}/kerror/errors/partialError.js +0 -0
  458. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.d.ts +0 -0
  459. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.js +0 -0
  460. /package/{lib → dist/lib}/kerror/errors/preconditionError.d.ts +0 -0
  461. /package/{lib → dist/lib}/kerror/errors/preconditionError.js +0 -0
  462. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.d.ts +0 -0
  463. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.js +0 -0
  464. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.d.ts +0 -0
  465. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.js +0 -0
  466. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.d.ts +0 -0
  467. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.js +0 -0
  468. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.d.ts +0 -0
  469. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.js +0 -0
  470. /package/{lib → dist/lib}/kerror/index.js +0 -0
  471. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.d.ts +0 -0
  472. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.js +0 -0
  473. /package/{lib → dist/lib}/kuzzle/index.d.ts +0 -0
  474. /package/{lib → dist/lib}/kuzzle/index.js +0 -0
  475. /package/{lib → dist/lib}/model/security/profile.d.ts +0 -0
  476. /package/{lib → dist/lib}/model/security/profile.js +0 -0
  477. /package/{lib → dist/lib}/model/security/role.js +0 -0
  478. /package/{lib → dist/lib}/model/security/token.d.ts +0 -0
  479. /package/{lib → dist/lib}/model/security/token.js +0 -0
  480. /package/{lib → dist/lib}/model/security/user.js +0 -0
  481. /package/{lib → dist/lib}/service/storage/8/elasticsearch.d.ts +0 -0
  482. /package/{lib → dist/lib}/service/storage/Elasticsearch.d.ts +0 -0
  483. /package/{lib → dist/lib}/service/storage/Elasticsearch.js +0 -0
  484. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.d.ts +0 -0
  485. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.js +0 -0
  486. /package/{lib → dist/lib}/types/ClientConnection.d.ts +0 -0
  487. /package/{lib → dist/lib}/types/ClientConnection.js +0 -0
  488. /package/{lib → dist/lib}/types/Deprecation.d.ts +0 -0
  489. /package/{lib → dist/lib}/types/Deprecation.js +0 -0
  490. /package/{lib → dist/lib}/types/EventHandler.d.ts +0 -0
  491. /package/{lib → dist/lib}/types/EventHandler.js +0 -0
  492. /package/{lib → dist/lib}/types/Global.d.ts +0 -0
  493. /package/{lib → dist/lib}/types/Global.js +0 -0
  494. /package/{lib → dist/lib}/types/HttpMessage.d.ts +0 -0
  495. /package/{lib → dist/lib}/types/HttpMessage.js +0 -0
  496. /package/{lib → dist/lib}/types/HttpStream.d.ts +0 -0
  497. /package/{lib → dist/lib}/types/HttpStream.js +0 -0
  498. /package/{lib → dist/lib}/types/Kuzzle.d.ts +0 -0
  499. /package/{lib → dist/lib}/types/Kuzzle.js +0 -0
  500. /package/{lib → dist/lib}/types/KuzzleDocument.d.ts +0 -0
  501. /package/{lib → dist/lib}/types/KuzzleDocument.js +0 -0
  502. /package/{lib → dist/lib}/types/OpenApiDefinition.d.ts +0 -0
  503. /package/{lib → dist/lib}/types/OpenApiDefinition.js +0 -0
  504. /package/{lib → dist/lib}/types/PasswordPolicy.d.ts +0 -0
  505. /package/{lib → dist/lib}/types/PasswordPolicy.js +0 -0
  506. /package/{lib → dist/lib}/types/Plugin.js +0 -0
  507. /package/{lib → dist/lib}/types/PluginManifest.d.ts +0 -0
  508. /package/{lib → dist/lib}/types/PluginManifest.js +0 -0
  509. /package/{lib → dist/lib}/types/Policy.d.ts +0 -0
  510. /package/{lib → dist/lib}/types/Policy.js +0 -0
  511. /package/{lib → dist/lib}/types/PolicyRestrictions.d.ts +0 -0
  512. /package/{lib → dist/lib}/types/PolicyRestrictions.js +0 -0
  513. /package/{lib → dist/lib}/types/ProfileDefinition.d.ts +0 -0
  514. /package/{lib → dist/lib}/types/ProfileDefinition.js +0 -0
  515. /package/{lib → dist/lib}/types/RoleDefinition.d.ts +0 -0
  516. /package/{lib → dist/lib}/types/RoleDefinition.js +0 -0
  517. /package/{lib → dist/lib}/types/StrategyDefinition.d.ts +0 -0
  518. /package/{lib → dist/lib}/types/StrategyDefinition.js +0 -0
  519. /package/{lib → dist/lib}/types/Target.d.ts +0 -0
  520. /package/{lib → dist/lib}/types/Target.js +0 -0
  521. /package/{lib → dist/lib}/types/Token.d.ts +0 -0
  522. /package/{lib → dist/lib}/types/Token.js +0 -0
  523. /package/{lib → dist/lib}/types/User.d.ts +0 -0
  524. /package/{lib → dist/lib}/types/User.js +0 -0
  525. /package/{lib → dist/lib}/types/config/DumpConfiguration.d.ts +0 -0
  526. /package/{lib → dist/lib}/types/config/DumpConfiguration.js +0 -0
  527. /package/{lib → dist/lib}/types/config/HttpConfiguration.d.ts +0 -0
  528. /package/{lib → dist/lib}/types/config/HttpConfiguration.js +0 -0
  529. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.d.ts +0 -0
  530. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.js +0 -0
  531. /package/{lib → dist/lib}/types/config/LimitsConfiguration.d.ts +0 -0
  532. /package/{lib → dist/lib}/types/config/LimitsConfiguration.js +0 -0
  533. /package/{lib → dist/lib}/types/config/PluginsConfiguration.d.ts +0 -0
  534. /package/{lib → dist/lib}/types/config/PluginsConfiguration.js +0 -0
  535. /package/{lib → dist/lib}/types/config/SecurityConfiguration.d.ts +0 -0
  536. /package/{lib → dist/lib}/types/config/SecurityConfiguration.js +0 -0
  537. /package/{lib → dist/lib}/types/config/ServerConfiguration.d.ts +0 -0
  538. /package/{lib → dist/lib}/types/config/ServerConfiguration.js +0 -0
  539. /package/{lib → dist/lib}/types/config/ServicesConfiguration.d.ts +0 -0
  540. /package/{lib → dist/lib}/types/config/ServicesConfiguration.js +0 -0
  541. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +0 -0
  542. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.js +0 -0
  543. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +0 -0
  544. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.js +0 -0
  545. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +0 -0
  546. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.js +0 -0
  547. /package/{lib/types → dist/lib/types/controllers}/Controller.js +0 -0
  548. /package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.js +0 -0
  549. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.d.ts +0 -0
  550. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.js +0 -0
  551. /package/{lib → dist/lib}/types/errors/ErrorDefinition.d.ts +0 -0
  552. /package/{lib → dist/lib}/types/errors/ErrorDefinition.js +0 -0
  553. /package/{lib → dist/lib}/types/errors/ErrorDomains.d.ts +0 -0
  554. /package/{lib → dist/lib}/types/errors/ErrorDomains.js +0 -0
  555. /package/{lib → dist/lib}/types/events/EventGenericDocument.d.ts +0 -0
  556. /package/{lib → dist/lib}/types/events/EventGenericDocument.js +0 -0
  557. /package/{lib → dist/lib}/types/events/EventProtocol.d.ts +0 -0
  558. /package/{lib → dist/lib}/types/events/EventProtocol.js +0 -0
  559. /package/{lib → dist/lib}/types/realtime/RealtimeScope.d.ts +0 -0
  560. /package/{lib → dist/lib}/types/realtime/RealtimeScope.js +0 -0
  561. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.d.ts +0 -0
  562. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.js +0 -0
  563. /package/{lib → dist/lib}/types/realtime/RoomList.d.ts +0 -0
  564. /package/{lib → dist/lib}/types/realtime/RoomList.js +0 -0
  565. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.d.ts +0 -0
  566. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.js +0 -0
  567. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.d.ts +0 -0
  568. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.js +0 -0
  569. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.d.ts +0 -0
  570. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.js +0 -0
  571. /package/{lib → dist/lib}/util/Inflector.d.ts +0 -0
  572. /package/{lib → dist/lib}/util/Inflector.js +0 -0
  573. /package/{lib → dist/lib}/util/array.d.ts +0 -0
  574. /package/{lib → dist/lib}/util/array.js +0 -0
  575. /package/{lib → dist/lib}/util/async.d.ts +0 -0
  576. /package/{lib → dist/lib}/util/async.js +0 -0
  577. /package/{lib → dist/lib}/util/bufferedPassThrough.d.ts +0 -0
  578. /package/{lib → dist/lib}/util/bufferedPassThrough.js +0 -0
  579. /package/{lib → dist/lib}/util/crypto.d.ts +0 -0
  580. /package/{lib → dist/lib}/util/crypto.js +0 -0
  581. /package/{lib → dist/lib}/util/dump-collection.d.ts +0 -0
  582. /package/{lib → dist/lib}/util/dump-collection.js +0 -0
  583. /package/{lib → dist/lib}/util/esRequest.d.ts +0 -0
  584. /package/{lib → dist/lib}/util/esRequest.js +0 -0
  585. /package/{lib → dist/lib}/util/koncordeCompat.d.ts +0 -0
  586. /package/{lib → dist/lib}/util/koncordeCompat.js +0 -0
  587. /package/{lib → dist/lib}/util/mutex.d.ts +0 -0
  588. /package/{lib → dist/lib}/util/mutex.js +0 -0
  589. /package/{lib → dist/lib}/util/name-generator.d.ts +0 -0
  590. /package/{lib → dist/lib}/util/name-generator.js +0 -0
  591. /package/{lib → dist/lib}/util/time.d.ts +0 -0
  592. /package/{lib → dist/lib}/util/time.js +0 -0
@@ -0,0 +1,193 @@
1
+ /*
2
+ * Kuzzle, a backend software, self-hostable and ready to use
3
+ * to power modern apps
4
+ *
5
+ * Copyright 2015-2022 Kuzzle
6
+ * mailto: support AT kuzzle.io
7
+ * website: http://kuzzle.io
8
+ *
9
+ * Licensed under the Apache License, Version 2.0 (the "License");
10
+ * you may not use this file except in compliance with the License.
11
+ * You may obtain a copy of the License at
12
+ *
13
+ * https://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS,
17
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ * See the License for the specific language governing permissions and
19
+ * limitations under the License.
20
+ */
21
+ "use strict";
22
+ const { Request } = require("../../api/request");
23
+ const kerror = require("../../kerror");
24
+ const HttpRouter = require("./httpRouter");
25
+ const { removeStacktrace } = require("../../util/stackTrace");
26
+ const kuzzleStateEnum = require("../../kuzzle/kuzzleStateEnum");
27
+ /**
28
+ * @class Router
29
+ * @property action
30
+ * @param {Kuzzle} kuzzle
31
+ */
32
+ class Router {
33
+ constructor() {
34
+ this.connections = new Map();
35
+ this.http = new HttpRouter();
36
+ this.logger = global.kuzzle.log.child("core:network:router");
37
+ }
38
+ /**
39
+ * Declares a new connection attached to a network protocol.
40
+ *
41
+ * @param {RequestContext} requestContext
42
+ */
43
+ newConnection(requestContext) {
44
+ if (!requestContext.connection.id || !requestContext.connection.protocol) {
45
+ this.logger.error(kerror.get("protocol", "runtime", "invalid_connection", JSON.stringify(requestContext)));
46
+ }
47
+ else {
48
+ this.connections.set(requestContext.connection.id, requestContext);
49
+ global.kuzzle.statistics.newConnection(requestContext);
50
+ }
51
+ }
52
+ /**
53
+ * Removes a connection from the connection pool.
54
+ *
55
+ * @param {RequestContext} requestContext
56
+ */
57
+ removeConnection(requestContext) {
58
+ const connId = requestContext.connection.id;
59
+ if (!connId || !requestContext.connection.protocol) {
60
+ this.logger.error(kerror.get("protocol", "runtime", "invalid_connection", JSON.stringify(requestContext.context)));
61
+ return;
62
+ }
63
+ if (!this.connections.has(connId)) {
64
+ this.logger.error(kerror.get("protocol", "runtime", "unknown_connection", JSON.stringify(connId)));
65
+ return;
66
+ }
67
+ this.connections.delete(connId);
68
+ global.kuzzle.statistics.dropConnection(requestContext);
69
+ }
70
+ /**
71
+ * Check that the provided connection id executing a request is still alive
72
+ *
73
+ * @param {RequestContext} requestContext
74
+ */
75
+ isConnectionAlive(requestContext) {
76
+ // Check only defined connection identifiers (some protocols might
77
+ // not have one)
78
+ return (requestContext.connection.id === null ||
79
+ this.connections.has(requestContext.connection.id));
80
+ }
81
+ /**
82
+ * Initializes the HTTP routes for the Kuzzle HTTP API.
83
+ */
84
+ init() {
85
+ // Register API and plugin routes
86
+ const routes = [
87
+ ...global.kuzzle.config.http.routes,
88
+ ...global.kuzzle.pluginsManager.routes,
89
+ ];
90
+ this.http.post("_query", (request, cb) => {
91
+ // We need to build a new request from the body
92
+ // and we also need to keep the original request context
93
+ const requestPayload = request.input.body;
94
+ if (request.input.jwt && requestPayload.jwt === undefined) {
95
+ requestPayload.jwt = request.input.jwt;
96
+ }
97
+ const apiRequest = new Request(requestPayload, request.serialize().options);
98
+ this._executeFromHttp("post", apiRequest, cb);
99
+ });
100
+ this.http.get("_healthcheck", (request, cb) => {
101
+ request.response.configure({
102
+ status: 200,
103
+ });
104
+ /**
105
+ * By avoiding using the funnel, we avoid the request to be logged
106
+ * This is useful for ochestrators healthchecks
107
+ */
108
+ cb(request);
109
+ });
110
+ this.http.get("_ready", (request, cb) => {
111
+ let status = 200;
112
+ if (global.kuzzle.state !== kuzzleStateEnum.RUNNING ||
113
+ global.kuzzle.funnel.overloaded) {
114
+ status = 503;
115
+ }
116
+ request.response.configure({
117
+ status: status,
118
+ });
119
+ /**
120
+ * By avoiding using the funnel, we avoid the request to be logged
121
+ * This is useful for ochestrators healthchecks
122
+ */
123
+ cb(request);
124
+ });
125
+ for (const route of routes) {
126
+ const verb = route.verb.toLowerCase();
127
+ this.http[verb](route.path, (request, cb) => {
128
+ request.input.controller = route.controller;
129
+ request.input.action = route.action;
130
+ if (route.deprecated) {
131
+ const { deprecated: { since, message }, } = route;
132
+ request.addDeprecation(since, message);
133
+ }
134
+ this._executeFromHttp(route.verb, request, cb);
135
+ });
136
+ }
137
+ /**
138
+ * Returns inner metrics from the router
139
+ * @returns {Object}
140
+ */
141
+ global.kuzzle.onAsk("core:network:router:metrics", () => this.metrics());
142
+ }
143
+ /**
144
+ * Returns the metrics of the router
145
+ * @returns {Object}
146
+ */
147
+ metrics() {
148
+ const connectionsByProtocol = {};
149
+ for (const connection of this.connections.values()) {
150
+ const protocol = connection.connection.protocol.toLowerCase();
151
+ if (protocol === "internal") {
152
+ continue;
153
+ }
154
+ if (connectionsByProtocol[protocol] === undefined) {
155
+ connectionsByProtocol[protocol] = 0;
156
+ }
157
+ connectionsByProtocol[protocol]++;
158
+ }
159
+ return {
160
+ connections: connectionsByProtocol,
161
+ };
162
+ }
163
+ /**
164
+ * Transmit HTTP requests to the funnel controller and forward its response
165
+ * back to the client
166
+ *
167
+ * @param {String} verb
168
+ * @param {Request} request - includes URL and POST query data
169
+ * @param {function} cb - callback to invoke with the result
170
+ */
171
+ _executeFromHttp(verb, request, cb) {
172
+ global.kuzzle.pipe(`http:${verb}`, request, (error, mutatedRequest) => {
173
+ if (error) {
174
+ request.setError(error);
175
+ cb(request);
176
+ }
177
+ else {
178
+ global.kuzzle.funnel.execute(mutatedRequest, (err, result) => {
179
+ const _res = result || request;
180
+ if (err && !_res.error) {
181
+ _res.setError(err);
182
+ }
183
+ cb(removeStacktrace(_res));
184
+ });
185
+ }
186
+ });
187
+ }
188
+ }
189
+ /**
190
+ * @type {RouterController}
191
+ */
192
+ module.exports = Router;
193
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1,56 @@
1
+ export = Plugin;
2
+ declare class Plugin {
3
+ static loadFromDirectory(pluginPath: any): Plugin;
4
+ static checkName(name: any): boolean;
5
+ static checkControllerDefinition(name: any, definition: any, { application }?: {
6
+ application?: boolean;
7
+ }): void;
8
+ constructor(instance: any, { name, application, deprecationWarning }?: {
9
+ name: any;
10
+ application?: boolean;
11
+ deprecationWarning?: boolean;
12
+ });
13
+ _instance: any;
14
+ _application: boolean;
15
+ _initCalled: boolean;
16
+ _config: {};
17
+ _context: PluginContext;
18
+ _version: any;
19
+ _name: string;
20
+ _manifest: any;
21
+ _deprecationWarning: boolean;
22
+ set name(name: string);
23
+ get name(): string;
24
+ init(name: any): void;
25
+ set config(config: {});
26
+ get config(): {};
27
+ info(): {
28
+ version: any;
29
+ controllers: any[];
30
+ hooks: any[];
31
+ manifest: any;
32
+ pipes: any[];
33
+ routes: any[];
34
+ strategies: any[];
35
+ imports: {};
36
+ } | {
37
+ name: string;
38
+ version: any;
39
+ commit: any;
40
+ controllers: any;
41
+ pipes: string[];
42
+ hooks: string[];
43
+ };
44
+ printDeprecation(message: any): void;
45
+ get instance(): any;
46
+ get context(): PluginContext;
47
+ get application(): boolean;
48
+ get logPrefix(): string;
49
+ set version(version: any);
50
+ get version(): any;
51
+ set deprecationWarning(value: boolean);
52
+ get deprecationWarning(): boolean;
53
+ set manifest(manifest: any);
54
+ get manifest(): any;
55
+ }
56
+ import { PluginContext } from "./pluginContext";
@@ -0,0 +1,282 @@
1
+ /*
2
+ * Kuzzle, a backend software, self-hostable and ready to use
3
+ * to power modern apps
4
+ *
5
+ * Copyright 2015-2022 Kuzzle
6
+ * mailto: support AT kuzzle.io
7
+ * website: http://kuzzle.io
8
+ *
9
+ * Licensed under the Apache License, Version 2.0 (the "License");
10
+ * you may not use this file except in compliance with the License.
11
+ * You may obtain a copy of the License at
12
+ *
13
+ * https://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS,
17
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ * See the License for the specific language governing permissions and
19
+ * limitations under the License.
20
+ */
21
+ "use strict";
22
+ const path = require("path");
23
+ const fs = require("fs");
24
+ const semver = require("semver");
25
+ const { PluginContext } = require("./pluginContext");
26
+ const PrivilegedPluginContext = require("./privilegedContext");
27
+ const kerror = require("../../kerror");
28
+ const errorCodes = require("../../kerror/codes");
29
+ const Manifest = require("./pluginManifest");
30
+ const { has, isPlainObject } = require("../../util/safeObject");
31
+ const defaultConfig = require("../../config/default.config");
32
+ const assertionError = kerror.wrap("plugin", "assert");
33
+ const runtimeError = kerror.wrap("plugin", "runtime");
34
+ const PLUGIN_NAME_REGEX = /^[a-z-\d]+$/;
35
+ const HTTP_VERBS = ["get", "head", "post", "put", "delete", "patch", "options"];
36
+ class Plugin {
37
+ constructor(instance, { name, application = false, deprecationWarning = true } = {}) {
38
+ this._instance = instance;
39
+ this._application = application;
40
+ this._initCalled = false;
41
+ this._config = {};
42
+ this._context = null;
43
+ this._version = instance.version || "";
44
+ this._name = "";
45
+ this._manifest = instance._manifest || null;
46
+ this._deprecationWarning = deprecationWarning;
47
+ if (name) {
48
+ this.name = name;
49
+ }
50
+ }
51
+ init(name) {
52
+ this.name = name;
53
+ if (global.kuzzle.config.plugins[this.name]) {
54
+ this.config = JSON.parse(JSON.stringify(global.kuzzle.config.plugins[this.name]));
55
+ }
56
+ // check plugin privileged prerequisites
57
+ // user need to acknowledge privileged mode in plugin configuration
58
+ if (this.config.privileged) {
59
+ if (!this.manifest || !this.manifest.privileged) {
60
+ throw assertionError.get("privileged_not_supported", this.name);
61
+ }
62
+ }
63
+ else if (this.manifest && this.manifest.privileged) {
64
+ throw assertionError.get("privileged_not_set", this.name);
65
+ }
66
+ if (this.manifest && this.manifest.kuzzleVersion) {
67
+ if (!semver.satisfies(global.kuzzle.config.version, this.manifest.kuzzleVersion, { includePrerelease: true })) {
68
+ throw kerror.get("plugin", "manifest", "version_mismatch", this.name, global.kuzzle.config.version, this.manifest.kuzzleVersion);
69
+ }
70
+ }
71
+ this._context = this.config.privileged
72
+ ? new PrivilegedPluginContext(this.name)
73
+ : new PluginContext(this.name);
74
+ }
75
+ info() {
76
+ /* eslint-disable sort-keys */
77
+ if (this.application) {
78
+ return {
79
+ name: this.name,
80
+ version: this.version,
81
+ commit: this.commit,
82
+ controllers: this.instance.api,
83
+ pipes: Object.keys(this.instance.pipes),
84
+ hooks: Object.keys(this.instance.hooks),
85
+ };
86
+ }
87
+ const description = {
88
+ version: this.version,
89
+ controllers: [],
90
+ hooks: [],
91
+ manifest: this.manifest,
92
+ pipes: [],
93
+ routes: [],
94
+ strategies: [],
95
+ imports: {},
96
+ };
97
+ /* eslint-enable sort-keys */
98
+ if (has(this.instance, "imports")) {
99
+ description.imports = Object.keys(this.instance.imports);
100
+ }
101
+ if (has(this.instance, "hooks")) {
102
+ description.hooks = Object.keys(this.instance.hooks);
103
+ }
104
+ if (has(this.instance, "pipes")) {
105
+ description.pipes = Object.keys(this.instance.pipes);
106
+ }
107
+ if (has(this.instance, "controllers")) {
108
+ description.controllers = Object.keys(this.instance.controllers).map((controller) => `${this.name}/${controller}`);
109
+ }
110
+ if (has(this.instance, "routes")) {
111
+ description.routes = this.instance.routes;
112
+ }
113
+ if (has(this.instance, "strategies")) {
114
+ description.strategies = Object.keys(this.instance.strategies);
115
+ }
116
+ return description;
117
+ }
118
+ printDeprecation(message) {
119
+ if (this.deprecationWarning) {
120
+ global.kuzzle.log.warn(`${this.logPrefix} ${message}`);
121
+ }
122
+ }
123
+ // getters/setters ===========================================================
124
+ get instance() {
125
+ return this._instance;
126
+ }
127
+ get context() {
128
+ return this._context;
129
+ }
130
+ get application() {
131
+ return this._application;
132
+ }
133
+ get logPrefix() {
134
+ return `[${this.name}]`;
135
+ }
136
+ get config() {
137
+ return this._config;
138
+ }
139
+ set config(config) {
140
+ this._config = config;
141
+ }
142
+ get version() {
143
+ return this._version;
144
+ }
145
+ set version(version) {
146
+ this._version = version;
147
+ }
148
+ get deprecationWarning() {
149
+ return this._deprecationWarning;
150
+ }
151
+ set deprecationWarning(value) {
152
+ this._deprecationWarning = value;
153
+ }
154
+ get name() {
155
+ return this._name;
156
+ }
157
+ set name(name) {
158
+ if (!this.constructor.checkName(name)) {
159
+ this.printDeprecation("Plugin names should be in kebab-case. This behavior will be enforced in futur versions of Kuzzle.");
160
+ }
161
+ this._name = name;
162
+ }
163
+ get manifest() {
164
+ return this._manifest;
165
+ }
166
+ set manifest(manifest) {
167
+ this._manifest = manifest;
168
+ }
169
+ // static methods ============================================================
170
+ static loadFromDirectory(pluginPath) {
171
+ if (!fs.statSync(pluginPath).isDirectory()) {
172
+ throw assertionError.get("cannot_load", pluginPath, "Not a directory.");
173
+ }
174
+ let plugin;
175
+ let PluginClass = {};
176
+ try {
177
+ PluginClass = require(pluginPath);
178
+ const pluginInstance = new PluginClass();
179
+ plugin = new Plugin(pluginInstance);
180
+ }
181
+ catch (error) {
182
+ if (error.message.match(/not a constructor/i)) {
183
+ throw assertionError.get("not_a_constructor", PluginClass.name);
184
+ }
185
+ throw runtimeError.getFrom(error, "unexpected_error", error.message);
186
+ }
187
+ // load manifest
188
+ plugin.manifest = new Manifest(pluginPath);
189
+ plugin.manifest.load();
190
+ plugin.name = plugin.manifest.name;
191
+ // load plugin version if exists
192
+ const packageJsonPath = path.join(pluginPath, "package.json");
193
+ if (fs.existsSync(packageJsonPath) && !plugin.version) {
194
+ plugin.version = require(packageJsonPath).version;
195
+ }
196
+ // load customs errors configuration file
197
+ if (plugin.manifest.raw.errors) {
198
+ try {
199
+ // we use the manifest name instead of the lowerCased plugin name
200
+ // to ensure to match the plugin original name in the configuration
201
+ const config = global.kuzzle.config[plugin.manifest.name];
202
+ const pluginCode = config && config._pluginCode ? config._pluginCode : 0x00;
203
+ errorCodes.loadPluginsErrors(plugin.manifest.raw, pluginCode);
204
+ global.kuzzle.log.info(`${plugin.logPrefix} Custom errors successfully loaded.`);
205
+ }
206
+ catch (err) {
207
+ if (err.message.match(/Error configuration file/i) ||
208
+ err instanceof SyntaxError) {
209
+ throw kerror.getFrom(err, "plugin", "manifest", "invalid_errors", plugin.manifest.name, err.message);
210
+ }
211
+ throw err;
212
+ }
213
+ }
214
+ // check if the plugin exposes a "init" method
215
+ if (typeof plugin.instance.init !== "function") {
216
+ throw assertionError.get("init_not_found", plugin.name);
217
+ }
218
+ return plugin;
219
+ }
220
+ static checkName(name) {
221
+ return PLUGIN_NAME_REGEX.test(name);
222
+ }
223
+ static checkControllerDefinition(name, definition, { application = false } = {}) {
224
+ if (typeof name !== "string") {
225
+ throw assertionError.get("invalid_controller_definition", "Controller name must be a string");
226
+ }
227
+ if (!isPlainObject(definition)) {
228
+ throw assertionError.get("invalid_controller_definition", name, "Controller definition must be an object");
229
+ }
230
+ if (!isPlainObject(definition.actions)) {
231
+ throw assertionError.get("invalid_controller_definition", name, 'Controller definition "actions" property must be an object');
232
+ }
233
+ for (const [action, actionDefinition] of Object.entries(definition.actions)) {
234
+ if (!global.app.config.content.controllers?.definition
235
+ ?.allowAdditionalActionProperties ??
236
+ defaultConfig.controllers.definition.allowAdditionalActionProperties) {
237
+ const actionProperties = Object.keys(actionDefinition).filter((prop) => prop !== "handler" && prop !== "http");
238
+ if (actionProperties.length > 0) {
239
+ throw assertionError.get("invalid_controller_definition", name, `action "${action}" has invalid properties: ${actionProperties.join(", ")}`);
240
+ }
241
+ }
242
+ if (typeof action !== "string") {
243
+ throw assertionError.get("invalid_controller_definition", name, "action names must be strings");
244
+ }
245
+ if (typeof actionDefinition.handler !== "function") {
246
+ throw assertionError.get("invalid_controller_definition", name, `action "${action}" handler must be a function`);
247
+ }
248
+ if (actionDefinition.http) {
249
+ if (!Array.isArray(actionDefinition.http)) {
250
+ throw assertionError.get("invalid_controller_definition", name, `action "${action}" http definition must be an array`);
251
+ }
252
+ for (const route of actionDefinition.http) {
253
+ if (typeof route.verb !== "string" || route.verb.length === 0) {
254
+ throw assertionError.get("invalid_controller_definition", name, `action "${action}" http "verb" property must be a non-empty string`);
255
+ }
256
+ if (!HTTP_VERBS.includes(route.verb.toLowerCase())) {
257
+ throw assertionError.get("invalid_controller_definition", name, `action "${action}" http verb "${route.verb}" is not a valid http verb`);
258
+ }
259
+ checkHttpRouteProperties(route, action, name, application);
260
+ const routeProperties = Object.keys(route);
261
+ if (routeProperties.length > 3) {
262
+ routeProperties.splice(routeProperties.indexOf("url"), 1);
263
+ routeProperties.splice(routeProperties.indexOf("path"), 1);
264
+ routeProperties.splice(routeProperties.indexOf("verb"), 1);
265
+ routeProperties.splice(routeProperties.indexOf("openapi"), 1);
266
+ throw assertionError.get("invalid_controller_definition", name, `action "${action}" has invalid http properties: ${routeProperties.join(", ")}`);
267
+ }
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ function checkHttpRouteProperties(route, action, name, application) {
274
+ if (typeof route.path !== "string" || route.path.length === 0) {
275
+ if (!application && typeof route.url === "string" && route.url.length > 0) {
276
+ return;
277
+ }
278
+ throw assertionError.get("invalid_controller_definition", name, `action "${action}" http "path" property must be a non-empty string`);
279
+ }
280
+ }
281
+ module.exports = Plugin;
282
+ //# sourceMappingURL=plugin.js.map
@@ -48,6 +48,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
48
48
  Object.defineProperty(exports, "__esModule", { value: true });
49
49
  exports.PluginContext = void 0;
50
50
  const bluebird_1 = __importDefault(require("bluebird"));
51
+ const lodash_1 = __importDefault(require("lodash"));
51
52
  const KoncordeWrapper_1 = require("../shared/KoncordeWrapper");
52
53
  const index_1 = require("../../../index");
53
54
  const kerror = __importStar(require("../../kerror"));
@@ -188,8 +189,7 @@ function execute(request, callback) {
188
189
  return bluebird_1.default.reject(error);
189
190
  }
190
191
  const promback = new promback_1.default(callback);
191
- if (!request ||
192
- (!(request instanceof index_1.KuzzleRequest) && !(request instanceof index_1.Request))) {
192
+ if (!request || lodash_1.default.isEmpty(request)) {
193
193
  return promback.reject(contextError.get("missing_request"));
194
194
  }
195
195
  if (request.input.controller === "realtime" &&
@@ -0,0 +1,5 @@
1
+ export = PluginManifest;
2
+ declare class PluginManifest extends AbstractManifest {
3
+ privileged: boolean;
4
+ }
5
+ import AbstractManifest = require("../shared/abstractManifest");
@@ -18,39 +18,28 @@
18
18
  * See the License for the specific language governing permissions and
19
19
  * limitations under the License.
20
20
  */
21
-
22
21
  "use strict";
23
-
24
22
  const _ = require("lodash");
25
-
26
23
  const kerror = require("../../kerror").wrap("plugin", "manifest");
27
24
  const AbstractManifest = require("../shared/abstractManifest");
28
-
29
25
  class PluginManifest extends AbstractManifest {
30
- constructor(pluginPath) {
31
- super(pluginPath);
32
- this.privileged = false;
33
- }
34
-
35
- load() {
36
- super.load();
37
-
38
- // Ensure ES will accept the plugin name as index
39
- if (!/^[\w-]+$/.test(this.name)) {
40
- throw kerror.get("invalid_name", this.path);
26
+ constructor(pluginPath) {
27
+ super(pluginPath);
28
+ this.privileged = false;
41
29
  }
42
-
43
- if (!_.isNil(this.raw) && !_.isNil(this.raw.privileged)) {
44
- if (typeof this.raw.privileged !== "boolean") {
45
- throw kerror.get(
46
- "invalid_privileged",
47
- this.path,
48
- typeof this.raw.privileged,
49
- );
50
- }
51
- this.privileged = this.raw.privileged;
30
+ load() {
31
+ super.load();
32
+ // Ensure ES will accept the plugin name as index
33
+ if (!/^[\w-]+$/.test(this.name)) {
34
+ throw kerror.get("invalid_name", this.path);
35
+ }
36
+ if (!_.isNil(this.raw) && !_.isNil(this.raw.privileged)) {
37
+ if (typeof this.raw.privileged !== "boolean") {
38
+ throw kerror.get("invalid_privileged", this.path, typeof this.raw.privileged);
39
+ }
40
+ this.privileged = this.raw.privileged;
41
+ }
52
42
  }
53
- }
54
43
  }
55
-
56
44
  module.exports = PluginManifest;
45
+ //# sourceMappingURL=pluginManifest.js.map
@@ -0,0 +1,53 @@
1
+ export = PluginRepository;
2
+ declare class PluginRepository extends ObjectRepository<any> {
3
+ constructor(store: any, collection: any);
4
+ collection: any;
5
+ ObjectConstructor: ObjectConstructor;
6
+ init(options: any): void;
7
+ /**
8
+ * Serializes the object before being persisted to database.
9
+ *
10
+ * @param {object} data - The object to serialize
11
+ * @returns {object}
12
+ */
13
+ serializeToDatabase(data: object): object;
14
+ /**
15
+ * @param {object} object
16
+ * @param {object} [options]
17
+ * @returns {Promise}
18
+ */
19
+ create(object: object, options?: object): Promise<any>;
20
+ /**
21
+ * @param {object} object
22
+ * @param {object} [options]
23
+ * @returns {Promise}
24
+ */
25
+ createOrReplace(object: object, options?: object): Promise<any>;
26
+ /**
27
+ * @param {object} object
28
+ * @param {object} [options]
29
+ * @returns {Promise}
30
+ */
31
+ replace(object: object, options?: object): Promise<any>;
32
+ /**
33
+ * @param {object} object
34
+ * @param {object} [options]
35
+ * @returns {Promise}
36
+ */
37
+ update(object: object, options?: object): Promise<any>;
38
+ /**
39
+ * If we load a user that does not exists, we have to resolve the promise with null
40
+ * instead of throwing NotFoundError
41
+ *
42
+ * @param {string} documentId
43
+ * @returns {Promise}
44
+ */
45
+ load(documentId: string): Promise<any>;
46
+ /**
47
+ * @param {string} documentId
48
+ * @param {object} [options]
49
+ * @returns {Promise}
50
+ */
51
+ delete(documentId: string, options?: object): Promise<any>;
52
+ }
53
+ import { ObjectRepository } from "../shared/ObjectRepository";