@webda/core 4.0.0-beta.1 → 4.0.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 (675) hide show
  1. package/README.md +252 -0
  2. package/lib/application/application.d.ts +437 -0
  3. package/lib/application/application.d.ts.map +1 -0
  4. package/lib/application/application.js +792 -0
  5. package/lib/application/application.js.map +1 -0
  6. package/lib/application/hooks.d.ts +34 -0
  7. package/lib/application/hooks.d.ts.map +1 -0
  8. package/lib/application/hooks.js +57 -0
  9. package/lib/application/hooks.js.map +1 -0
  10. package/lib/application/iapplication.d.ts +43 -0
  11. package/lib/application/iapplication.d.ts.map +1 -0
  12. package/lib/application/iapplication.js +2 -0
  13. package/lib/application/iapplication.js.map +1 -0
  14. package/lib/application/iconfiguration.d.ts +176 -0
  15. package/lib/application/iconfiguration.d.ts.map +1 -0
  16. package/lib/application/iconfiguration.js +8 -0
  17. package/lib/application/iconfiguration.js.map +1 -0
  18. package/lib/application/runner.d.ts +8 -0
  19. package/lib/application/runner.d.ts.map +1 -0
  20. package/lib/application/runner.js +26 -0
  21. package/lib/application/runner.js.map +1 -0
  22. package/lib/application/unpackedapplication.d.ts +104 -0
  23. package/lib/application/unpackedapplication.d.ts.map +1 -0
  24. package/lib/application/unpackedapplication.js +492 -0
  25. package/lib/application/unpackedapplication.js.map +1 -0
  26. package/lib/bin/cli-phase.d.ts +28 -0
  27. package/lib/bin/cli-phase.d.ts.map +1 -0
  28. package/lib/bin/cli-phase.js +44 -0
  29. package/lib/bin/cli-phase.js.map +1 -0
  30. package/lib/bin/cli.d.ts +161 -0
  31. package/lib/bin/cli.d.ts.map +1 -0
  32. package/lib/bin/cli.js +828 -0
  33. package/lib/bin/cli.js.map +1 -0
  34. package/lib/bin/launcher.d.ts +3 -0
  35. package/lib/bin/launcher.d.ts.map +1 -0
  36. package/lib/bin/launcher.js +50 -0
  37. package/lib/bin/launcher.js.map +1 -0
  38. package/lib/cache/cache.d.ts +33 -0
  39. package/lib/cache/cache.d.ts.map +1 -0
  40. package/lib/cache/cache.js +8 -0
  41. package/lib/cache/cache.js.map +1 -0
  42. package/lib/{services/configuration.d.ts → configurations/configuration.service.d.ts} +58 -49
  43. package/lib/configurations/configuration.service.d.ts.map +1 -0
  44. package/lib/configurations/configuration.service.js +248 -0
  45. package/lib/configurations/configuration.service.js.map +1 -0
  46. package/lib/configurations/fileconfiguration.service.d.ts +30 -0
  47. package/lib/configurations/fileconfiguration.service.d.ts.map +1 -0
  48. package/lib/configurations/fileconfiguration.service.js +65 -0
  49. package/lib/configurations/fileconfiguration.service.js.map +1 -0
  50. package/lib/configurations/kubernetesconfiguration.service.d.ts +43 -0
  51. package/lib/configurations/kubernetesconfiguration.service.d.ts.map +1 -0
  52. package/lib/configurations/kubernetesconfiguration.service.js +83 -0
  53. package/lib/configurations/kubernetesconfiguration.service.js.map +1 -0
  54. package/lib/contexts/execution.d.ts +33 -0
  55. package/lib/contexts/execution.d.ts.map +1 -0
  56. package/lib/contexts/execution.js +73 -0
  57. package/lib/contexts/execution.js.map +1 -0
  58. package/lib/contexts/globalcontext.d.ts +29 -0
  59. package/lib/contexts/globalcontext.d.ts.map +1 -0
  60. package/lib/contexts/globalcontext.js +38 -0
  61. package/lib/contexts/globalcontext.js.map +1 -0
  62. package/lib/{utils → contexts}/httpcontext.d.ts +45 -19
  63. package/lib/contexts/httpcontext.d.ts.map +1 -0
  64. package/lib/{utils → contexts}/httpcontext.js +102 -34
  65. package/lib/contexts/httpcontext.js.map +1 -0
  66. package/lib/contexts/icontext.d.ts +236 -0
  67. package/lib/contexts/icontext.d.ts.map +1 -0
  68. package/lib/contexts/icontext.js +230 -0
  69. package/lib/contexts/icontext.js.map +1 -0
  70. package/lib/contexts/operationcontext.d.ts +179 -0
  71. package/lib/contexts/operationcontext.d.ts.map +1 -0
  72. package/lib/contexts/operationcontext.js +358 -0
  73. package/lib/contexts/operationcontext.js.map +1 -0
  74. package/lib/contexts/simplecontext.d.ts +31 -0
  75. package/lib/contexts/simplecontext.d.ts.map +1 -0
  76. package/lib/contexts/simplecontext.js +45 -0
  77. package/lib/contexts/simplecontext.js.map +1 -0
  78. package/lib/contexts/webcontext.d.ts +218 -0
  79. package/lib/contexts/webcontext.d.ts.map +1 -0
  80. package/lib/contexts/webcontext.js +389 -0
  81. package/lib/contexts/webcontext.js.map +1 -0
  82. package/lib/core/authorizer.d.ts +23 -0
  83. package/lib/core/authorizer.d.ts.map +1 -0
  84. package/lib/core/authorizer.js +17 -0
  85. package/lib/core/authorizer.js.map +1 -0
  86. package/lib/core/core.d.ts +225 -0
  87. package/lib/core/core.d.ts.map +1 -0
  88. package/lib/core/core.js +576 -0
  89. package/lib/core/core.js.map +1 -0
  90. package/lib/core/hooks.d.ts +72 -0
  91. package/lib/core/hooks.d.ts.map +1 -0
  92. package/lib/core/hooks.js +73 -0
  93. package/lib/core/hooks.js.map +1 -0
  94. package/lib/core/icore.d.ts +249 -0
  95. package/lib/core/icore.d.ts.map +1 -0
  96. package/lib/core/icore.js +15 -0
  97. package/lib/core/icore.js.map +1 -0
  98. package/lib/core/instancestorage.d.ts +61 -0
  99. package/lib/core/instancestorage.d.ts.map +1 -0
  100. package/lib/core/instancestorage.js +75 -0
  101. package/lib/core/instancestorage.js.map +1 -0
  102. package/lib/core/operations.d.ts +181 -0
  103. package/lib/core/operations.d.ts.map +1 -0
  104. package/lib/core/operations.js +559 -0
  105. package/lib/core/operations.js.map +1 -0
  106. package/lib/errors/errors.d.ts +126 -0
  107. package/lib/errors/errors.d.ts.map +1 -0
  108. package/lib/errors/errors.js +165 -0
  109. package/lib/errors/errors.js.map +1 -0
  110. package/lib/events/asynceventemitter.d.ts +159 -0
  111. package/lib/events/asynceventemitter.d.ts.map +1 -0
  112. package/lib/events/asynceventemitter.js +152 -0
  113. package/lib/events/asynceventemitter.js.map +1 -0
  114. package/lib/events/events.d.ts +112 -0
  115. package/lib/events/events.d.ts.map +1 -0
  116. package/lib/events/events.js +45 -0
  117. package/lib/events/events.js.map +1 -0
  118. package/lib/index.d.ts +84 -51
  119. package/lib/index.d.ts.map +1 -0
  120. package/lib/index.js +82 -59
  121. package/lib/index.js.map +1 -1
  122. package/lib/loggers/console.service.d.ts +24 -0
  123. package/lib/loggers/console.service.d.ts.map +1 -0
  124. package/lib/loggers/console.service.js +30 -0
  125. package/lib/loggers/console.service.js.map +1 -0
  126. package/lib/loggers/file.service.d.ts +25 -0
  127. package/lib/loggers/file.service.d.ts.map +1 -0
  128. package/lib/loggers/file.service.js +33 -0
  129. package/lib/loggers/file.service.js.map +1 -0
  130. package/lib/loggers/hooks.d.ts +20 -0
  131. package/lib/loggers/hooks.d.ts.map +1 -0
  132. package/lib/loggers/hooks.js +40 -0
  133. package/lib/loggers/hooks.js.map +1 -0
  134. package/lib/loggers/ilogger.d.ts +76 -0
  135. package/lib/loggers/ilogger.d.ts.map +1 -0
  136. package/lib/loggers/ilogger.js +108 -0
  137. package/lib/loggers/ilogger.js.map +1 -0
  138. package/lib/loggers/logger.d.ts +13 -0
  139. package/lib/loggers/logger.d.ts.map +1 -0
  140. package/lib/loggers/logger.js +18 -0
  141. package/lib/loggers/logger.js.map +1 -0
  142. package/lib/loggers/memory.service.d.ts +18 -0
  143. package/lib/loggers/memory.service.d.ts.map +1 -0
  144. package/lib/loggers/memory.service.js +21 -0
  145. package/lib/loggers/memory.service.js.map +1 -0
  146. package/lib/loggers/params.d.ts +47 -0
  147. package/lib/loggers/params.d.ts.map +1 -0
  148. package/lib/loggers/params.js +56 -0
  149. package/lib/loggers/params.js.map +1 -0
  150. package/lib/metrics/metrics.d.ts +25 -0
  151. package/lib/metrics/metrics.d.ts.map +1 -0
  152. package/lib/metrics/metrics.js +51 -0
  153. package/lib/metrics/metrics.js.map +1 -0
  154. package/lib/models/aclmodel.d.ts +21 -77
  155. package/lib/models/aclmodel.d.ts.map +1 -0
  156. package/lib/models/aclmodel.js +27 -204
  157. package/lib/models/aclmodel.js.map +1 -1
  158. package/lib/models/coremodel.model.d.ts +5 -0
  159. package/lib/models/coremodel.model.d.ts.map +1 -0
  160. package/lib/models/coremodel.model.js +5 -0
  161. package/lib/models/coremodel.model.js.map +1 -0
  162. package/lib/models/decorator.d.ts +63 -0
  163. package/lib/models/decorator.d.ts.map +1 -0
  164. package/lib/models/decorator.js +63 -0
  165. package/lib/models/decorator.js.map +1 -0
  166. package/lib/models/deployment.d.ts +2 -1
  167. package/lib/models/deployment.d.ts.map +1 -0
  168. package/lib/models/ident.model.d.ts +89 -0
  169. package/lib/models/ident.model.d.ts.map +1 -0
  170. package/lib/models/ident.model.js +115 -0
  171. package/lib/models/ident.model.js.map +1 -0
  172. package/lib/models/ownermodel.model.d.ts +68 -0
  173. package/lib/models/ownermodel.model.d.ts.map +1 -0
  174. package/lib/models/ownermodel.model.js +112 -0
  175. package/lib/models/ownermodel.model.js.map +1 -0
  176. package/lib/models/registry.model.d.ts +76 -0
  177. package/lib/models/registry.model.d.ts.map +1 -0
  178. package/lib/models/registry.model.js +104 -0
  179. package/lib/models/registry.model.js.map +1 -0
  180. package/lib/models/rolemodel.model.d.ts +28 -0
  181. package/lib/models/rolemodel.model.d.ts.map +1 -0
  182. package/lib/models/rolemodel.model.js +53 -0
  183. package/lib/models/rolemodel.model.js.map +1 -0
  184. package/lib/models/simpleuser.model.d.ts +78 -0
  185. package/lib/models/simpleuser.model.d.ts.map +1 -0
  186. package/lib/models/simpleuser.model.js +123 -0
  187. package/lib/models/simpleuser.model.js.map +1 -0
  188. package/lib/models/types.d.ts +113 -0
  189. package/lib/models/types.d.ts.map +1 -0
  190. package/lib/models/types.js +2 -0
  191. package/lib/models/types.js.map +1 -0
  192. package/lib/models/user.model.d.ts +103 -0
  193. package/lib/models/user.model.d.ts.map +1 -0
  194. package/lib/models/user.model.js +125 -0
  195. package/lib/models/user.model.js.map +1 -0
  196. package/lib/queues/memoryqueue.service.d.ts +72 -0
  197. package/lib/queues/memoryqueue.service.d.ts.map +1 -0
  198. package/lib/queues/memoryqueue.service.js +136 -0
  199. package/lib/queues/memoryqueue.service.js.map +1 -0
  200. package/lib/queues/pubsubservice.d.ts +9 -6
  201. package/lib/queues/pubsubservice.d.ts.map +1 -0
  202. package/lib/queues/pubsubservice.js +5 -4
  203. package/lib/queues/pubsubservice.js.map +1 -1
  204. package/lib/queues/queueservice.d.ts +10 -11
  205. package/lib/queues/queueservice.d.ts.map +1 -0
  206. package/lib/queues/queueservice.js +48 -20
  207. package/lib/queues/queueservice.js.map +1 -1
  208. package/lib/rest/hooks.d.ts +8 -0
  209. package/lib/rest/hooks.d.ts.map +1 -0
  210. package/lib/rest/hooks.js +10 -0
  211. package/lib/rest/hooks.js.map +1 -0
  212. package/lib/rest/irest.d.ts +212 -0
  213. package/lib/rest/irest.d.ts.map +1 -0
  214. package/lib/rest/irest.js +39 -0
  215. package/lib/rest/irest.js.map +1 -0
  216. package/lib/rest/originfilter.d.ts +38 -0
  217. package/lib/rest/originfilter.d.ts.map +1 -0
  218. package/lib/rest/originfilter.js +61 -0
  219. package/lib/rest/originfilter.js.map +1 -0
  220. package/lib/rest/restoperationstransport.service.d.ts +193 -0
  221. package/lib/rest/restoperationstransport.service.d.ts.map +1 -0
  222. package/lib/rest/restoperationstransport.service.js +780 -0
  223. package/lib/rest/restoperationstransport.service.js.map +1 -0
  224. package/lib/rest/router.service.d.ts +244 -0
  225. package/lib/rest/router.service.d.ts.map +1 -0
  226. package/lib/rest/router.service.js +843 -0
  227. package/lib/rest/router.service.js.map +1 -0
  228. package/lib/schemas/hooks.d.ts +48 -0
  229. package/lib/schemas/hooks.d.ts.map +1 -0
  230. package/lib/schemas/hooks.js +152 -0
  231. package/lib/schemas/hooks.js.map +1 -0
  232. package/lib/services/audit.model.d.ts +208 -0
  233. package/lib/services/audit.model.d.ts.map +1 -0
  234. package/lib/services/audit.model.js +431 -0
  235. package/lib/services/audit.model.js.map +1 -0
  236. package/lib/services/{authentication.d.ts → authentication.service.d.ts} +140 -58
  237. package/lib/services/authentication.service.d.ts.map +1 -0
  238. package/lib/services/authentication.service.js +932 -0
  239. package/lib/services/authentication.service.js.map +1 -0
  240. package/lib/services/binary.service.d.ts +808 -0
  241. package/lib/services/binary.service.d.ts.map +1 -0
  242. package/lib/services/binary.service.js +1365 -0
  243. package/lib/services/binary.service.js.map +1 -0
  244. package/lib/services/cloudbinary.d.ts +19 -13
  245. package/lib/services/cloudbinary.d.ts.map +1 -0
  246. package/lib/services/cloudbinary.js +24 -18
  247. package/lib/services/cloudbinary.js.map +1 -1
  248. package/lib/services/command.d.ts +118 -0
  249. package/lib/services/command.d.ts.map +1 -0
  250. package/lib/services/command.js +97 -0
  251. package/lib/services/command.js.map +1 -0
  252. package/lib/services/cron.service.d.ts +142 -0
  253. package/lib/services/cron.service.d.ts.map +1 -0
  254. package/lib/services/cron.service.js +291 -0
  255. package/lib/services/cron.service.js.map +1 -0
  256. package/lib/services/{cryptoservice.d.ts → cryptoservice.service.d.ts} +77 -142
  257. package/lib/services/cryptoservice.service.d.ts.map +1 -0
  258. package/lib/services/cryptoservice.service.js +527 -0
  259. package/lib/services/cryptoservice.service.js.map +1 -0
  260. package/lib/services/debugmailer.service.d.ts +49 -0
  261. package/lib/services/debugmailer.service.d.ts.map +1 -0
  262. package/lib/services/debugmailer.service.js +66 -0
  263. package/lib/services/debugmailer.service.js.map +1 -0
  264. package/lib/services/domainservice.service.d.ts +203 -0
  265. package/lib/services/domainservice.service.d.ts.map +1 -0
  266. package/lib/services/domainservice.service.js +600 -0
  267. package/lib/services/domainservice.service.js.map +1 -0
  268. package/lib/services/httpserver.service.d.ts +248 -0
  269. package/lib/services/httpserver.service.d.ts.map +1 -0
  270. package/lib/services/httpserver.service.js +673 -0
  271. package/lib/services/httpserver.service.js.map +1 -0
  272. package/lib/services/iauthentication.d.ts +9 -0
  273. package/lib/services/iauthentication.d.ts.map +1 -0
  274. package/lib/services/iauthentication.js +2 -0
  275. package/lib/services/iauthentication.js.map +1 -0
  276. package/lib/services/icryptoservice.d.ts +127 -0
  277. package/lib/services/icryptoservice.d.ts.map +1 -0
  278. package/lib/services/icryptoservice.js +68 -0
  279. package/lib/services/icryptoservice.js.map +1 -0
  280. package/lib/services/imailer.d.ts +17 -0
  281. package/lib/services/imailer.d.ts.map +1 -0
  282. package/lib/services/imailer.js +2 -0
  283. package/lib/services/imailer.js.map +1 -0
  284. package/lib/services/iservice.d.ts +104 -0
  285. package/lib/services/iservice.d.ts.map +1 -0
  286. package/lib/services/iservice.js +63 -0
  287. package/lib/services/iservice.js.map +1 -0
  288. package/lib/services/mailer.service.d.ts +220 -0
  289. package/lib/services/mailer.service.d.ts.map +1 -0
  290. package/lib/services/mailer.service.js +251 -0
  291. package/lib/services/mailer.service.js.map +1 -0
  292. package/lib/services/{notificationservice.d.ts → notificationservice.service.d.ts} +10 -10
  293. package/lib/services/notificationservice.service.d.ts.map +1 -0
  294. package/lib/services/{notificationservice.js → notificationservice.service.js} +24 -12
  295. package/lib/services/notificationservice.service.js.map +1 -0
  296. package/lib/services/oauth.d.ts +58 -31
  297. package/lib/services/oauth.d.ts.map +1 -0
  298. package/lib/services/oauth.js +365 -251
  299. package/lib/services/oauth.js.map +1 -1
  300. package/lib/services/operationstransport.d.ts +65 -0
  301. package/lib/services/operationstransport.d.ts.map +1 -0
  302. package/lib/services/operationstransport.js +103 -0
  303. package/lib/services/operationstransport.js.map +1 -0
  304. package/lib/services/{prometheus.d.ts → prometheus.service.d.ts} +13 -11
  305. package/lib/services/prometheus.service.d.ts.map +1 -0
  306. package/lib/services/prometheus.service.js +203 -0
  307. package/lib/services/prometheus.service.js.map +1 -0
  308. package/lib/services/resource.service.d.ts +121 -0
  309. package/lib/services/resource.service.d.ts.map +1 -0
  310. package/lib/services/resource.service.js +301 -0
  311. package/lib/services/resource.service.js.map +1 -0
  312. package/lib/services/service.d.ts +88 -189
  313. package/lib/services/service.d.ts.map +1 -0
  314. package/lib/services/service.js +407 -432
  315. package/lib/services/service.js.map +1 -1
  316. package/lib/services/servicecommands.d.ts +99 -0
  317. package/lib/services/servicecommands.d.ts.map +1 -0
  318. package/lib/services/servicecommands.js +165 -0
  319. package/lib/services/servicecommands.js.map +1 -0
  320. package/lib/services/serviceparameters.d.ts +33 -0
  321. package/lib/services/serviceparameters.d.ts.map +1 -0
  322. package/lib/services/serviceparameters.js +79 -0
  323. package/lib/services/serviceparameters.js.map +1 -0
  324. package/lib/{utils → session}/cookie.d.ts +32 -18
  325. package/lib/session/cookie.d.ts.map +1 -0
  326. package/lib/{utils → session}/cookie.js +76 -23
  327. package/lib/session/cookie.js.map +1 -0
  328. package/lib/session/manager.model.d.ts +71 -0
  329. package/lib/session/manager.model.d.ts.map +1 -0
  330. package/lib/session/manager.model.js +155 -0
  331. package/lib/session/manager.model.js.map +1 -0
  332. package/lib/session/session.d.ts +57 -0
  333. package/lib/session/session.d.ts.map +1 -0
  334. package/lib/session/session.js +126 -0
  335. package/lib/session/session.js.map +1 -0
  336. package/lib/stores/istore.d.ts +99 -0
  337. package/lib/stores/istore.d.ts.map +1 -0
  338. package/lib/stores/istore.js +26 -0
  339. package/lib/stores/istore.js.map +1 -0
  340. package/lib/stores/memory.service.d.ts +114 -0
  341. package/lib/stores/memory.service.d.ts.map +1 -0
  342. package/lib/stores/memory.service.js +343 -0
  343. package/lib/stores/memory.service.js.map +1 -0
  344. package/lib/stores/store.d.ts +127 -768
  345. package/lib/stores/store.d.ts.map +1 -0
  346. package/lib/stores/store.js +258 -1718
  347. package/lib/stores/store.js.map +1 -1
  348. package/lib/templates/templates.d.ts +39 -0
  349. package/lib/templates/templates.d.ts.map +1 -0
  350. package/lib/templates/templates.js +92 -0
  351. package/lib/templates/templates.js.map +1 -0
  352. package/lib/test/application.d.ts +174 -0
  353. package/lib/test/application.d.ts.map +1 -0
  354. package/lib/test/application.js +288 -0
  355. package/lib/test/application.js.map +1 -0
  356. package/lib/test/asyncstorage.d.ts +16 -0
  357. package/lib/test/asyncstorage.d.ts.map +1 -0
  358. package/lib/test/asyncstorage.js +32 -0
  359. package/lib/test/asyncstorage.js.map +1 -0
  360. package/lib/test/core.d.ts +63 -0
  361. package/lib/test/core.d.ts.map +1 -0
  362. package/lib/test/core.js +190 -0
  363. package/lib/test/core.js.map +1 -0
  364. package/lib/test/index.d.ts +7 -0
  365. package/lib/test/index.d.ts.map +1 -0
  366. package/lib/test/index.js +8 -0
  367. package/lib/test/index.js.map +1 -0
  368. package/lib/test/internal.d.ts +34 -0
  369. package/lib/test/internal.d.ts.map +1 -0
  370. package/lib/test/internal.js +156 -0
  371. package/lib/test/internal.js.map +1 -0
  372. package/lib/test/objects.d.ts +318 -0
  373. package/lib/test/objects.d.ts.map +1 -0
  374. package/lib/test/objects.js +443 -0
  375. package/lib/test/objects.js.map +1 -0
  376. package/lib/utils/abstractdeployer.d.ts +5 -2
  377. package/lib/utils/abstractdeployer.d.ts.map +1 -0
  378. package/lib/utils/abstractdeployer.js +3 -0
  379. package/lib/utils/abstractdeployer.js.map +1 -1
  380. package/package.json +85 -56
  381. package/test/cachedapp/webda.config.json +1 -5
  382. package/test/config-cached.json +1 -5
  383. package/test/config.json +6 -99
  384. package/test/data/.env +1 -0
  385. package/test/my-cnf.json +9 -0
  386. package/webda.module.json +3462 -2231
  387. package/lib/application.d.ts +0 -876
  388. package/lib/application.js +0 -741
  389. package/lib/application.js.map +0 -1
  390. package/lib/application.spec.d.ts +0 -1
  391. package/lib/application.spec.js +0 -234
  392. package/lib/application.spec.js.map +0 -1
  393. package/lib/core.d.ts +0 -740
  394. package/lib/core.js +0 -1310
  395. package/lib/core.js.map +0 -1
  396. package/lib/core.spec.d.ts +0 -1
  397. package/lib/core.spec.js +0 -761
  398. package/lib/core.spec.js.map +0 -1
  399. package/lib/errors.d.ts +0 -65
  400. package/lib/errors.js +0 -113
  401. package/lib/errors.js.map +0 -1
  402. package/lib/errors.spec.d.ts +0 -1
  403. package/lib/errors.spec.js +0 -33
  404. package/lib/errors.spec.js.map +0 -1
  405. package/lib/models/aclmodel.spec.d.ts +0 -1
  406. package/lib/models/aclmodel.spec.js +0 -187
  407. package/lib/models/aclmodel.spec.js.map +0 -1
  408. package/lib/models/coremodel.d.ts +0 -887
  409. package/lib/models/coremodel.js +0 -1208
  410. package/lib/models/coremodel.js.map +0 -1
  411. package/lib/models/coremodel.spec.d.ts +0 -1
  412. package/lib/models/coremodel.spec.js +0 -462
  413. package/lib/models/coremodel.spec.js.map +0 -1
  414. package/lib/models/ident.d.ts +0 -53
  415. package/lib/models/ident.js +0 -40
  416. package/lib/models/ident.js.map +0 -1
  417. package/lib/models/ident.spec.d.ts +0 -1
  418. package/lib/models/ident.spec.js +0 -43
  419. package/lib/models/ident.spec.js.map +0 -1
  420. package/lib/models/ownermodel.d.ts +0 -50
  421. package/lib/models/ownermodel.js +0 -65
  422. package/lib/models/ownermodel.js.map +0 -1
  423. package/lib/models/ownermodel.spec.d.ts +0 -1
  424. package/lib/models/ownermodel.spec.js +0 -191
  425. package/lib/models/ownermodel.spec.js.map +0 -1
  426. package/lib/models/relations.d.ts +0 -181
  427. package/lib/models/relations.js +0 -157
  428. package/lib/models/relations.js.map +0 -1
  429. package/lib/models/relations.spec.d.ts +0 -12
  430. package/lib/models/relations.spec.js +0 -224
  431. package/lib/models/relations.spec.js.map +0 -1
  432. package/lib/models/rolemodel.d.ts +0 -10
  433. package/lib/models/rolemodel.js +0 -35
  434. package/lib/models/rolemodel.js.map +0 -1
  435. package/lib/models/rolemodel.spec.d.ts +0 -1
  436. package/lib/models/rolemodel.spec.js +0 -86
  437. package/lib/models/rolemodel.spec.js.map +0 -1
  438. package/lib/models/user.d.ts +0 -100
  439. package/lib/models/user.js +0 -157
  440. package/lib/models/user.js.map +0 -1
  441. package/lib/models/user.spec.d.ts +0 -1
  442. package/lib/models/user.spec.js +0 -88
  443. package/lib/models/user.spec.js.map +0 -1
  444. package/lib/queues/filequeue.d.ts +0 -58
  445. package/lib/queues/filequeue.js +0 -131
  446. package/lib/queues/filequeue.js.map +0 -1
  447. package/lib/queues/filequeue.spec.d.ts +0 -1
  448. package/lib/queues/filequeue.spec.js +0 -78
  449. package/lib/queues/filequeue.spec.js.map +0 -1
  450. package/lib/queues/memoryqueue.d.ts +0 -45
  451. package/lib/queues/memoryqueue.js +0 -81
  452. package/lib/queues/memoryqueue.js.map +0 -1
  453. package/lib/queues/memoryqueue.spec.d.ts +0 -1
  454. package/lib/queues/memoryqueue.spec.js +0 -192
  455. package/lib/queues/memoryqueue.spec.js.map +0 -1
  456. package/lib/queues/queue.spec.d.ts +0 -5
  457. package/lib/queues/queue.spec.js +0 -55
  458. package/lib/queues/queue.spec.js.map +0 -1
  459. package/lib/router.d.ts +0 -172
  460. package/lib/router.js +0 -419
  461. package/lib/router.js.map +0 -1
  462. package/lib/router.spec.d.ts +0 -1
  463. package/lib/router.spec.js +0 -229
  464. package/lib/router.spec.js.map +0 -1
  465. package/lib/services/asyncevents.d.ts +0 -151
  466. package/lib/services/asyncevents.js +0 -217
  467. package/lib/services/asyncevents.js.map +0 -1
  468. package/lib/services/asyncevents.spec.d.ts +0 -1
  469. package/lib/services/asyncevents.spec.js +0 -118
  470. package/lib/services/asyncevents.spec.js.map +0 -1
  471. package/lib/services/authentication.js +0 -772
  472. package/lib/services/authentication.js.map +0 -1
  473. package/lib/services/authentication.spec.d.ts +0 -1
  474. package/lib/services/authentication.spec.js +0 -458
  475. package/lib/services/authentication.spec.js.map +0 -1
  476. package/lib/services/binary.d.ts +0 -549
  477. package/lib/services/binary.js +0 -986
  478. package/lib/services/binary.js.map +0 -1
  479. package/lib/services/binary.spec.d.ts +0 -44
  480. package/lib/services/binary.spec.js +0 -438
  481. package/lib/services/binary.spec.js.map +0 -1
  482. package/lib/services/cloudbinary.spec.d.ts +0 -13
  483. package/lib/services/cloudbinary.spec.js +0 -192
  484. package/lib/services/cloudbinary.spec.js.map +0 -1
  485. package/lib/services/configuration.js +0 -178
  486. package/lib/services/configuration.js.map +0 -1
  487. package/lib/services/configuration.spec.d.ts +0 -1
  488. package/lib/services/configuration.spec.js +0 -87
  489. package/lib/services/configuration.spec.js.map +0 -1
  490. package/lib/services/cron.d.ts +0 -73
  491. package/lib/services/cron.js +0 -141
  492. package/lib/services/cron.js.map +0 -1
  493. package/lib/services/cron.spec.d.ts +0 -1
  494. package/lib/services/cron.spec.js +0 -76
  495. package/lib/services/cron.spec.js.map +0 -1
  496. package/lib/services/cryptoservice.js +0 -434
  497. package/lib/services/cryptoservice.js.map +0 -1
  498. package/lib/services/cryptoservice.spec.d.ts +0 -1
  499. package/lib/services/cryptoservice.spec.js +0 -177
  500. package/lib/services/cryptoservice.spec.js.map +0 -1
  501. package/lib/services/debugmailer.d.ts +0 -36
  502. package/lib/services/debugmailer.js +0 -52
  503. package/lib/services/debugmailer.js.map +0 -1
  504. package/lib/services/debugmailer.spec.d.ts +0 -1
  505. package/lib/services/debugmailer.spec.js +0 -29
  506. package/lib/services/debugmailer.spec.js.map +0 -1
  507. package/lib/services/domainservice.d.ts +0 -152
  508. package/lib/services/domainservice.js +0 -881
  509. package/lib/services/domainservice.js.map +0 -1
  510. package/lib/services/domainservice.spec.d.ts +0 -1
  511. package/lib/services/domainservice.spec.js +0 -401
  512. package/lib/services/domainservice.spec.js.map +0 -1
  513. package/lib/services/filebinary.d.ts +0 -133
  514. package/lib/services/filebinary.js +0 -371
  515. package/lib/services/filebinary.js.map +0 -1
  516. package/lib/services/filebinary.spec.d.ts +0 -21
  517. package/lib/services/filebinary.spec.js +0 -415
  518. package/lib/services/filebinary.spec.js.map +0 -1
  519. package/lib/services/fileconfiguration.d.ts +0 -22
  520. package/lib/services/fileconfiguration.js +0 -48
  521. package/lib/services/fileconfiguration.js.map +0 -1
  522. package/lib/services/fileconfiguration.spec.d.ts +0 -1
  523. package/lib/services/fileconfiguration.spec.js +0 -177
  524. package/lib/services/fileconfiguration.spec.js.map +0 -1
  525. package/lib/services/invitationservice.d.ts +0 -222
  526. package/lib/services/invitationservice.js +0 -526
  527. package/lib/services/invitationservice.js.map +0 -1
  528. package/lib/services/invitationservice.spec.d.ts +0 -1
  529. package/lib/services/invitationservice.spec.js +0 -516
  530. package/lib/services/invitationservice.spec.js.map +0 -1
  531. package/lib/services/kubernetesconfiguration.d.ts +0 -26
  532. package/lib/services/kubernetesconfiguration.js +0 -54
  533. package/lib/services/kubernetesconfiguration.js.map +0 -1
  534. package/lib/services/kubernetesconfiguration.spec.d.ts +0 -1
  535. package/lib/services/kubernetesconfiguration.spec.js +0 -147
  536. package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
  537. package/lib/services/mailer.d.ts +0 -165
  538. package/lib/services/mailer.js +0 -176
  539. package/lib/services/mailer.js.map +0 -1
  540. package/lib/services/mailer.spec.d.ts +0 -1
  541. package/lib/services/mailer.spec.js +0 -144
  542. package/lib/services/mailer.spec.js.map +0 -1
  543. package/lib/services/notificationservice.js.map +0 -1
  544. package/lib/services/notificationservice.spec.d.ts +0 -1
  545. package/lib/services/notificationservice.spec.js +0 -78
  546. package/lib/services/notificationservice.spec.js.map +0 -1
  547. package/lib/services/oauth.spec.d.ts +0 -1
  548. package/lib/services/oauth.spec.js +0 -184
  549. package/lib/services/oauth.spec.js.map +0 -1
  550. package/lib/services/prometheus.js +0 -160
  551. package/lib/services/prometheus.js.map +0 -1
  552. package/lib/services/prometheus.spec.d.ts +0 -1
  553. package/lib/services/prometheus.spec.js +0 -57
  554. package/lib/services/prometheus.spec.js.map +0 -1
  555. package/lib/services/resource.d.ts +0 -87
  556. package/lib/services/resource.js +0 -156
  557. package/lib/services/resource.js.map +0 -1
  558. package/lib/services/resource.spec.d.ts +0 -1
  559. package/lib/services/resource.spec.js +0 -122
  560. package/lib/services/resource.spec.js.map +0 -1
  561. package/lib/services/service.spec.d.ts +0 -1
  562. package/lib/services/service.spec.js +0 -268
  563. package/lib/services/service.spec.js.map +0 -1
  564. package/lib/stores/aggregator.d.ts +0 -41
  565. package/lib/stores/aggregator.js +0 -80
  566. package/lib/stores/aggregator.js.map +0 -1
  567. package/lib/stores/aliasstore.d.ts +0 -108
  568. package/lib/stores/aliasstore.js +0 -168
  569. package/lib/stores/aliasstore.js.map +0 -1
  570. package/lib/stores/aliasstore.spec.d.ts +0 -11
  571. package/lib/stores/aliasstore.spec.js +0 -89
  572. package/lib/stores/aliasstore.spec.js.map +0 -1
  573. package/lib/stores/file.d.ts +0 -107
  574. package/lib/stores/file.js +0 -188
  575. package/lib/stores/file.js.map +0 -1
  576. package/lib/stores/file.spec.d.ts +0 -19
  577. package/lib/stores/file.spec.js +0 -232
  578. package/lib/stores/file.spec.js.map +0 -1
  579. package/lib/stores/mapper.d.ts +0 -149
  580. package/lib/stores/mapper.js +0 -293
  581. package/lib/stores/mapper.js.map +0 -1
  582. package/lib/stores/mapper.spec.d.ts +0 -1
  583. package/lib/stores/mapper.spec.js +0 -160
  584. package/lib/stores/mapper.spec.js.map +0 -1
  585. package/lib/stores/memory.d.ts +0 -151
  586. package/lib/stores/memory.js +0 -371
  587. package/lib/stores/memory.js.map +0 -1
  588. package/lib/stores/memory.spec.d.ts +0 -20
  589. package/lib/stores/memory.spec.js +0 -328
  590. package/lib/stores/memory.spec.js.map +0 -1
  591. package/lib/stores/modelmapper.d.ts +0 -61
  592. package/lib/stores/modelmapper.js +0 -199
  593. package/lib/stores/modelmapper.js.map +0 -1
  594. package/lib/stores/store.spec.d.ts +0 -65
  595. package/lib/stores/store.spec.js +0 -906
  596. package/lib/stores/store.spec.js.map +0 -1
  597. package/lib/test.d.ts +0 -162
  598. package/lib/test.js +0 -399
  599. package/lib/test.js.map +0 -1
  600. package/lib/unpackedapplication.d.ts +0 -76
  601. package/lib/unpackedapplication.js +0 -299
  602. package/lib/unpackedapplication.js.map +0 -1
  603. package/lib/utils/abstractdeployer.spec.d.ts +0 -1
  604. package/lib/utils/abstractdeployer.spec.js +0 -21
  605. package/lib/utils/abstractdeployer.spec.js.map +0 -1
  606. package/lib/utils/case.d.ts +0 -7
  607. package/lib/utils/case.js +0 -43
  608. package/lib/utils/case.js.map +0 -1
  609. package/lib/utils/case.spec.d.ts +0 -1
  610. package/lib/utils/case.spec.js +0 -50
  611. package/lib/utils/case.spec.js.map +0 -1
  612. package/lib/utils/context.d.ts +0 -462
  613. package/lib/utils/context.js +0 -732
  614. package/lib/utils/context.js.map +0 -1
  615. package/lib/utils/context.spec.d.ts +0 -9
  616. package/lib/utils/context.spec.js +0 -372
  617. package/lib/utils/context.spec.js.map +0 -1
  618. package/lib/utils/cookie.js.map +0 -1
  619. package/lib/utils/cookie.spec.d.ts +0 -1
  620. package/lib/utils/cookie.spec.js +0 -78
  621. package/lib/utils/cookie.spec.js.map +0 -1
  622. package/lib/utils/esm.d.ts +0 -13
  623. package/lib/utils/esm.js +0 -19
  624. package/lib/utils/esm.js.map +0 -1
  625. package/lib/utils/httpcontext.js.map +0 -1
  626. package/lib/utils/httpcontext.spec.d.ts +0 -4
  627. package/lib/utils/httpcontext.spec.js +0 -77
  628. package/lib/utils/httpcontext.spec.js.map +0 -1
  629. package/lib/utils/logger.d.ts +0 -91
  630. package/lib/utils/logger.js +0 -121
  631. package/lib/utils/logger.js.map +0 -1
  632. package/lib/utils/logger.spec.d.ts +0 -1
  633. package/lib/utils/logger.spec.js +0 -48
  634. package/lib/utils/logger.spec.js.map +0 -1
  635. package/lib/utils/serializers.d.ts +0 -161
  636. package/lib/utils/serializers.js +0 -420
  637. package/lib/utils/serializers.js.map +0 -1
  638. package/lib/utils/serializers.spec.d.ts +0 -1
  639. package/lib/utils/serializers.spec.js +0 -313
  640. package/lib/utils/serializers.spec.js.map +0 -1
  641. package/lib/utils/session.d.ts +0 -126
  642. package/lib/utils/session.js +0 -166
  643. package/lib/utils/session.js.map +0 -1
  644. package/lib/utils/session.spec.d.ts +0 -1
  645. package/lib/utils/session.spec.js +0 -71
  646. package/lib/utils/session.spec.js.map +0 -1
  647. package/lib/utils/throttler.d.ts +0 -102
  648. package/lib/utils/throttler.js +0 -168
  649. package/lib/utils/throttler.js.map +0 -1
  650. package/lib/utils/throttler.spec.d.ts +0 -1
  651. package/lib/utils/throttler.spec.js +0 -55
  652. package/lib/utils/throttler.spec.js.map +0 -1
  653. package/lib/utils/waiter.d.ts +0 -93
  654. package/lib/utils/waiter.js +0 -148
  655. package/lib/utils/waiter.js.map +0 -1
  656. package/lib/utils/waiter.spec.d.ts +0 -1
  657. package/lib/utils/waiter.spec.js +0 -98
  658. package/lib/utils/waiter.spec.js.map +0 -1
  659. package/test/config-file-missing-file-no-default.json +0 -44
  660. package/test/config-file-missing-file.json +0 -55
  661. package/test/config-file-no-reload.json +0 -69
  662. package/test/config-file-reload.json +0 -68
  663. package/test/config-invitation.json +0 -63
  664. package/test/config-kube-reload.json +0 -68
  665. package/test/config-reload.json +0 -66
  666. package/test/config.old.json +0 -152
  667. package/test/jsonutils/mdocs.yaml +0 -56
  668. package/test/jsonutils/test.json +0 -3
  669. package/test/jsonutils/test.yml +0 -5
  670. package/test/moddas/annotatedservice.js +0 -23
  671. package/test/moddas/debugmailer.js +0 -13
  672. package/test/moddas/fakeservice.js +0 -4
  673. package/test/moddas/voidstore.js +0 -66
  674. package/test/models/ident.js +0 -36
  675. package/test/models/task.js +0 -42
