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,346 @@
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 debug = require("../../util/debug")("kuzzle:core:security:users");
24
+ const { ObjectRepository } = require("../shared/ObjectRepository");
25
+ const kerror = require("../../kerror");
26
+ const { User } = require("../../model/security/user");
27
+ const ApiKey = require("../../model/storage/apiKey");
28
+ /**
29
+ * @class UserRepository
30
+ * @extends ObjectRepository
31
+ */
32
+ class UserRepository extends ObjectRepository {
33
+ /**
34
+ * @param {SecurityModule} securityModule
35
+ * @constructor
36
+ */
37
+ constructor(securityModule) {
38
+ super({ store: global.kuzzle.internalIndex });
39
+ this.module = securityModule;
40
+ this.collection = "users";
41
+ this.ObjectConstructor = User;
42
+ this.anonymousUser = null;
43
+ }
44
+ async init() {
45
+ this.anonymousUser = await this.fromDTO({
46
+ _id: "-1",
47
+ name: "Anonymous",
48
+ profileIds: ["anonymous"],
49
+ });
50
+ /**
51
+ * Gets the standard anonymous User object
52
+ * @returns {User}
53
+ */
54
+ global.kuzzle.onAsk("core:security:user:anonymous:get", () => this.anonymousUser);
55
+ /**
56
+ * Creates a new user
57
+ * @param {String} id - user identifier
58
+ * @param {Array.<String>} profileIds - associated profile identifiers
59
+ * @param {Object} content - optional user content
60
+ * @param {Object} opts - refresh, userId (used for metadata)
61
+ * @returns {User}
62
+ * @throws If already exists or if at least one profile ID is unknown
63
+ */
64
+ global.kuzzle.onAsk("core:security:user:create", (id, profileIds, content, opts) => this.create(id, profileIds, content, opts));
65
+ /**
66
+ * Deletes an existing user
67
+ * @param {String} id
68
+ * @param {Object} opts - refresh
69
+ * @throws If the user doesn't exist
70
+ */
71
+ global.kuzzle.onAsk("core:security:user:delete", (id, opts) => this.deleteById(id, opts));
72
+ /**
73
+ * Loads and returns an existing user
74
+ * @param {String} id - user identifier
75
+ * @returns {User}
76
+ * @throws {NotFoundError} If the user doesn't exist
77
+ */
78
+ global.kuzzle.onAsk("core:security:user:get", (id) => this.load(id));
79
+ /**
80
+ * Gets multiple users
81
+ * @param {Array.<String>} ids
82
+ * @returns {Array.<User>}
83
+ * @throws If one or more users don't exist
84
+ */
85
+ global.kuzzle.onAsk("core:security:user:mGet", (ids) => this.loadMultiFromDatabase(ids));
86
+ /**
87
+ * Replaces the user's content
88
+ * @param {String} id - user identifier
89
+ * @param {Object} content
90
+ * @param {Object} opts - refresh, userId (used for metadata)
91
+ * @returns {User} Updated user
92
+ */
93
+ global.kuzzle.onAsk("core:security:user:replace", (id, profileIds, content, opts) => this.replace(id, profileIds, content, opts));
94
+ /**
95
+ * Fetches the next page of search results
96
+ * @param {String} id - scroll identifier
97
+ * @param {String} [ttl] - refresh the scroll results TTL
98
+ * @returns {Object} Search results
99
+ */
100
+ global.kuzzle.onAsk("core:security:user:scroll", (id, ttl) => this.scroll(id, ttl));
101
+ /**
102
+ * Searches users
103
+ * @param {Object} searchBody - Search body (ES format)
104
+ * @param {Object} opts (from, size, scroll)
105
+ * @returns {Object} Search results
106
+ */
107
+ global.kuzzle.onAsk("core:security:user:search", (searchBody, opts) => this.search(searchBody, opts));
108
+ /**
109
+ * Removes all existing users
110
+ * @param {Object} opts (refresh)
111
+ */
112
+ global.kuzzle.onAsk("core:security:user:truncate", (opts) => this.truncate(opts));
113
+ /**
114
+ * Updates an existing user using a partial content
115
+ * @param {String} id - user identifier to update
116
+ * @param {Object} content - partial content to apply
117
+ * @param {Object} opts - refresh, retryOnConflict, userId (used for metadata)
118
+ * @returns {User} Updated user
119
+ */
120
+ global.kuzzle.onAsk("core:security:user:update", (id, profileIds, content, opts) => this.update(id, profileIds, content, opts));
121
+ /**
122
+ * Returns true if there is at least one user with the "admin" profile
123
+ *
124
+ * @returns {Boolean}
125
+ */
126
+ global.kuzzle.onAsk("core:security:user:admin:exist", () => this.adminExists());
127
+ }
128
+ /**
129
+ * Creates a user
130
+ * @param {String} id
131
+ * @param {Array} profileIds - profiles to associate to this user
132
+ * @param {Object} content
133
+ * @param {Object} [opts]
134
+ */
135
+ async create(id, profileIds, content, { userId, refresh = "false" } = {}) {
136
+ const user = await this.fromDTO({
137
+ ...content,
138
+ // Profile Ids and content are stored at the same level... for now.
139
+ profileIds,
140
+ // Always last, in case content contains these keys
141
+ /* eslint-disable-next-line sort-keys */
142
+ _id: id,
143
+ _kuzzle_info: {
144
+ author: userId,
145
+ createdAt: Date.now(),
146
+ updatedAt: null,
147
+ updater: null,
148
+ },
149
+ });
150
+ try {
151
+ return await this.persist(user, {
152
+ database: { method: "create", refresh },
153
+ });
154
+ }
155
+ catch (error) {
156
+ if (error.id === "services.storage.document_already_exists") {
157
+ throw kerror.get("security", "user", "already_exists", id);
158
+ }
159
+ throw error;
160
+ }
161
+ }
162
+ /**
163
+ * Updates a user's content
164
+ * @param {String} id
165
+ * @param {Array} profileIds
166
+ * @param {Object} content
167
+ * @param {Object} [opts]
168
+ * @returns {Promise}
169
+ */
170
+ async update(id, profileIds, content, { refresh = "false", retryOnConflict = 10, userId } = {}) {
171
+ const user = await this.load(id);
172
+ const pojo = this.toDTO(user);
173
+ const updated = await this.fromDTO({
174
+ // /!\ order is important
175
+ ...pojo,
176
+ ...content,
177
+ // Always last, in case content contains these keys
178
+ _id: id,
179
+ _kuzzle_info: {
180
+ ...pojo._kuzzle_info,
181
+ updatedAt: Date.now(),
182
+ updater: userId,
183
+ },
184
+ profileIds: profileIds || pojo.profileIds,
185
+ });
186
+ return this.persist(updated, {
187
+ database: {
188
+ method: "update",
189
+ refresh,
190
+ retryOnConflict,
191
+ },
192
+ });
193
+ }
194
+ /**
195
+ * Replaces a user's content
196
+ * @param {String} id
197
+ * @param {Object} content
198
+ * @param {Object} [opts]
199
+ * @returns {Promise}
200
+ */
201
+ async replace(id, profileIds, content, { refresh = "false", userId } = {}) {
202
+ // Assertion: the user must exist
203
+ await this.load(id);
204
+ const user = await this.fromDTO({
205
+ ...content,
206
+ // Always last, in case content contains these keys
207
+ _id: id,
208
+ _kuzzle_info: {
209
+ author: userId,
210
+ createdAt: Date.now(),
211
+ updatedAt: null,
212
+ updater: null,
213
+ },
214
+ profileIds,
215
+ });
216
+ return this.persist(user, {
217
+ database: {
218
+ method: "replace",
219
+ refresh,
220
+ },
221
+ });
222
+ }
223
+ /**
224
+ * Loads a user
225
+ *
226
+ * @param {string} id
227
+ * @returns {Promise.<User>}
228
+ * @throws {NotFoundError} If the user is not found
229
+ */
230
+ async load(id) {
231
+ if (id === "anonymous" || id === "-1") {
232
+ return this.anonymousUser;
233
+ }
234
+ return super.load(id);
235
+ }
236
+ async persist(user, options = {}) {
237
+ const databaseOptions = options.database || {};
238
+ const cacheOptions = options.cache || {};
239
+ if (user._id === this.anonymousUser._id &&
240
+ user.profileIds.indexOf("anonymous") === -1) {
241
+ throw kerror.get("security", "user", "anonymous_profile_required");
242
+ }
243
+ await this.persistToDatabase(user, databaseOptions);
244
+ await this.persistToCache(user, cacheOptions);
245
+ return user;
246
+ }
247
+ /**
248
+ * @param dto
249
+ * @returns {Promise<User>}
250
+ */
251
+ async fromDTO(dto) {
252
+ if (dto.profileIds && !Array.isArray(dto.profileIds)) {
253
+ dto.profileIds = [dto.profileIds];
254
+ }
255
+ const user = await super.fromDTO(dto);
256
+ if (user._id === undefined || user._id === null) {
257
+ return this.anonymousUser;
258
+ }
259
+ // if the user exists (has an _id) but no profile associated: there is a
260
+ // database inconsistency
261
+ if (user.profileIds.length === 0) {
262
+ throw kerror.get("security", "user", "no_profile", user._id);
263
+ }
264
+ const profiles = await this.module.profile.loadProfiles(user.profileIds);
265
+ // Fail if not all profiles are found
266
+ if (profiles.some((p) => p === null)) {
267
+ throw kerror.get("security", "user", "cannot_hydrate", dto._id);
268
+ }
269
+ return user;
270
+ }
271
+ /**
272
+ * Deletes a user from memory and database, along with its related tokens and
273
+ * strategies.
274
+ *
275
+ * @param {String} id
276
+ * @param {Object} [options]
277
+ * @returns {Promise}
278
+ */
279
+ async deleteById(id, opts) {
280
+ const user = await this.load(id);
281
+ return this.delete(user, opts);
282
+ }
283
+ /**
284
+ * @override
285
+ */
286
+ async delete(user, { refresh = "false" } = {}) {
287
+ debug("Delete user: %s", user);
288
+ await this._removeUserStrategies(user);
289
+ await ApiKey.deleteByUser(user, { refresh });
290
+ await this.module.token.deleteByKuid(user._id);
291
+ await super.delete(user, { refresh });
292
+ }
293
+ async _removeUserStrategies(user) {
294
+ const availableStrategies = global.kuzzle.pluginsManager.listStrategies();
295
+ const userStrategies = [];
296
+ const request = new Request({ _id: user._id });
297
+ for (const strategy of availableStrategies) {
298
+ const existStrategy = global.kuzzle.pluginsManager.getStrategyMethod(strategy, "exists");
299
+ if (await existStrategy(request, user._id, strategy)) {
300
+ userStrategies.push(strategy);
301
+ }
302
+ }
303
+ const errors = [];
304
+ if (userStrategies.length > 0) {
305
+ for (const strategy of userStrategies) {
306
+ const deleteStrategy = global.kuzzle.pluginsManager.getStrategyMethod(strategy, "delete");
307
+ // We catch any error produced by delete as we want to make as much
308
+ // cleanup as possible
309
+ try {
310
+ debug("Deleting credentials on strategy %s for user %s", strategy, user._id);
311
+ await deleteStrategy(request, user._id, strategy);
312
+ }
313
+ catch (error) {
314
+ errors.push(error);
315
+ }
316
+ }
317
+ }
318
+ if (errors.length > 0) {
319
+ throw kerror.get("security", "credentials", "rejected", errors.join("\n\t- "));
320
+ }
321
+ }
322
+ /**
323
+ * @override
324
+ */
325
+ async loadOneFromDatabase(id) {
326
+ try {
327
+ return await super.loadOneFromDatabase(id);
328
+ }
329
+ catch (err) {
330
+ if (err.status === 404) {
331
+ throw kerror.get("security", "user", "not_found", id);
332
+ }
333
+ throw err;
334
+ }
335
+ }
336
+ async adminExists() {
337
+ const { total } = await this.search({
338
+ query: {
339
+ term: { profileIds: "admin" },
340
+ },
341
+ }, { size: 1 });
342
+ return total >= 1;
343
+ }
344
+ }
345
+ module.exports = UserRepository;
346
+ //# sourceMappingURL=userRepository.js.map
@@ -0,0 +1,27 @@
1
+ export = AbstractManifest;
2
+ /**
3
+ * Abstract class used to load a manifest.json file.
4
+ * Used as a base for plugins and protocols.
5
+ *
6
+ * @param {Kuzzle} kuzzle - Kuzzle instance
7
+ * @param {string} pluginPath - Absolute path to the plugin directory
8
+ */
9
+ declare class AbstractManifest {
10
+ constructor(pluginPath: any);
11
+ path: any;
12
+ manifestPath: string;
13
+ name: any;
14
+ kuzzleVersion: any;
15
+ raw: any;
16
+ load(): void;
17
+ /**
18
+ * This object can be stringified and exported, most notably by the
19
+ * server:info API action
20
+ * It's important that only relevant properties are stringified, to
21
+ * prevent circular JSONs (especially with the kuzzle object ref) and
22
+ * to prevent leaking important information
23
+ *
24
+ * @returns {Object}
25
+ */
26
+ toJSON(): any;
27
+ }
@@ -0,0 +1,85 @@
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 _ = require("lodash");
23
+ const path = require("path");
24
+ const semver = require("semver");
25
+ const kerror = require("../../kerror").wrap("plugin", "manifest");
26
+ /**
27
+ * Abstract class used to load a manifest.json file.
28
+ * Used as a base for plugins and protocols.
29
+ *
30
+ * @param {Kuzzle} kuzzle - Kuzzle instance
31
+ * @param {string} pluginPath - Absolute path to the plugin directory
32
+ */
33
+ class AbstractManifest {
34
+ constructor(pluginPath) {
35
+ this.path = pluginPath;
36
+ this.manifestPath = path.resolve(this.path, "manifest.json");
37
+ this.name = null;
38
+ this.kuzzleVersion = null;
39
+ this.raw = null;
40
+ }
41
+ load() {
42
+ try {
43
+ this.raw = require(this.manifestPath);
44
+ }
45
+ catch (e) {
46
+ throw kerror.get("cannot_load", this.manifestPath, e.message);
47
+ }
48
+ if (_.isNil(this.raw.kuzzleVersion)) {
49
+ throw kerror.get("missing_version", this.manifestPath);
50
+ }
51
+ this.kuzzleVersion = this.raw.kuzzleVersion;
52
+ if (!semver.satisfies(global.kuzzle.config.version, this.kuzzleVersion, {
53
+ includePrerelease: true,
54
+ })) {
55
+ throw kerror.get("version_mismatch", this.path, global.kuzzle.config.version, this.kuzzleVersion);
56
+ }
57
+ if (!_.isNil(this.raw.name)) {
58
+ if (typeof this.raw.name !== "string" || this.raw.name.length === 0) {
59
+ throw kerror.get("invalid_name_type", this.manifestPath);
60
+ }
61
+ this.name = this.raw.name;
62
+ }
63
+ else {
64
+ throw kerror.get("missing_name", this.manifestPath);
65
+ }
66
+ }
67
+ /**
68
+ * This object can be stringified and exported, most notably by the
69
+ * server:info API action
70
+ * It's important that only relevant properties are stringified, to
71
+ * prevent circular JSONs (especially with the kuzzle object ref) and
72
+ * to prevent leaking important information
73
+ *
74
+ * @returns {Object}
75
+ */
76
+ toJSON() {
77
+ return {
78
+ kuzzleVersion: this.kuzzleVersion,
79
+ name: this.name,
80
+ path: this.path,
81
+ };
82
+ }
83
+ }
84
+ module.exports = AbstractManifest;
85
+ //# sourceMappingURL=abstractManifest.js.map
@@ -0,0 +1,7 @@
1
+ export = ImpersonatedSDK;
2
+ declare class ImpersonatedSDK {
3
+ constructor(kuid: any, options?: {});
4
+ kuid: any;
5
+ checkRights: any;
6
+ query(request: any, options?: {}): Promise<import("kuzzle-sdk").ResponsePayload<import("kuzzle-sdk").JSONObject>>;
7
+ }
@@ -0,0 +1,80 @@
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 nativeControllers = require("../../../api/controllers");
23
+ class ImpersonatedSDK {
24
+ constructor(kuid, options = {}) {
25
+ this.kuid = kuid;
26
+ this.checkRights = options.checkRights || false;
27
+ for (const controller of Object.keys(nativeControllers)) {
28
+ // @todo in the future, native controller names should be normalized to sdk naming
29
+ const controllerName = controller
30
+ .replace("Controller", "")
31
+ .replace("MemoryStorage", "ms")
32
+ .toLowerCase();
33
+ const controllerProxy = `${controllerName}Proxy`;
34
+ if (!global.app.sdk[controllerName]) {
35
+ continue;
36
+ }
37
+ // Lazily wrap in runtime; native 'sdk' controllers and induce custom 'query' beaviour
38
+ Reflect.defineProperty(this, controllerName, {
39
+ get: () => {
40
+ // If the requested controller has not yet been proxied
41
+ if (!this[controllerProxy]) {
42
+ // Create a proxy object to inject our local 'query' behaviour
43
+ // in the underlying base 'sdk' action methods so we can send
44
+ // impersonation configuration (kuid & checkRights) to the funnel
45
+ this[controllerProxy] = new Proxy(global.app.sdk[controllerName], {
46
+ get: (controllerInstance, actionName) => {
47
+ const customContext = {
48
+ kuzzle: global.app.sdk,
49
+ query: (request, opts) => {
50
+ request.controller = controllerName;
51
+ // Call the 'ImpersonatedSdk.query' method instead
52
+ return this.query(request, opts);
53
+ },
54
+ };
55
+ // Make sure we bring any local methods into our new custom context
56
+ Object.getOwnPropertyNames(Object.getPrototypeOf(global.app.sdk[controllerName])).forEach((localMethod) => {
57
+ if (!["constructor", "query"].includes(localMethod)) {
58
+ customContext[localMethod] =
59
+ controllerInstance[localMethod];
60
+ }
61
+ });
62
+ // Return the original SDK action method AND also bind our merged custom context
63
+ // containing our 'query' method and any original local methods
64
+ return controllerInstance[actionName].bind(customContext);
65
+ },
66
+ });
67
+ }
68
+ return this[controllerProxy];
69
+ },
70
+ });
71
+ }
72
+ }
73
+ query(request, options = {}) {
74
+ request.__kuid__ = this.kuid;
75
+ request.__checkRights__ = this.checkRights;
76
+ return global.app.sdk.query(request, options);
77
+ }
78
+ }
79
+ module.exports = ImpersonatedSDK;
80
+ //# sourceMappingURL=impersonatedSdk.js.map
@@ -31,8 +31,8 @@ export declare class Store {
31
31
  updateByQuery: (...args: any[]) => Promise<any>;
32
32
  updateCollection: (...args: any[]) => Promise<any>;
33
33
  updateMapping: (...args: any[]) => Promise<any>;
34
- protected index: string;
35
- protected scope: storeScopeEnum;
34
+ index: string;
35
+ scope: storeScopeEnum;
36
36
  private readonly logger;
37
37
  constructor(index: string, scope: storeScopeEnum);
38
38
  /**
@@ -0,0 +1,94 @@
1
+ /// <reference types="node" />
2
+ import { Request, RequestContext } from "../../api/request";
3
+ type StatsMaps = {
4
+ completedRequests: Map<string, number>;
5
+ connections: Map<string, number>;
6
+ failedRequests: Map<string, number>;
7
+ ongoingRequests: Map<string, number>;
8
+ };
9
+ type SerializableStats = {
10
+ completedRequests: Record<string, number>;
11
+ connections: Record<string, number>;
12
+ failedRequests: Record<string, number>;
13
+ ongoingRequests: Record<string, number>;
14
+ };
15
+ type StatsFrame = SerializableStats & {
16
+ timestamp: number;
17
+ };
18
+ type StatsResponse = {
19
+ hits: StatsFrame[];
20
+ total: number;
21
+ };
22
+ type LastStatsResponse = StatsFrame | (StatsMaps & {
23
+ timestamp: number;
24
+ });
25
+ /**
26
+ * @class Statistics
27
+ * @param {Kuzzle} kuzzle
28
+ */
29
+ export default class Statistics {
30
+ private cacheKeyPrefix;
31
+ enabled: boolean;
32
+ ttl: number;
33
+ interval: number;
34
+ lastFrame: number | null;
35
+ timer: NodeJS.Timeout | null;
36
+ currentStats: StatsMaps;
37
+ private readonly logger;
38
+ constructor();
39
+ /**
40
+ * Start recording a new request
41
+ *
42
+ * @param {Request} request
43
+ */
44
+ startRequest(request?: Request): void;
45
+ /**
46
+ * Mark an ongoing request as 'completed'
47
+ *
48
+ * @param {Request} request
49
+ */
50
+ completedRequest(request?: Request): void;
51
+ /**
52
+ * Mark an ongoing request as 'completed'
53
+ *
54
+ * @param {Request} request
55
+ */
56
+ failedRequest(request?: Request): void;
57
+ /**
58
+ * Register a newly created connection
59
+ *
60
+ * @param {RequestContext} requestContext
61
+ */
62
+ newConnection(requestContext: RequestContext): void;
63
+ /**
64
+ * Removes a connection from the statistics
65
+ *
66
+ * @param {RequestContext} requestContext
67
+ */
68
+ dropConnection(requestContext: RequestContext): void;
69
+ /**
70
+ * Gets stored statistics frames from a date
71
+ *
72
+ * @returns {Promise}
73
+ */
74
+ getLastStats(): Promise<LastStatsResponse>;
75
+ /**
76
+ * Gets the last saved statistics frame from a date
77
+ *
78
+ * @param {Request} request
79
+ * @returns {Promise<Object>}
80
+ */
81
+ getStats(request?: Request): Promise<StatsResponse>;
82
+ /**
83
+ * Gets all the saved statistics
84
+ *
85
+ * @returns {Promise<Object>}
86
+ */
87
+ getAllStats(): Promise<StatsResponse>;
88
+ /**
89
+ * Init statistics component
90
+ */
91
+ init(): void;
92
+ writeStats(): Promise<void>;
93
+ }
94
+ export {};