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,205 @@
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 Bluebird = require("bluebird");
23
+ const Redis = require("../../service/cache/redis");
24
+ class CacheEngine {
25
+ constructor() {
26
+ const config = global.kuzzle.config.services;
27
+ this.public = new Redis(config.memoryStorage, "public_adapter");
28
+ this.internal = new Redis(config.internalCache, "internal_adapter");
29
+ this.logger = global.kuzzle.log.child("core:cache:cacheEngine");
30
+ }
31
+ /**
32
+ * Initializes the redis clients
33
+ *
34
+ * @returns {Promise}
35
+ */
36
+ async init() {
37
+ await Bluebird.all([this.public.init(), this.internal.init()]);
38
+ this.registerInternalEvents();
39
+ this.registerPublicEvents();
40
+ this.logger.info("[✔] Cache initialized");
41
+ }
42
+ registerInternalEvents() {
43
+ /**
44
+ * Deletes on or multiple keys
45
+ * @param {string|Array.<string>} keys
46
+ */
47
+ global.kuzzle.onAsk("core:cache:internal:del", (keys) => this.internal.commands.del(keys));
48
+ /**
49
+ * Asks a key to expire in the provided delay
50
+ * @param {string} key
51
+ * @param {number} ttl (in seconds)
52
+ */
53
+ global.kuzzle.onAsk("core:cache:internal:expire", (key, ttl) => this.internal.commands.expire(key, ttl));
54
+ /**
55
+ * Wipes the database clean
56
+ */
57
+ global.kuzzle.onAsk("core:cache:internal:flushdb", () => this.internal.commands.flushdb());
58
+ /**
59
+ * Returns basic information about the internal cache service
60
+ * @returns {Promise.<Object>}
61
+ */
62
+ global.kuzzle.onAsk("core:cache:internal:info:get", () => this.internal.info());
63
+ /**
64
+ * Fetches a single value
65
+ * @param {string} key
66
+ * @return {string}
67
+ */
68
+ global.kuzzle.onAsk("core:cache:internal:get", (key) => this.internal.commands.get(key));
69
+ /**
70
+ * Fetches multiple values in one go
71
+ * @param {Array.<string>} ids
72
+ * @return {Array.<string|null>}
73
+ */
74
+ global.kuzzle.onAsk("core:cache:internal:mget", (keys) => {
75
+ // redis throws an error if trying to mget without arguments
76
+ if (keys.length === 0) {
77
+ return [];
78
+ }
79
+ return this.internal.commands.mget(keys);
80
+ });
81
+ /**
82
+ * Makes a key persistent (disable its expiration delay, if there is one)
83
+ * @param {string} key
84
+ */
85
+ global.kuzzle.onAsk("core:cache:internal:persist", (key) => this.internal.commands.persist(key));
86
+ /**
87
+ * Asks a key to expire in the provided delay
88
+ * @param {string} key
89
+ * @param {number} ttl (in milliseconds)
90
+ */
91
+ global.kuzzle.onAsk("core:cache:internal:pexpire", (key, ttl) => this.internal.commands.pexpire(key, ttl));
92
+ /**
93
+ * Fetches all keys matching the provided pattern
94
+ * @param {string} pattern
95
+ */
96
+ global.kuzzle.onAsk("core:cache:internal:searchKeys", (pattern) => this.internal.searchKeys(pattern));
97
+ /**
98
+ * Add a custom LUA script to the internal client
99
+ * The script can then be executed using core:cache:internal:script:execute
100
+ * @see {@link https://www.npmjs.com/package/ioredis#lua-scripting}
101
+ *
102
+ * @param {string} name of the script
103
+ * @param {number} keys -- number of keys
104
+ * @param {string} script
105
+ */
106
+ global.kuzzle.onAsk("core:cache:internal:script:define", (name, keys, script) => {
107
+ return this.internal.client.defineCommand(name, {
108
+ lua: script,
109
+ numberOfKeys: keys,
110
+ });
111
+ });
112
+ /**
113
+ * Execute a script previously defined with core:cache:internal:script:define
114
+ *
115
+ * @param {string} name of the script to execute
116
+ * @param {...string} args -- script arguments
117
+ * @return {*} script result (if any)
118
+ */
119
+ global.kuzzle.onAsk("core:cache:internal:script:execute", (name, ...args) => this.internal.client[name](...args));
120
+ /**
121
+ * Convenience method for easy access to options NX and PX of the "set"
122
+ * command.
123
+ * Deliberately not named after an existing Redis command to prevent
124
+ * confusion with Redis' API.
125
+ *
126
+ * Options:
127
+ * - ttl: key expiration TTL in milliseconds
128
+ * - onlyIfNew: if true, does not write the key if it already exists
129
+ *
130
+ * @param {string} key
131
+ * @param {string} value
132
+ * @param {{ttl: number, onlyIfNew: boolean}} [opts]
133
+ * @returns {Promise.<boolean>} true if the key was set, false otherwise
134
+ */
135
+ global.kuzzle.onAsk("core:cache:internal:store", (key, value, opts) => this.internal.store(key, value, opts));
136
+ /**
137
+ * Executes an arbitrary NATIVE cache command directly
138
+ * @param {string} command
139
+ * @param {Array} args -- command arguments
140
+ */
141
+ global.kuzzle.onAsk("core:cache:internal:execute", (command, ...args) => this.internal.exec(command, ...args));
142
+ }
143
+ registerPublicEvents() {
144
+ /**
145
+ * Deletes on or multiple keys
146
+ * @param {string|Array.<string>} keys
147
+ */
148
+ global.kuzzle.onAsk("core:cache:public:del", (keys) => this.public.commands.del(keys));
149
+ /**
150
+ * Executes an arbitrary NATIVE cache command directly
151
+ * @param {string} command
152
+ * @param {Array} args -- command arguments
153
+ */
154
+ global.kuzzle.onAsk("core:cache:public:execute", (command, ...args) => this.public.exec(command, ...args));
155
+ /**
156
+ * Asks a key to expire in the provided delay
157
+ * @param {string} key
158
+ * @param {number} ttl (in seconds)
159
+ */
160
+ global.kuzzle.onAsk("core:cache:public:expire", (key, ttl) => this.public.commands.expire(key, ttl));
161
+ /**
162
+ * Wipes the database clean
163
+ */
164
+ global.kuzzle.onAsk("core:cache:public:flushdb", () => this.public.commands.flushdb());
165
+ /**
166
+ * Returns basic information about the internal cache service
167
+ * @returns {Promise.<Object>}
168
+ */
169
+ global.kuzzle.onAsk("core:cache:public:info:get", () => this.public.info());
170
+ /**
171
+ * Fetches a single value
172
+ * @param {string} key
173
+ * @return {string}
174
+ */
175
+ global.kuzzle.onAsk("core:cache:public:get", (key) => this.public.commands.get(key));
176
+ /**
177
+ * Executes multiple cache commands in one go, as a single transaction
178
+ * @param {Array} commands to execute
179
+ */
180
+ global.kuzzle.onAsk("core:cache:public:mExecute", (commands) => this.public.mExecute(commands));
181
+ /**
182
+ * Makes a key persistent (disable its expiration delay, if there is one)
183
+ * @param {string} key
184
+ */
185
+ global.kuzzle.onAsk("core:cache:public:persist", (key) => this.public.commands.persist(key));
186
+ /**
187
+ * Convenience method for easy access to options NX and PX of the "set"
188
+ * command.
189
+ * Deliberately not named after an existing Redis command to prevent
190
+ * confusion with Redis' API.
191
+ *
192
+ * Options:
193
+ * - ttl: key expiration TTL in milliseconds
194
+ * - onlyIfNew: if true, does not write the key if it already exists
195
+ *
196
+ * @param {string} key
197
+ * @param {string} value
198
+ * @param {{ttl: number, onlyIfNew: boolean}} [opts]
199
+ * @returns {Promise.<boolean>} true if the key was set, false otherwise
200
+ */
201
+ global.kuzzle.onAsk("core:cache:public:store", (key, value, opts) => this.public.store(key, value, opts));
202
+ }
203
+ }
204
+ module.exports = CacheEngine;
205
+ //# sourceMappingURL=cacheEngine.js.map
@@ -0,0 +1,29 @@
1
+ /// <reference types="node" />
2
+ export class AccessLogger {
3
+ isActive: boolean;
4
+ worker: Worker;
5
+ logger: import("../../kuzzle/Logger").Logger;
6
+ init(): Promise<void>;
7
+ log(connection: any, request: any, extra: any): void;
8
+ }
9
+ export class AccessLoggerWorker {
10
+ constructor(config: any, anonymousUserId: any);
11
+ config: any;
12
+ logger: pino.Logger<never, boolean>;
13
+ anonymousUserId: any;
14
+ init(): void;
15
+ initTransport(): void;
16
+ /**
17
+ * @param {ClientConnection} connection
18
+ * @param {Request} request
19
+ * @param {String} size - response size, in bytes
20
+ * @param {Object} [extra]
21
+ */
22
+ logAccess(connection: ClientConnection, request: Request, size: string, extra?: any): void;
23
+ /**
24
+ * @param {ClientConnection} connection
25
+ */
26
+ getIP(connection: ClientConnection): any;
27
+ }
28
+ import { Worker } from "node:worker_threads";
29
+ import pino = require("pino");
@@ -0,0 +1,250 @@
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
+ // winston is CPU-hungry: isolating it in a worker thread allows for a more
23
+ // efficient CPU resources management, and more performances in the end
24
+ const { Worker, isMainThread, parentPort, workerData, } = require("worker_threads");
25
+ const pino = require("pino");
26
+ const moment = require("moment");
27
+ const { KuzzleRequest } = require("../../api/request");
28
+ const ALLOWED_TRANSPORTS = ["console", "elasticsearch", "file", "syslog"];
29
+ class AccessLogger {
30
+ constructor() {
31
+ this.isActive = false;
32
+ this.worker = null;
33
+ this.logger = global.kuzzle.log.child("core:network:accessLogger");
34
+ }
35
+ async init() {
36
+ const config = global.kuzzle.config.server;
37
+ for (const out of config.logs.transports) {
38
+ if (out.transport && !ALLOWED_TRANSPORTS.includes(out.transport)) {
39
+ this.logger.error(`Failed to initialize logger transport "${out.transport}": unsupported transport. Skipped.`);
40
+ }
41
+ else {
42
+ this.isActive = this.isActive || !out.silent;
43
+ }
44
+ }
45
+ if (!this.isActive) {
46
+ return;
47
+ }
48
+ const anonymous = await global.kuzzle.ask("core:security:user:anonymous:get");
49
+ this.worker = new Worker(__filename, {
50
+ workerData: {
51
+ anonymousUserId: anonymous._id,
52
+ config,
53
+ kuzzleId: global.nodeId,
54
+ },
55
+ });
56
+ }
57
+ log(connection, request, extra) {
58
+ if (!this.isActive) {
59
+ return;
60
+ }
61
+ const serialized = request.serialize();
62
+ // Users can set anything in the request response, as long as it can
63
+ // be stringified. Problem is: not all that can be stringified is
64
+ // serializable to worker threads (e.g. functions).
65
+ serialized.options.result = undefined;
66
+ // Since we won't pass the response to the worker thread, we need to
67
+ // compute its size beforehand, as this information is needed for access
68
+ // logs
69
+ const size = request.response
70
+ ? Buffer.byteLength(JSON.stringify(request.response)).toString()
71
+ : "-";
72
+ try {
73
+ this.worker.postMessage({
74
+ connection,
75
+ extra,
76
+ request: serialized,
77
+ size,
78
+ });
79
+ }
80
+ catch (error) {
81
+ this.logger.error(`Failed to write access log for request "${request.id}": ${error.message}`);
82
+ }
83
+ }
84
+ }
85
+ class AccessLoggerWorker {
86
+ constructor(config, anonymousUserId) {
87
+ this.config = config;
88
+ this.logger = null;
89
+ this.anonymousUserId = anonymousUserId;
90
+ }
91
+ init() {
92
+ this.initTransport();
93
+ parentPort.on("message", ({ connection, extra, request, size }) => {
94
+ this.logAccess(connection, new KuzzleRequest(request.data, request.options), size, extra);
95
+ });
96
+ }
97
+ initTransport() {
98
+ const transports = { targets: [] };
99
+ for (const conf of this.config.logs.transports) {
100
+ if (conf.silent === true) {
101
+ continue;
102
+ }
103
+ // Guarantee default transport is 'console' and retro compatibility with winston options
104
+ switch (conf.transport || conf.preset || "console") {
105
+ case "console":
106
+ transports.targets.push({
107
+ level: conf.level || "info",
108
+ options: {
109
+ destination: 1,
110
+ },
111
+ target: "pino/file",
112
+ });
113
+ break;
114
+ case "elasticsearch":
115
+ transports.targets.push({
116
+ level: conf.level || "info",
117
+ options: Object.assign({}, conf.options),
118
+ target: "pino-elasticsearch",
119
+ });
120
+ break;
121
+ case "file":
122
+ transports.targets.push({
123
+ level: conf.level || "info",
124
+ options: {
125
+ append: conf.options?.append ?? true,
126
+ destination: conf.options?.destination ?? "./kuzzle.access.log",
127
+ mkdir: conf.options?.mkdir ?? true,
128
+ },
129
+ target: "pino/file",
130
+ });
131
+ break;
132
+ default:
133
+ // do nothing
134
+ }
135
+ // If a pino transport configuration is used, we'll try to use it as-is and
136
+ // assume the user installed the necessary dependencies in his Kuzzle application
137
+ if (typeof conf.target === "string" && conf.target !== "") {
138
+ transports.targets.push({
139
+ level: conf.level || "info",
140
+ options: conf.options || {},
141
+ target: conf.target,
142
+ });
143
+ }
144
+ }
145
+ this.logger = pino.pino(pino.transport(transports));
146
+ }
147
+ /**
148
+ * @param {ClientConnection} connection
149
+ * @param {Request} request
150
+ * @param {String} size - response size, in bytes
151
+ * @param {Object} [extra]
152
+ */
153
+ logAccess(connection, request, size, extra = null) {
154
+ if (this.config.logs.accessLogFormat === "logstash") {
155
+ // custom kuzzle logs to be exported to logstash
156
+ this.logger.info({
157
+ connection,
158
+ error: request.error,
159
+ extra,
160
+ namespace: "kuzzle:accessLogs",
161
+ nodeId: global.kuzzle.id,
162
+ request: request.input,
163
+ status: request.status,
164
+ });
165
+ return;
166
+ }
167
+ // user init: prioritize the already decoded and verified token stored in
168
+ // the request
169
+ // If not available, then that may mean that we didn't verify the user yet,
170
+ // so we have to decode any provided token
171
+ let user = null;
172
+ if (request.context.token !== null) {
173
+ user =
174
+ request.context.token.userId === this.anonymousUserId
175
+ ? "(anonymous)"
176
+ : request.context.token.userId;
177
+ }
178
+ // = apache combined
179
+ const protocol = connection.protocol.toUpperCase();
180
+ let url;
181
+ let verb = "DO";
182
+ if (connection.protocol.indexOf("HTTP/") === 0) {
183
+ verb = extra.method;
184
+ url = extra.url;
185
+ }
186
+ // for other protocols than http, we rebuild a pseudo url
187
+ else {
188
+ url = `/${request.input.controller}/${request.input.action}`;
189
+ if (request.input.args.index) {
190
+ url += `/${request.input.args.index}`;
191
+ }
192
+ if (request.input.args.collection) {
193
+ url += `/${request.input.args.collection}`;
194
+ }
195
+ if (request.input.args._id) {
196
+ url += `/${request.input.args._id}`;
197
+ }
198
+ let queryString = "";
199
+ for (const k of Object.keys(request.input.args)) {
200
+ if (k === "_id" || k === "index" || k === "collection") {
201
+ continue;
202
+ }
203
+ const val = request.input.args[k];
204
+ if (queryString.length > 0) {
205
+ queryString += "&";
206
+ }
207
+ queryString += `${k}=${typeof val === "object" ? JSON.stringify(val) : val}`;
208
+ }
209
+ if (queryString.length > 0) {
210
+ url += `?${queryString}`;
211
+ }
212
+ }
213
+ if (user === null) {
214
+ user = "(unknown)";
215
+ }
216
+ const ip = this.getIP(connection);
217
+ const when = moment().format("DD/MMM/YYYY:HH:mm:ss ZZ");
218
+ const status = request.status || "-";
219
+ const referer = connection.headers.referer
220
+ ? `"${connection.headers.referer}"`
221
+ : "-";
222
+ const agent = connection.headers["user-agent"]
223
+ ? `"${connection.headers["user-agent"]}"`
224
+ : "-";
225
+ this.logger.info({ namespace: "kuzzle:accessLogs", nodeId: global.kuzzle.id }, `${ip} - ${user} [${when}] "${verb} ${url} ${protocol}" ${status} ${size} ${referer} ${agent}`);
226
+ }
227
+ /**
228
+ * @param {ClientConnection} connection
229
+ */
230
+ getIP(connection) {
231
+ const { ips } = connection;
232
+ if (ips.length === 0) {
233
+ return "-";
234
+ }
235
+ const idx = Math.max(0, ips.length - 1 - this.config.logs.accessLogIpOffset);
236
+ return ips[idx];
237
+ }
238
+ }
239
+ if (!isMainThread) {
240
+ // Needed for instantiating a serialized KuzzleRequest object
241
+ global.kuzzle = { id: workerData.kuzzleId };
242
+ const worker = new AccessLoggerWorker(workerData.config, workerData.anonymousUserId);
243
+ worker.init();
244
+ }
245
+ // Exposing the worker isn't necessary for production code: this is only
246
+ // useful to make this class testable. I usually don't like it when tests have a
247
+ // say in how the code should be written, but in this particular case, I see
248
+ // no other way to correctly test this.
249
+ module.exports = { AccessLogger, AccessLoggerWorker };
250
+ //# sourceMappingURL=accessLogger.js.map
@@ -0,0 +1,15 @@
1
+ export = ClientConnection;
2
+ /**
3
+ * @class ClientConnection
4
+ * @param {string} protocol - The protocol used (http, websocket, mqtt etc)
5
+ * @param {Array.<string>} ips - The list of forwarded ips (= X-Forwarded-For http header + the final ip, i.e. client, proxy1, proxy2, etc.)
6
+ * @param {object} [headers] - Optional extra key-value object. I.e., for http, will receive the request headers
7
+ */
8
+ declare class ClientConnection {
9
+ constructor(protocol: any, ips: any, headers?: any, internal?: any);
10
+ id: string;
11
+ protocol: any;
12
+ headers: any;
13
+ internal: any;
14
+ ips: any[];
15
+ }
@@ -18,12 +18,9 @@
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 { isPlainObject } = require("../../util/safeObject");
25
23
  const uuid = require("uuid");