@@ -0,0 +1,431 @@
1
+ import { WEBDA_STORAGE } from "@webda/models";
2
+ import { useCoreEvents } from "../events/events.js";
3
+ import { Service } from "../services/service.js";
4
+ import { ServiceParameters } from "./serviceparameters.js";
5
+ import { CoreModel } from "../models/coremodel.model.js";
6
+ import { escape, parse, QueryValidator } from "@webda/ql";
7
+ import * as WebdaError from "../errors/errors.js";
8
+ import { useApplication, useModel } from "../application/hooks.js";
9
+ import { useModelMetadata } from "../core/hooks.js";
10
+ import { useContext } from "../contexts/execution.js";
11
+ import { hasSchema, registerSchema } from "../schemas/hooks.js";
12
+ import { parseSubjectKey, registerOperation, serializeSubjectKey } from "../core/operations.js";
13
+ /**
14
+ * Represents a single audit log entry
15
+ */
16
+ export class AuditEntry extends CoreModel {
17
+ operationId;
18
+ success;
19
+ error;
20
+ userId;
21
+ /**
22
+ * Identifier of the model the operation targeted, e.g. `WebdaSample/Post`
23
+ */
24
+ subjectModel;
25
+ /**
26
+ * Canonical primary key of the targeted object (see `serializeSubjectKey`)
27
+ */
28
+ subjectKey;
29
+ get timestamp() {
30
+ return this[WEBDA_STORAGE]["timestamp"];
31
+ }
32
+ set timestamp(value) {
33
+ this[WEBDA_STORAGE]["timestamp"] = value !== undefined && value !== null ? new Date(value) : value;
34
+ }
35
+ /** Generated by @webda/content-mapper: include values held in WEBDA_STORAGE. */
36
+ toJSON() {
37
+ const result = super.toJSON ? super.toJSON() : {};
38
+ for (const key of Object.keys(this)) {
39
+ result[key] = this[key];
40
+ }
41
+ Object.assign(result, this[WEBDA_STORAGE]);
42
+ return result;
43
+ }
44
+ }
45
+ /**
46
+ * Parameters for the AuditService
47
+ */
48
+ export class AuditServiceParameters extends ServiceParameters {
49
+ /**
50
+ * List of operations to include/exclude.
51
+ * Supports wildcards and negation: ["*", "!User.Delete"]
52
+ * @default ["*"]
53
+ */
54
+ operations;
55
+ /**
56
+ * Audit level filter:
57
+ * - "all" — audit everything (default)
58
+ * - "write" — everything except read operations (Get, List, Query)
59
+ * - "failure" — only failed operations
60
+ * @default "all"
61
+ */
62
+ level;
63
+ /**
64
+ * WebdaQL query evaluated against the session, required for global (`Audit.Query`)
65
+ * and other-user (`Audit.Actor`) reads, and for the history of an object that no
66
+ * longer exists. Unset means nobody.
67
+ * @example "roles CONTAINS 'admin'"
68
+ */
69
+ readPermission;
70
+ /**
71
+ * Register the `Audit.Subject`, `Audit.Actor` and `Audit.Query` operations, which
72
+ * the REST/GraphQL transports then expose. Off by default so adding the service
73
+ * never publishes the audit trail by surprise.
74
+ * @default false
75
+ */
76
+ exposeReadOperations;
77
+ /**
78
+ * Parsed exclude list
79
+ * @SchemaIgnore
80
+ */
81
+ excludedOperations;
82
+ /**
83
+ * Load parameters and parse include/exclude lists
84
+ * @param params - the service parameters
85
+ * @returns this for chaining
86
+ */
87
+ load(params = {}) {
88
+ super.load(params);
89
+ this.level ??= "all";
90
+ this.operations ??= ["*"];
91
+ if (this.operations.some(i => i.startsWith("!"))) {
92
+ this.excludedOperations = this.operations.filter(i => i.startsWith("!")).map(i => i.substring(1));
93
+ this.operations = this.operations.filter(i => !i.startsWith("!"));
94
+ if (this.operations.length === 0) {
95
+ this.operations = ["*"];
96
+ }
97
+ }
98
+ this.excludedOperations ??= [];
99
+ return this;
100
+ }
101
+ /**
102
+ * Check if an operation matches a pattern (supports trailing wildcard)
103
+ * @param operationId - the operation identifier
104
+ * @param pattern - the pattern to match against
105
+ * @returns true if the operation matches the pattern
106
+ */
107
+ matchesPattern(operationId, pattern) {
108
+ if (pattern === "*")
109
+ return true;
110
+ if (pattern.endsWith(".*")) {
111
+ return operationId.startsWith(pattern.slice(0, -1));
112
+ }
113
+ return operationId === pattern;
114
+ }
115
+ /**
116
+ * Check if an operation is included by this configuration
117
+ * @param operationId - the operation identifier
118
+ * @returns true if the operation is included
119
+ */
120
+ isIncluded(operationId) {
121
+ if (this.excludedOperations.some(p => this.matchesPattern(operationId, p))) {
122
+ return false;
123
+ }
124
+ return this.operations.some(p => this.matchesPattern(operationId, p));
125
+ }
126
+ }
127
+ /**
128
+ * Read-only operation suffixes excluded from "write" level auditing
129
+ */
130
+ const READ_SUFFIXES = ["Get", "List", "Query"];
131
+ /**
132
+ * The audit log's own read operations, treated as reads by the "write" level
133
+ */
134
+ const AUDIT_READ_OPERATIONS = ["Audit.Subject", "Audit.Actor", "Audit.Query"];
135
+ /**
136
+ * Page size of the audit read operations
137
+ */
138
+ const DEFAULT_PAGE_SIZE = 50;
139
+ const MAX_PAGE_SIZE = 200;
140
+ /**
141
+ * Pagination properties shared by the read operation requests
142
+ */
143
+ const PAGINATION_PROPERTIES = {
144
+ limit: { type: "number" },
145
+ continuationToken: { type: "string" }
146
+ };
147
+ /**
148
+ * Request schemas of the read operations, registered in resolve()
149
+ */
150
+ const AUDIT_SCHEMAS = {
151
+ auditSubjectRequest: {
152
+ type: "object",
153
+ properties: { model: { type: "string" }, key: { type: ["string", "number", "object"] }, ...PAGINATION_PROPERTIES },
154
+ required: ["model", "key"]
155
+ },
156
+ auditActorRequest: {
157
+ type: "object",
158
+ properties: { userId: { type: "string" }, ...PAGINATION_PROPERTIES }
159
+ },
160
+ auditQueryRequest: {
161
+ type: "object",
162
+ properties: { q: { type: "string" }, ...PAGINATION_PROPERTIES }
163
+ }
164
+ };
165
+ /**
166
+ * @WebdaModda AuditService
167
+ *
168
+ * Service that listens to operation success/failure events and records audit entries.
169
+ * Entries are kept in memory (accessible via getEntries()) and saved through the
170
+ * AuditEntry repository (the store the AuditEntry model is mapped to, the default
171
+ * store otherwise).
172
+ *
173
+ * With `exposeReadOperations: true` it also registers the read operations
174
+ * `Audit.Subject` (history of an object), `Audit.Actor` (activity of a user) and
175
+ * `Audit.Query` (whole log), guarded by the object's `canAct("audit")` or the
176
+ * `readPermission` parameter.
177
+ */
178
+ export class AuditService extends Service {
179
+ /**
180
+ * In-memory log of audit entries
181
+ */
182
+ entries = [];
183
+ /**
184
+ * Parsed readPermission
185
+ */
186
+ readPermissionQuery;
187
+ /**
188
+ * Unsubscribe functions of the core event listeners
189
+ */
190
+ unsubscribers = [];
191
+ /**
192
+ * Remove the core event listeners
193
+ */
194
+ unsubscribe() {
195
+ for (const off of this.unsubscribers.splice(0)) {
196
+ off();
197
+ }
198
+ }
199
+ /**
200
+ * Stop recording audit entries
201
+ */
202
+ async stop() {
203
+ this.unsubscribe();
204
+ await super.stop();
205
+ }
206
+ /**
207
+ * Subscribe to operation success and failure events for audit logging
208
+ * @returns this for chaining
209
+ */
210
+ resolve() {
211
+ super.resolve();
212
+ this.unsubscribe();
213
+ this.unsubscribers.push(useCoreEvents("Webda.OperationFailure", async (evt) => {
214
+ await this.addAuditEntry(evt.operationId, evt.context.getCurrentUserId(), evt.error, evt.subject);
215
+ }), useCoreEvents("Webda.OperationSuccess", async (evt) => {
216
+ await this.addAuditEntry(evt.operationId, evt.context.getCurrentUserId(), undefined, evt.subject);
217
+ }));
218
+ if (this.parameters.exposeReadOperations) {
219
+ this.registerReadOperations();
220
+ }
221
+ return this;
222
+ }
223
+ /**
224
+ * Get all in-memory audit entries
225
+ * @returns the list of audit entries
226
+ */
227
+ getEntries() {
228
+ return this.entries;
229
+ }
230
+ /**
231
+ * Determine whether the given operation should be audited
232
+ * based on include/exclude filters and level configuration.
233
+ * @param operationId - the operation identifier
234
+ * @param success - whether the operation succeeded
235
+ * @returns true if this operation should be audited
236
+ */
237
+ shouldAudit(operationId, success) {
238
+ // Check include/exclude filter
239
+ if (!this.parameters.isIncluded(operationId)) {
240
+ return false;
241
+ }
242
+ // Check level filter
243
+ const level = this.parameters.level ?? "all";
244
+ if (level === "failure") {
245
+ return !success;
246
+ }
247
+ if (level === "write") {
248
+ const suffix = operationId.split(".").pop() ?? "";
249
+ return !READ_SUFFIXES.includes(suffix) && !AUDIT_READ_OPERATIONS.includes(operationId);
250
+ }
251
+ return true;
252
+ }
253
+ /**
254
+ * Create and store an audit entry for the given operation context and optional error
255
+ * @param operationId - the operation identifier
256
+ * @param userId - the user identifier (may be undefined for anonymous)
257
+ * @param err - the error if the operation failed
258
+ * @param subject - the object the operation targeted, if any
259
+ */
260
+ async addAuditEntry(operationId, userId, err, subject) {
261
+ const success = err === undefined;
262
+ if (!this.shouldAudit(operationId, success)) {
263
+ return;
264
+ }
265
+ const entry = new AuditEntry();
266
+ entry.operationId = operationId;
267
+ entry.success = success;
268
+ entry.userId = userId;
269
+ entry.timestamp = new Date();
270
+ entry.subjectModel = subject?.model;
271
+ entry.subjectKey = subject?.key;
272
+ if (err) {
273
+ entry.error = err.message;
274
+ }
275
+ this.entries.push(entry);
276
+ await entry.save();
277
+ }
278
+ /**
279
+ * Register the request schemas and the Audit.Subject / Audit.Actor / Audit.Query operations
280
+ */
281
+ registerReadOperations() {
282
+ const appSchemas = useApplication().getSchemas();
283
+ for (const [name, schema] of Object.entries(AUDIT_SCHEMAS)) {
284
+ if (!hasSchema(name)) {
285
+ registerSchema(name, schema);
286
+ }
287
+ appSchemas[name] ??= schema;
288
+ }
289
+ const service = this.getName();
290
+ registerOperation("Audit.Subject", {
291
+ service,
292
+ method: "subjectEntries",
293
+ input: "auditSubjectRequest",
294
+ summary: "Audit entries of an object",
295
+ tags: ["Audit"]
296
+ });
297
+ registerOperation("Audit.Actor", {
298
+ service,
299
+ method: "actorEntries",
300
+ input: "auditActorRequest",
301
+ summary: "Audit entries of a user",
302
+ tags: ["Audit"]
303
+ });
304
+ registerOperation("Audit.Query", {
305
+ service,
306
+ method: "queryEntries",
307
+ input: "auditQueryRequest",
308
+ summary: "Query the audit log",
309
+ tags: ["Audit"]
310
+ });
311
+ }
312
+ /**
313
+ * Check the readPermission query against the current session
314
+ * @param context - the operation context
315
+ * @returns true if the session matches readPermission
316
+ */
317
+ hasReadPermission(context) {
318
+ if (!this.parameters.readPermission) {
319
+ return false;
320
+ }
321
+ this.readPermissionQuery ??= new QueryValidator(this.parameters.readPermission);
322
+ return this.readPermissionQuery.eval(context.getSession() ?? {});
323
+ }
324
+ /**
325
+ * Query the audit entries matching a filter, newest first
326
+ * @param filter - WebdaQL filter (may be empty)
327
+ * @param limit - page size, clamped to 1..200 (default 50)
328
+ * @param continuationToken - token of the previous page
329
+ * @returns the page of entries
330
+ */
331
+ async findEntries(filter, limit, continuationToken) {
332
+ const pageSize = Math.min(Math.max(Math.floor(Number(limit)) || DEFAULT_PAGE_SIZE, 1), MAX_PAGE_SIZE);
333
+ let query = `${filter} ORDER BY timestamp DESC LIMIT ${pageSize}`;
334
+ if (continuationToken) {
335
+ query += escape([" OFFSET ", ""], [continuationToken]);
336
+ }
337
+ const res = await AuditEntry.query(query);
338
+ return { results: res.results, continuationToken: res.continuationToken || undefined };
339
+ }
340
+ /**
341
+ * Audit entries of one object (`Audit.Subject`)
342
+ *
343
+ * Allowed when `subject.canAct(context, "audit")` is true. When the object does not
344
+ * exist (deleted or never created), `readPermission` is required, otherwise 404.
345
+ * @param model - model identifier, e.g. `WebdaSample/Post`
346
+ * @param key - primary key: scalar, object of key fields, or canonical JSON array
347
+ * @param limit - page size
348
+ * @param continuationToken - token of the previous page
349
+ * @returns the page of entries
350
+ */
351
+ async subjectEntries(model, key, limit, continuationToken) {
352
+ const context = useContext();
353
+ let modelClass;
354
+ try {
355
+ modelClass = useModel(model);
356
+ }
357
+ catch {
358
+ throw new WebdaError.NotFound("Object not found");
359
+ }
360
+ const modelId = useApplication().getModelId(modelClass);
361
+ if (!modelId) {
362
+ throw new WebdaError.NotFound("Object not found");
363
+ }
364
+ const pkFields = useModelMetadata(modelClass)?.PrimaryKey ?? ["uuid"];
365
+ const ref = parseSubjectKey(pkFields, key);
366
+ if (ref === undefined) {
367
+ throw new WebdaError.BadRequest("Invalid subject key");
368
+ }
369
+ let instance;
370
+ try {
371
+ instance = await modelClass.ref(ref).get();
372
+ }
373
+ catch {
374
+ // Repositories throw when the object does not exist
375
+ }
376
+ if (instance && !instance.isDeleted?.()) {
377
+ const allowed = typeof instance.canAct === "function" ? await instance.canAct(context, "audit") : false;
378
+ if (allowed !== true) {
379
+ throw new WebdaError.Forbidden(typeof allowed === "string" ? allowed : "Audit not allowed");
380
+ }
381
+ }
382
+ else if (!this.hasReadPermission(context)) {
383
+ throw new WebdaError.NotFound("Object not found");
384
+ }
385
+ return this.findEntries(escape(["subjectModel = ", " AND subjectKey = ", ""], [modelId, serializeSubjectKey(pkFields, ref)]), limit, continuationToken);
386
+ }
387
+ /**
388
+ * Audit entries of one user (`Audit.Actor`)
389
+ *
390
+ * A logged-in user can read their own entries; anyone else needs `readPermission`.
391
+ * @param userId - the user, defaults to the current user
392
+ * @param limit - page size
393
+ * @param continuationToken - token of the previous page
394
+ * @returns the page of entries
395
+ */
396
+ async actorEntries(userId, limit, continuationToken) {
397
+ const context = useContext();
398
+ const current = context.getCurrentUserId();
399
+ const target = userId || current;
400
+ if (!target || (target !== current && !this.hasReadPermission(context))) {
401
+ throw new WebdaError.Forbidden("Audit not allowed");
402
+ }
403
+ return this.findEntries(escape(["userId = ", ""], [target]), limit, continuationToken);
404
+ }
405
+ /**
406
+ * Query the whole audit log (`Audit.Query`), requires `readPermission`
407
+ *
408
+ * Only the filter part of `q` is used; ordering and paging are fixed.
409
+ * @param q - WebdaQL filter over the entry fields
410
+ * @param limit - page size
411
+ * @param continuationToken - token of the previous page
412
+ * @returns the page of entries
413
+ */
414
+ async queryEntries(q, limit, continuationToken) {
415
+ const context = useContext();
416
+ if (!this.hasReadPermission(context)) {
417
+ throw new WebdaError.Forbidden("Audit not allowed");
418
+ }
419
+ let filter = "";
420
+ if (q) {
421
+ try {
422
+ filter = parse(q).filter.toString();
423
+ }
424
+ catch {
425
+ throw new WebdaError.BadRequest("Query syntax error");
426
+ }
427
+ }
428
+ return this.findEntries(filter, limit, continuationToken);
429
+ }
430
+ }
431
+ //# sourceMappingURL=audit.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.model.js","sourceRoot":"","sources":["../../src/services/audit.model.ts"],"names":[],"mappings":"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"}