26
-
27
24
  /**
28
25
  * @class ClientConnection
29
26
  * @param {string} protocol - The protocol used (http, websocket, mqtt etc)
@@ -31,27 +28,23 @@ const uuid = require("uuid");
31
28
  * @param {object} [headers] - Optional extra key-value object. I.e., for http, will receive the request headers
32
29
  */
33
30
  class ClientConnection {
34
- constructor(protocol, ips, headers = null, internal = null) {
35
- this.id = uuid.v4();
36
- this.protocol = protocol;
37
- this.headers = {};
38
- this.internal = {};
39
-
40
- if (!Array.isArray(ips)) {
41
- throw new TypeError(`Expected ips to be an Array, got ${typeof ips}`);
31
+ constructor(protocol, ips, headers = null, internal = null) {
32
+ this.id = uuid.v4();
33
+ this.protocol = protocol;
34
+ this.headers = {};
35
+ this.internal = {};
36
+ if (!Array.isArray(ips)) {
37
+ throw new TypeError(`Expected ips to be an Array, got ${typeof ips}`);
38
+ }
39
+ this.ips = ips;
40
+ if (isPlainObject(headers)) {
41
+ this.headers = headers;
42
+ }
43
+ if (isPlainObject(internal)) {
44
+ this.internal = internal;
45
+ }
46
+ Object.freeze(this);
42
47
  }
43
- this.ips = ips;
44
-
45
- if (isPlainObject(headers)) {
46
- this.headers = headers;
47
- }
48
-
49
- if (isPlainObject(internal)) {
50
- this.internal = internal;
51
- }
52
-
53
- Object.freeze(this);
54
- }
55
48
  }
56
-
57
49
  module.exports = ClientConnection;
50
+ //# sourceMappingURL=clientConnection.js.map
@@ -0,0 +1,42 @@
1
+ export = Context;
2
+ declare class Context {
3
+ ClientConnection: typeof ClientConnection;
4
+ debug: any;
5
+ errors: {
6
+ BadRequestError: typeof BadRequestError;
7
+ ExternalServiceError: typeof ExternalServiceError;
8
+ ForbiddenError: typeof ForbiddenError;
9
+ GatewayTimeoutError: typeof GatewayTimeoutError;
10
+ InternalError: typeof KuzzleInternalError;
11
+ KuzzleError: typeof KuzzleError;
12
+ NotFoundError: typeof NotFoundError;
13
+ PartialError: typeof PartialError;
14
+ PluginImplementationError: typeof PluginImplementationError;
15
+ PreconditionError: typeof PreconditionError;
16
+ ServiceUnavailableError: typeof ServiceUnavailableError;
17
+ SizeLimitError: typeof SizeLimitError;
18
+ TooManyRequestsError: typeof TooManyRequestsError;
19
+ UnauthorizedError: typeof UnauthorizedError;
20
+ };
21
+ Protocol: typeof ProtocolBase;
22
+ Request: any;
23
+ RequestContext: any;
24
+ RequestInput: any;
25
+ log: {};
26
+ }
27
+ import ClientConnection = require("./clientConnection");
28
+ import { BadRequestError } from "../../kerror/errors/badRequestError";
29
+ import { ExternalServiceError } from "../../kerror/errors/externalServiceError";
30
+ import { ForbiddenError } from "../../kerror/errors/forbiddenError";
31
+ import { GatewayTimeoutError } from "../../kerror/errors/gatewayTimeoutError";
32
+ import { InternalError as KuzzleInternalError } from "../../kerror/errors/internalError";
33
+ import { KuzzleError } from "../../kerror/errors/kuzzleError";
34
+ import { NotFoundError } from "../../kerror/errors/notFoundError";
35
+ import { PartialError } from "../../kerror/errors/partialError";
36
+ import { PluginImplementationError } from "../../kerror/errors/pluginImplementationError";
37
+ import { PreconditionError } from "../../kerror/errors/preconditionError";
38
+ import { ServiceUnavailableError } from "../../kerror/errors/serviceUnavailableError";
39
+ import { SizeLimitError } from "../../kerror/errors/sizeLimitError";
40
+ import { TooManyRequestsError } from "../../kerror/errors/tooManyRequestsError";
41
+ import { UnauthorizedError } from "../../kerror/errors/unauthorizedError";
42
+ import ProtocolBase = require("./protocols/protocol");
@@ -0,0 +1,57 @@
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 { BadRequestError, ExternalServiceError, ForbiddenError, GatewayTimeoutError, InternalError: KuzzleInternalError, KuzzleError, NotFoundError, PartialError, PluginImplementationError, PreconditionError, ServiceUnavailableError, SizeLimitError, TooManyRequestsError, UnauthorizedError, Request, RequestContext, RequestInput, } = require("../../kerror/errors");
23
+ const ClientConnection = require("./clientConnection");
24
+ const ProtocolBase = require("./protocols/protocol");
25
+ const debug = require("../../util/debug")("kuzzle:network:protocols");
26
+ class Context {
27
+ constructor() {
28
+ this.ClientConnection = ClientConnection;
29
+ this.debug = debug;
30
+ this.errors = {
31
+ BadRequestError,
32
+ ExternalServiceError,
33
+ ForbiddenError,
34
+ GatewayTimeoutError,
35
+ InternalError: KuzzleInternalError,
36
+ KuzzleError,
37
+ NotFoundError,
38
+ PartialError,
39
+ PluginImplementationError,
40
+ PreconditionError,
41
+ ServiceUnavailableError,
42
+ SizeLimitError,
43
+ TooManyRequestsError,
44
+ UnauthorizedError,
45
+ };
46
+ this.Protocol = ProtocolBase;
47
+ this.Request = Request;
48
+ this.RequestContext = RequestContext;
49
+ this.RequestInput = RequestInput;
50
+ this.log = {};
51
+ for (const type of ["silly", "debug", "verbose", "info", "warn", "error"]) {
52
+ this.log[type] = (...args) => global.kuzzle.log[type](...args);
53
+ }
54
+ }
55
+ }
56
+ module.exports = Context;
57
+ //# sourceMappingURL=context.js.map