@webda/core 4.0.0-beta.2 → 4.0.0-beta.4

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 (793) hide show
  1. package/README.md +252 -0
  2. package/lib/application/application.d.ts +468 -0
  3. package/lib/application/application.d.ts.map +1 -0
  4. package/lib/application/application.js +845 -0
  5. package/lib/application/application.js.map +1 -0
  6. package/lib/application/deployment.d.ts +93 -0
  7. package/lib/application/deployment.d.ts.map +1 -0
  8. package/lib/application/deployment.js +99 -0
  9. package/lib/application/deployment.js.map +1 -0
  10. package/lib/application/hooks.d.ts +34 -0
  11. package/lib/application/hooks.d.ts.map +1 -0
  12. package/lib/application/hooks.js +57 -0
  13. package/lib/application/hooks.js.map +1 -0
  14. package/lib/application/iapplication.d.ts +43 -0
  15. package/lib/application/iapplication.d.ts.map +1 -0
  16. package/lib/application/iapplication.js +2 -0
  17. package/lib/application/iapplication.js.map +1 -0
  18. package/lib/application/iconfiguration.d.ts +176 -0
  19. package/lib/application/iconfiguration.d.ts.map +1 -0
  20. package/lib/application/iconfiguration.js +8 -0
  21. package/lib/application/iconfiguration.js.map +1 -0
  22. package/lib/application/runner.d.ts +8 -0
  23. package/lib/application/runner.d.ts.map +1 -0
  24. package/lib/application/runner.js +26 -0
  25. package/lib/application/runner.js.map +1 -0
  26. package/lib/{unpackedapplication.d.ts → application/unpackedapplication.d.ts} +43 -23
  27. package/lib/application/unpackedapplication.d.ts.map +1 -0
  28. package/lib/application/unpackedapplication.js +500 -0
  29. package/lib/application/unpackedapplication.js.map +1 -0
  30. package/lib/bin/cli-phase.d.ts +28 -0
  31. package/lib/bin/cli-phase.d.ts.map +1 -0
  32. package/lib/bin/cli-phase.js +44 -0
  33. package/lib/bin/cli-phase.js.map +1 -0
  34. package/lib/bin/cli.d.ts +196 -0
  35. package/lib/bin/cli.d.ts.map +1 -0
  36. package/lib/bin/cli.js +934 -0
  37. package/lib/bin/cli.js.map +1 -0
  38. package/lib/bin/launcher.d.ts +3 -0
  39. package/lib/bin/launcher.d.ts.map +1 -0
  40. package/lib/bin/launcher.js +50 -0
  41. package/lib/bin/launcher.js.map +1 -0
  42. package/lib/cache/cache.d.ts +33 -0
  43. package/lib/cache/cache.d.ts.map +1 -0
  44. package/lib/cache/cache.js +8 -0
  45. package/lib/cache/cache.js.map +1 -0
  46. package/lib/{services/configuration.d.ts → configurations/configuration.service.d.ts} +58 -58
  47. package/lib/configurations/configuration.service.d.ts.map +1 -0
  48. package/lib/configurations/configuration.service.js +248 -0
  49. package/lib/configurations/configuration.service.js.map +1 -0
  50. package/lib/configurations/fileconfiguration.service.d.ts +30 -0
  51. package/lib/configurations/fileconfiguration.service.d.ts.map +1 -0
  52. package/lib/configurations/fileconfiguration.service.js +65 -0
  53. package/lib/configurations/fileconfiguration.service.js.map +1 -0
  54. package/lib/configurations/kubernetesconfiguration.service.d.ts +43 -0
  55. package/lib/configurations/kubernetesconfiguration.service.d.ts.map +1 -0
  56. package/lib/configurations/kubernetesconfiguration.service.js +83 -0
  57. package/lib/configurations/kubernetesconfiguration.service.js.map +1 -0
  58. package/lib/contexts/execution.d.ts +33 -0
  59. package/lib/contexts/execution.d.ts.map +1 -0
  60. package/lib/contexts/execution.js +73 -0
  61. package/lib/contexts/execution.js.map +1 -0
  62. package/lib/contexts/globalcontext.d.ts +29 -0
  63. package/lib/contexts/globalcontext.d.ts.map +1 -0
  64. package/lib/contexts/globalcontext.js +38 -0
  65. package/lib/contexts/globalcontext.js.map +1 -0
  66. package/lib/{utils → contexts}/httpcontext.d.ts +44 -19
  67. package/lib/contexts/httpcontext.d.ts.map +1 -0
  68. package/lib/{utils → contexts}/httpcontext.js +95 -27
  69. package/lib/contexts/httpcontext.js.map +1 -0
  70. package/lib/contexts/icontext.d.ts +236 -0
  71. package/lib/contexts/icontext.d.ts.map +1 -0
  72. package/lib/contexts/icontext.js +230 -0
  73. package/lib/contexts/icontext.js.map +1 -0
  74. package/lib/contexts/operationcontext.d.ts +182 -0
  75. package/lib/contexts/operationcontext.d.ts.map +1 -0
  76. package/lib/contexts/operationcontext.js +361 -0
  77. package/lib/contexts/operationcontext.js.map +1 -0
  78. package/lib/contexts/simplecontext.d.ts +31 -0
  79. package/lib/contexts/simplecontext.d.ts.map +1 -0
  80. package/lib/contexts/simplecontext.js +45 -0
  81. package/lib/contexts/simplecontext.js.map +1 -0
  82. package/lib/contexts/webcontext.d.ts +218 -0
  83. package/lib/contexts/webcontext.d.ts.map +1 -0
  84. package/lib/contexts/webcontext.js +389 -0
  85. package/lib/contexts/webcontext.js.map +1 -0
  86. package/lib/core/authorizer.d.ts +23 -0
  87. package/lib/core/authorizer.d.ts.map +1 -0
  88. package/lib/core/authorizer.js +17 -0
  89. package/lib/core/authorizer.js.map +1 -0
  90. package/lib/core/core.d.ts +225 -0
  91. package/lib/core/core.d.ts.map +1 -0
  92. package/lib/core/core.js +576 -0
  93. package/lib/core/core.js.map +1 -0
  94. package/lib/core/hooks.d.ts +94 -0
  95. package/lib/core/hooks.d.ts.map +1 -0
  96. package/lib/core/hooks.js +97 -0
  97. package/lib/core/hooks.js.map +1 -0
  98. package/lib/core/icore.d.ts +249 -0
  99. package/lib/core/icore.d.ts.map +1 -0
  100. package/lib/core/icore.js +15 -0
  101. package/lib/core/icore.js.map +1 -0
  102. package/lib/core/instancestorage.d.ts +61 -0
  103. package/lib/core/instancestorage.d.ts.map +1 -0
  104. package/lib/core/instancestorage.js +75 -0
  105. package/lib/core/instancestorage.js.map +1 -0
  106. package/lib/core/operations.d.ts +181 -0
  107. package/lib/core/operations.d.ts.map +1 -0
  108. package/lib/core/operations.js +559 -0
  109. package/lib/core/operations.js.map +1 -0
  110. package/lib/deployers/deployer.d.ts +157 -0
  111. package/lib/deployers/deployer.d.ts.map +1 -0
  112. package/lib/deployers/deployer.js +81 -0
  113. package/lib/deployers/deployer.js.map +1 -0
  114. package/lib/deployers/git.d.ts +27 -0
  115. package/lib/deployers/git.d.ts.map +1 -0
  116. package/lib/deployers/git.js +66 -0
  117. package/lib/deployers/git.js.map +1 -0
  118. package/lib/deployers/packager.d.ts +85 -0
  119. package/lib/deployers/packager.d.ts.map +1 -0
  120. package/lib/deployers/packager.js +259 -0
  121. package/lib/deployers/packager.js.map +1 -0
  122. package/lib/errors/errors.d.ts +126 -0
  123. package/lib/errors/errors.d.ts.map +1 -0
  124. package/lib/errors/errors.js +165 -0
  125. package/lib/errors/errors.js.map +1 -0
  126. package/lib/events/asynceventemitter.d.ts +159 -0
  127. package/lib/events/asynceventemitter.d.ts.map +1 -0
  128. package/lib/events/asynceventemitter.js +152 -0
  129. package/lib/events/asynceventemitter.js.map +1 -0
  130. package/lib/events/events.d.ts +112 -0
  131. package/lib/events/events.d.ts.map +1 -0
  132. package/lib/events/events.js +45 -0
  133. package/lib/events/events.js.map +1 -0
  134. package/lib/index.d.ts +88 -54
  135. package/lib/index.d.ts.map +1 -1
  136. package/lib/index.js +88 -64
  137. package/lib/index.js.map +1 -1
  138. package/lib/loggers/console.service.d.ts +24 -0
  139. package/lib/loggers/console.service.d.ts.map +1 -0
  140. package/lib/loggers/console.service.js +30 -0
  141. package/lib/loggers/console.service.js.map +1 -0
  142. package/lib/loggers/file.service.d.ts +25 -0
  143. package/lib/loggers/file.service.d.ts.map +1 -0
  144. package/lib/loggers/file.service.js +33 -0
  145. package/lib/loggers/file.service.js.map +1 -0
  146. package/lib/loggers/hooks.d.ts +20 -0
  147. package/lib/loggers/hooks.d.ts.map +1 -0
  148. package/lib/loggers/hooks.js +40 -0
  149. package/lib/loggers/hooks.js.map +1 -0
  150. package/lib/loggers/ilogger.d.ts +76 -0
  151. package/lib/loggers/ilogger.d.ts.map +1 -0
  152. package/lib/loggers/ilogger.js +108 -0
  153. package/lib/loggers/ilogger.js.map +1 -0
  154. package/lib/loggers/logger.d.ts +13 -0
  155. package/lib/loggers/logger.d.ts.map +1 -0
  156. package/lib/loggers/logger.js +18 -0
  157. package/lib/loggers/logger.js.map +1 -0
  158. package/lib/loggers/memory.service.d.ts +18 -0
  159. package/lib/loggers/memory.service.d.ts.map +1 -0
  160. package/lib/loggers/memory.service.js +21 -0
  161. package/lib/loggers/memory.service.js.map +1 -0
  162. package/lib/loggers/params.d.ts +47 -0
  163. package/lib/loggers/params.d.ts.map +1 -0
  164. package/lib/loggers/params.js +56 -0
  165. package/lib/loggers/params.js.map +1 -0
  166. package/lib/metrics/metrics.d.ts +25 -0
  167. package/lib/metrics/metrics.d.ts.map +1 -0
  168. package/lib/metrics/metrics.js +51 -0
  169. package/lib/metrics/metrics.js.map +1 -0
  170. package/lib/models/aclmodel.d.ts +20 -76
  171. package/lib/models/aclmodel.d.ts.map +1 -1
  172. package/lib/models/aclmodel.js +27 -203
  173. package/lib/models/aclmodel.js.map +1 -1
  174. package/lib/models/coremodel.model.d.ts +5 -0
  175. package/lib/models/coremodel.model.d.ts.map +1 -0
  176. package/lib/models/coremodel.model.js +5 -0
  177. package/lib/models/coremodel.model.js.map +1 -0
  178. package/lib/models/decorator.d.ts +67 -0
  179. package/lib/models/decorator.d.ts.map +1 -0
  180. package/lib/models/decorator.js +67 -0
  181. package/lib/models/decorator.js.map +1 -0
  182. package/lib/models/deployment.d.ts +2 -21
  183. package/lib/models/deployment.d.ts.map +1 -1
  184. package/lib/models/encrypted.model.d.ts +46 -0
  185. package/lib/models/encrypted.model.d.ts.map +1 -0
  186. package/lib/models/encrypted.model.js +87 -0
  187. package/lib/models/encrypted.model.js.map +1 -0
  188. package/lib/models/ident.model.d.ts +128 -0
  189. package/lib/models/ident.model.d.ts.map +1 -0
  190. package/lib/models/ident.model.js +207 -0
  191. package/lib/models/ident.model.js.map +1 -0
  192. package/lib/models/ownermodel.model.d.ts +68 -0
  193. package/lib/models/ownermodel.model.d.ts.map +1 -0
  194. package/lib/models/ownermodel.model.js +113 -0
  195. package/lib/models/ownermodel.model.js.map +1 -0
  196. package/lib/models/password.model.d.ts +78 -0
  197. package/lib/models/password.model.d.ts.map +1 -0
  198. package/lib/models/password.model.js +171 -0
  199. package/lib/models/password.model.js.map +1 -0
  200. package/lib/models/refreshtoken.model.d.ts +30 -0
  201. package/lib/models/refreshtoken.model.d.ts.map +1 -0
  202. package/lib/models/refreshtoken.model.js +29 -0
  203. package/lib/models/refreshtoken.model.js.map +1 -0
  204. package/lib/models/registry.model.d.ts +76 -0
  205. package/lib/models/registry.model.d.ts.map +1 -0
  206. package/lib/models/registry.model.js +104 -0
  207. package/lib/models/registry.model.js.map +1 -0
  208. package/lib/models/rolemodel.model.d.ts +28 -0
  209. package/lib/models/rolemodel.model.d.ts.map +1 -0
  210. package/lib/models/{rolemodel.js → rolemodel.model.js} +23 -5
  211. package/lib/models/rolemodel.model.js.map +1 -0
  212. package/lib/models/simpleuser.model.d.ts +78 -0
  213. package/lib/models/simpleuser.model.d.ts.map +1 -0
  214. package/lib/models/simpleuser.model.js +124 -0
  215. package/lib/models/simpleuser.model.js.map +1 -0
  216. package/lib/models/types.d.ts +113 -0
  217. package/lib/models/types.d.ts.map +1 -0
  218. package/lib/models/types.js +2 -0
  219. package/lib/models/types.js.map +1 -0
  220. package/lib/models/user.model.d.ts +103 -0
  221. package/lib/models/user.model.d.ts.map +1 -0
  222. package/lib/models/user.model.js +164 -0
  223. package/lib/models/user.model.js.map +1 -0
  224. package/lib/queues/{memoryqueue.d.ts → memoryqueue.service.d.ts} +26 -13
  225. package/lib/queues/memoryqueue.service.d.ts.map +1 -0
  226. package/lib/queues/{memoryqueue.js → memoryqueue.service.js} +55 -31
  227. package/lib/queues/memoryqueue.service.js.map +1 -0
  228. package/lib/queues/pubsubservice.d.ts +8 -6
  229. package/lib/queues/pubsubservice.d.ts.map +1 -1
  230. package/lib/queues/pubsubservice.js +5 -4
  231. package/lib/queues/pubsubservice.js.map +1 -1
  232. package/lib/queues/queueservice.d.ts +9 -11
  233. package/lib/queues/queueservice.d.ts.map +1 -1
  234. package/lib/queues/queueservice.js +41 -13
  235. package/lib/queues/queueservice.js.map +1 -1
  236. package/lib/rest/hooks.d.ts +8 -0
  237. package/lib/rest/hooks.d.ts.map +1 -0
  238. package/lib/rest/hooks.js +10 -0
  239. package/lib/rest/hooks.js.map +1 -0
  240. package/lib/rest/irest.d.ts +212 -0
  241. package/lib/rest/irest.d.ts.map +1 -0
  242. package/lib/rest/irest.js +39 -0
  243. package/lib/rest/irest.js.map +1 -0
  244. package/lib/rest/originfilter.d.ts +38 -0
  245. package/lib/rest/originfilter.d.ts.map +1 -0
  246. package/lib/rest/originfilter.js +61 -0
  247. package/lib/rest/originfilter.js.map +1 -0
  248. package/lib/rest/restoperationstransport.service.d.ts +193 -0
  249. package/lib/rest/restoperationstransport.service.d.ts.map +1 -0
  250. package/lib/rest/restoperationstransport.service.js +780 -0
  251. package/lib/rest/restoperationstransport.service.js.map +1 -0
  252. package/lib/rest/router.service.d.ts +244 -0
  253. package/lib/rest/router.service.d.ts.map +1 -0
  254. package/lib/rest/router.service.js +843 -0
  255. package/lib/rest/router.service.js.map +1 -0
  256. package/lib/schemas/hooks.d.ts +48 -0
  257. package/lib/schemas/hooks.d.ts.map +1 -0
  258. package/lib/schemas/hooks.js +152 -0
  259. package/lib/schemas/hooks.js.map +1 -0
  260. package/lib/services/audit.model.d.ts +208 -0
  261. package/lib/services/audit.model.d.ts.map +1 -0
  262. package/lib/services/audit.model.js +432 -0
  263. package/lib/services/audit.model.js.map +1 -0
  264. package/lib/services/binary.service.d.ts +808 -0
  265. package/lib/services/binary.service.d.ts.map +1 -0
  266. package/lib/services/binary.service.js +1365 -0
  267. package/lib/services/binary.service.js.map +1 -0
  268. package/lib/services/cloudbinary.d.ts +17 -12
  269. package/lib/services/cloudbinary.d.ts.map +1 -1
  270. package/lib/services/cloudbinary.js +23 -17
  271. package/lib/services/cloudbinary.js.map +1 -1
  272. package/lib/services/command.d.ts +118 -0
  273. package/lib/services/command.d.ts.map +1 -0
  274. package/lib/services/command.js +97 -0
  275. package/lib/services/command.js.map +1 -0
  276. package/lib/services/cron.service.d.ts +142 -0
  277. package/lib/services/cron.service.d.ts.map +1 -0
  278. package/lib/services/cron.service.js +291 -0
  279. package/lib/services/cron.service.js.map +1 -0
  280. package/lib/services/{cryptoservice.d.ts → cryptoservice.service.d.ts} +75 -141
  281. package/lib/services/cryptoservice.service.d.ts.map +1 -0
  282. package/lib/services/cryptoservice.service.js +527 -0
  283. package/lib/services/cryptoservice.service.js.map +1 -0
  284. package/lib/services/debugmailer.service.d.ts +49 -0
  285. package/lib/services/debugmailer.service.d.ts.map +1 -0
  286. package/lib/services/{debugmailer.js → debugmailer.service.js} +25 -10
  287. package/lib/services/debugmailer.service.js.map +1 -0
  288. package/lib/services/domainservice.service.d.ts +242 -0
  289. package/lib/services/domainservice.service.d.ts.map +1 -0
  290. package/lib/services/domainservice.service.js +676 -0
  291. package/lib/services/domainservice.service.js.map +1 -0
  292. package/lib/services/httpserver.service.d.ts +248 -0
  293. package/lib/services/httpserver.service.d.ts.map +1 -0
  294. package/lib/services/httpserver.service.js +673 -0
  295. package/lib/services/httpserver.service.js.map +1 -0
  296. package/lib/services/iauthentication.d.ts +202 -0
  297. package/lib/services/iauthentication.d.ts.map +1 -0
  298. package/lib/services/iauthentication.js +2 -0
  299. package/lib/services/iauthentication.js.map +1 -0
  300. package/lib/services/icryptoservice.d.ts +127 -0
  301. package/lib/services/icryptoservice.d.ts.map +1 -0
  302. package/lib/services/icryptoservice.js +68 -0
  303. package/lib/services/icryptoservice.js.map +1 -0
  304. package/lib/services/imailer.d.ts +17 -0
  305. package/lib/services/imailer.d.ts.map +1 -0
  306. package/lib/services/imailer.js +2 -0
  307. package/lib/services/imailer.js.map +1 -0
  308. package/lib/services/iservice.d.ts +104 -0
  309. package/lib/services/iservice.d.ts.map +1 -0
  310. package/lib/services/iservice.js +63 -0
  311. package/lib/services/iservice.js.map +1 -0
  312. package/lib/services/mailer.service.d.ts +220 -0
  313. package/lib/services/mailer.service.d.ts.map +1 -0
  314. package/lib/services/mailer.service.js +251 -0
  315. package/lib/services/mailer.service.js.map +1 -0
  316. package/lib/services/{notificationservice.d.ts → notificationservice.service.d.ts} +10 -11
  317. package/lib/services/notificationservice.service.d.ts.map +1 -0
  318. package/lib/services/{notificationservice.js → notificationservice.service.js} +24 -12
  319. package/lib/services/notificationservice.service.js.map +1 -0
  320. package/lib/services/operationstransport.d.ts +65 -0
  321. package/lib/services/operationstransport.d.ts.map +1 -0
  322. package/lib/services/operationstransport.js +103 -0
  323. package/lib/services/operationstransport.js.map +1 -0
  324. package/lib/services/{prometheus.d.ts → prometheus.service.d.ts} +13 -12
  325. package/lib/services/prometheus.service.d.ts.map +1 -0
  326. package/lib/services/prometheus.service.js +203 -0
  327. package/lib/services/prometheus.service.js.map +1 -0
  328. package/lib/services/{resource.d.ts → resource.service.d.ts} +34 -15
  329. package/lib/services/resource.service.d.ts.map +1 -0
  330. package/lib/services/resource.service.js +301 -0
  331. package/lib/services/resource.service.js.map +1 -0
  332. package/lib/services/service.d.ts +87 -188
  333. package/lib/services/service.d.ts.map +1 -1
  334. package/lib/services/service.js +407 -422
  335. package/lib/services/service.js.map +1 -1
  336. package/lib/services/servicecommands.d.ts +99 -0
  337. package/lib/services/servicecommands.d.ts.map +1 -0
  338. package/lib/services/servicecommands.js +171 -0
  339. package/lib/services/servicecommands.js.map +1 -0
  340. package/lib/services/serviceparameters.d.ts +33 -0
  341. package/lib/services/serviceparameters.d.ts.map +1 -0
  342. package/lib/services/serviceparameters.js +79 -0
  343. package/lib/services/serviceparameters.js.map +1 -0
  344. package/lib/services/token.service.d.ts +95 -0
  345. package/lib/services/token.service.d.ts.map +1 -0
  346. package/lib/services/token.service.js +182 -0
  347. package/lib/services/token.service.js.map +1 -0
  348. package/lib/{utils → session}/cookie.d.ts +32 -19
  349. package/lib/session/cookie.d.ts.map +1 -0
  350. package/lib/{utils → session}/cookie.js +76 -23
  351. package/lib/session/cookie.js.map +1 -0
  352. package/lib/session/manager.model.d.ts +87 -0
  353. package/lib/session/manager.model.d.ts.map +1 -0
  354. package/lib/session/manager.model.js +212 -0
  355. package/lib/session/manager.model.js.map +1 -0
  356. package/lib/session/session.d.ts +100 -0
  357. package/lib/session/session.d.ts.map +1 -0
  358. package/lib/session/session.js +175 -0
  359. package/lib/session/session.js.map +1 -0
  360. package/lib/stores/istore.d.ts +99 -0
  361. package/lib/stores/istore.d.ts.map +1 -0
  362. package/lib/stores/istore.js +26 -0
  363. package/lib/stores/istore.js.map +1 -0
  364. package/lib/stores/memory.service.d.ts +114 -0
  365. package/lib/stores/memory.service.d.ts.map +1 -0
  366. package/lib/stores/memory.service.js +344 -0
  367. package/lib/stores/memory.service.js.map +1 -0
  368. package/lib/stores/store.d.ts +126 -626
  369. package/lib/stores/store.d.ts.map +1 -1
  370. package/lib/stores/store.js +257 -1117
  371. package/lib/stores/store.js.map +1 -1
  372. package/lib/templates/templates.d.ts +47 -0
  373. package/lib/templates/templates.d.ts.map +1 -0
  374. package/lib/templates/templates.js +101 -0
  375. package/lib/templates/templates.js.map +1 -0
  376. package/lib/test/application.d.ts +174 -0
  377. package/lib/test/application.d.ts.map +1 -0
  378. package/lib/test/application.js +288 -0
  379. package/lib/test/application.js.map +1 -0
  380. package/lib/test/asyncstorage.d.ts +16 -0
  381. package/lib/test/asyncstorage.d.ts.map +1 -0
  382. package/lib/test/asyncstorage.js +32 -0
  383. package/lib/test/asyncstorage.js.map +1 -0
  384. package/lib/test/behavior-fixture.model.d.ts +30 -0
  385. package/lib/test/behavior-fixture.model.d.ts.map +1 -0
  386. package/lib/test/behavior-fixture.model.js +63 -0
  387. package/lib/test/behavior-fixture.model.js.map +1 -0
  388. package/lib/test/core.d.ts +63 -0
  389. package/lib/test/core.d.ts.map +1 -0
  390. package/lib/test/core.js +190 -0
  391. package/lib/test/core.js.map +1 -0
  392. package/lib/test/index.d.ts +7 -0
  393. package/lib/test/index.d.ts.map +1 -0
  394. package/lib/test/index.js +8 -0
  395. package/lib/test/index.js.map +1 -0
  396. package/lib/test/internal.d.ts +34 -0
  397. package/lib/test/internal.d.ts.map +1 -0
  398. package/lib/test/internal.js +156 -0
  399. package/lib/test/internal.js.map +1 -0
  400. package/lib/test/legacyident.fixture.model.d.ts +98 -0
  401. package/lib/test/legacyident.fixture.model.d.ts.map +1 -0
  402. package/lib/test/legacyident.fixture.model.js +125 -0
  403. package/lib/test/legacyident.fixture.model.js.map +1 -0
  404. package/lib/test/objects.d.ts +318 -0
  405. package/lib/test/objects.d.ts.map +1 -0
  406. package/lib/test/objects.js +443 -0
  407. package/lib/test/objects.js.map +1 -0
  408. package/lib/utils/abstractdeployer.d.ts +4 -2
  409. package/lib/utils/abstractdeployer.d.ts.map +1 -1
  410. package/lib/utils/abstractdeployer.js +3 -0
  411. package/lib/utils/abstractdeployer.js.map +1 -1
  412. package/package.json +102 -60
  413. package/test/cachedapp/webda.config.json +1 -5
  414. package/test/config-cached.json +3 -6
  415. package/test/config.json +3 -10
  416. package/test/my-cnf.json +9 -0
  417. package/webda.module.json +3755 -2496
  418. package/lib/application.d.ts +0 -888
  419. package/lib/application.d.ts.map +0 -1
  420. package/lib/application.js +0 -768
  421. package/lib/application.js.map +0 -1
  422. package/lib/application.spec.d.ts +0 -2
  423. package/lib/application.spec.d.ts.map +0 -1
  424. package/lib/application.spec.js +0 -248
  425. package/lib/application.spec.js.map +0 -1
  426. package/lib/core.d.ts +0 -743
  427. package/lib/core.d.ts.map +0 -1
  428. package/lib/core.js +0 -1334
  429. package/lib/core.js.map +0 -1
  430. package/lib/core.spec.d.ts +0 -2
  431. package/lib/core.spec.d.ts.map +0 -1
  432. package/lib/core.spec.js +0 -790
  433. package/lib/core.spec.js.map +0 -1
  434. package/lib/errors.d.ts +0 -64
  435. package/lib/errors.d.ts.map +0 -1
  436. package/lib/errors.js +0 -97
  437. package/lib/errors.js.map +0 -1
  438. package/lib/errors.spec.d.ts +0 -2
  439. package/lib/errors.spec.d.ts.map +0 -1
  440. package/lib/errors.spec.js +0 -33
  441. package/lib/errors.spec.js.map +0 -1
  442. package/lib/models/aclmodel.spec.d.ts +0 -2
  443. package/lib/models/aclmodel.spec.d.ts.map +0 -1
  444. package/lib/models/aclmodel.spec.js +0 -187
  445. package/lib/models/aclmodel.spec.js.map +0 -1
  446. package/lib/models/coremodel.d.ts +0 -896
  447. package/lib/models/coremodel.d.ts.map +0 -1
  448. package/lib/models/coremodel.js +0 -1214
  449. package/lib/models/coremodel.js.map +0 -1
  450. package/lib/models/coremodel.spec.d.ts +0 -2
  451. package/lib/models/coremodel.spec.d.ts.map +0 -1
  452. package/lib/models/coremodel.spec.js +0 -464
  453. package/lib/models/coremodel.spec.js.map +0 -1
  454. package/lib/models/ident.d.ts +0 -68
  455. package/lib/models/ident.d.ts.map +0 -1
  456. package/lib/models/ident.js +0 -26
  457. package/lib/models/ident.js.map +0 -1
  458. package/lib/models/ident.spec.d.ts +0 -2
  459. package/lib/models/ident.spec.d.ts.map +0 -1
  460. package/lib/models/ident.spec.js +0 -24
  461. package/lib/models/ident.spec.js.map +0 -1
  462. package/lib/models/ownermodel.d.ts +0 -51
  463. package/lib/models/ownermodel.d.ts.map +0 -1
  464. package/lib/models/ownermodel.js +0 -65
  465. package/lib/models/ownermodel.js.map +0 -1
  466. package/lib/models/ownermodel.spec.d.ts +0 -2
  467. package/lib/models/ownermodel.spec.d.ts.map +0 -1
  468. package/lib/models/ownermodel.spec.js +0 -215
  469. package/lib/models/ownermodel.spec.js.map +0 -1
  470. package/lib/models/relations.d.ts +0 -182
  471. package/lib/models/relations.d.ts.map +0 -1
  472. package/lib/models/relations.js +0 -157
  473. package/lib/models/relations.js.map +0 -1
  474. package/lib/models/relations.spec.d.ts +0 -14
  475. package/lib/models/relations.spec.d.ts.map +0 -1
  476. package/lib/models/relations.spec.js +0 -217
  477. package/lib/models/relations.spec.js.map +0 -1
  478. package/lib/models/rolemodel.d.ts +0 -11
  479. package/lib/models/rolemodel.d.ts.map +0 -1
  480. package/lib/models/rolemodel.js.map +0 -1
  481. package/lib/models/rolemodel.spec.d.ts +0 -2
  482. package/lib/models/rolemodel.spec.d.ts.map +0 -1
  483. package/lib/models/rolemodel.spec.js +0 -90
  484. package/lib/models/rolemodel.spec.js.map +0 -1
  485. package/lib/models/simpleuser.d.ts +0 -47
  486. package/lib/models/simpleuser.d.ts.map +0 -1
  487. package/lib/models/simpleuser.js +0 -84
  488. package/lib/models/simpleuser.js.map +0 -1
  489. package/lib/models/test.d.ts +0 -11
  490. package/lib/models/test.d.ts.map +0 -1
  491. package/lib/models/test.js +0 -7
  492. package/lib/models/test.js.map +0 -1
  493. package/lib/models/user.d.ts +0 -67
  494. package/lib/models/user.d.ts.map +0 -1
  495. package/lib/models/user.js +0 -86
  496. package/lib/models/user.js.map +0 -1
  497. package/lib/models/user.spec.d.ts +0 -2
  498. package/lib/models/user.spec.d.ts.map +0 -1
  499. package/lib/models/user.spec.js +0 -89
  500. package/lib/models/user.spec.js.map +0 -1
  501. package/lib/queues/filequeue.d.ts +0 -59
  502. package/lib/queues/filequeue.d.ts.map +0 -1
  503. package/lib/queues/filequeue.js +0 -131
  504. package/lib/queues/filequeue.js.map +0 -1
  505. package/lib/queues/filequeue.spec.d.ts +0 -2
  506. package/lib/queues/filequeue.spec.d.ts.map +0 -1
  507. package/lib/queues/filequeue.spec.js +0 -84
  508. package/lib/queues/filequeue.spec.js.map +0 -1
  509. package/lib/queues/memoryqueue.d.ts.map +0 -1
  510. package/lib/queues/memoryqueue.js.map +0 -1
  511. package/lib/queues/memoryqueue.spec.d.ts +0 -2
  512. package/lib/queues/memoryqueue.spec.d.ts.map +0 -1
  513. package/lib/queues/memoryqueue.spec.js +0 -203
  514. package/lib/queues/memoryqueue.spec.js.map +0 -1
  515. package/lib/queues/queue.spec.d.ts +0 -6
  516. package/lib/queues/queue.spec.d.ts.map +0 -1
  517. package/lib/queues/queue.spec.js +0 -55
  518. package/lib/queues/queue.spec.js.map +0 -1
  519. package/lib/rest/restdomainservice.d.ts +0 -63
  520. package/lib/rest/restdomainservice.d.ts.map +0 -1
  521. package/lib/rest/restdomainservice.js +0 -687
  522. package/lib/rest/restdomainservice.js.map +0 -1
  523. package/lib/rest/restdomainservice.spec.d.ts +0 -2
  524. package/lib/rest/restdomainservice.spec.d.ts.map +0 -1
  525. package/lib/rest/restdomainservice.spec.js +0 -124
  526. package/lib/rest/restdomainservice.spec.js.map +0 -1
  527. package/lib/rest/router.d.ts +0 -174
  528. package/lib/rest/router.d.ts.map +0 -1
  529. package/lib/rest/router.js +0 -429
  530. package/lib/rest/router.js.map +0 -1
  531. package/lib/rest/router.spec.d.ts +0 -2
  532. package/lib/rest/router.spec.d.ts.map +0 -1
  533. package/lib/rest/router.spec.js +0 -255
  534. package/lib/rest/router.spec.js.map +0 -1
  535. package/lib/services/asyncevents.d.ts +0 -152
  536. package/lib/services/asyncevents.d.ts.map +0 -1
  537. package/lib/services/asyncevents.js +0 -217
  538. package/lib/services/asyncevents.js.map +0 -1
  539. package/lib/services/asyncevents.spec.d.ts +0 -2
  540. package/lib/services/asyncevents.spec.d.ts.map +0 -1
  541. package/lib/services/asyncevents.spec.js +0 -118
  542. package/lib/services/asyncevents.spec.js.map +0 -1
  543. package/lib/services/authentication.d.ts +0 -361
  544. package/lib/services/authentication.d.ts.map +0 -1
  545. package/lib/services/authentication.js +0 -773
  546. package/lib/services/authentication.js.map +0 -1
  547. package/lib/services/authentication.spec.d.ts +0 -2
  548. package/lib/services/authentication.spec.d.ts.map +0 -1
  549. package/lib/services/authentication.spec.js +0 -458
  550. package/lib/services/authentication.spec.js.map +0 -1
  551. package/lib/services/binary.d.ts +0 -477
  552. package/lib/services/binary.d.ts.map +0 -1
  553. package/lib/services/binary.js +0 -617
  554. package/lib/services/binary.js.map +0 -1
  555. package/lib/services/binary.spec.d.ts +0 -41
  556. package/lib/services/binary.spec.d.ts.map +0 -1
  557. package/lib/services/binary.spec.js +0 -151
  558. package/lib/services/binary.spec.js.map +0 -1
  559. package/lib/services/cloudbinary.spec.d.ts +0 -6
  560. package/lib/services/cloudbinary.spec.d.ts.map +0 -1
  561. package/lib/services/cloudbinary.spec.js +0 -66
  562. package/lib/services/cloudbinary.spec.js.map +0 -1
  563. package/lib/services/configuration.d.ts.map +0 -1
  564. package/lib/services/configuration.js +0 -193
  565. package/lib/services/configuration.js.map +0 -1
  566. package/lib/services/configuration.spec.d.ts +0 -2
  567. package/lib/services/configuration.spec.d.ts.map +0 -1
  568. package/lib/services/configuration.spec.js +0 -130
  569. package/lib/services/configuration.spec.js.map +0 -1
  570. package/lib/services/cron.d.ts +0 -74
  571. package/lib/services/cron.d.ts.map +0 -1
  572. package/lib/services/cron.js +0 -141
  573. package/lib/services/cron.js.map +0 -1
  574. package/lib/services/cron.spec.d.ts +0 -2
  575. package/lib/services/cron.spec.d.ts.map +0 -1
  576. package/lib/services/cron.spec.js +0 -76
  577. package/lib/services/cron.spec.js.map +0 -1
  578. package/lib/services/cryptoservice.d.ts.map +0 -1
  579. package/lib/services/cryptoservice.js +0 -433
  580. package/lib/services/cryptoservice.js.map +0 -1
  581. package/lib/services/cryptoservice.spec.d.ts +0 -2
  582. package/lib/services/cryptoservice.spec.d.ts.map +0 -1
  583. package/lib/services/cryptoservice.spec.js +0 -177
  584. package/lib/services/cryptoservice.spec.js.map +0 -1
  585. package/lib/services/debugmailer.d.ts +0 -36
  586. package/lib/services/debugmailer.d.ts.map +0 -1
  587. package/lib/services/debugmailer.js.map +0 -1
  588. package/lib/services/debugmailer.spec.d.ts +0 -2
  589. package/lib/services/debugmailer.spec.d.ts.map +0 -1
  590. package/lib/services/debugmailer.spec.js +0 -32
  591. package/lib/services/debugmailer.spec.js.map +0 -1
  592. package/lib/services/domainservice.d.ts +0 -272
  593. package/lib/services/domainservice.d.ts.map +0 -1
  594. package/lib/services/domainservice.js +0 -651
  595. package/lib/services/domainservice.js.map +0 -1
  596. package/lib/services/domainservice.spec.d.ts +0 -2
  597. package/lib/services/domainservice.spec.d.ts.map +0 -1
  598. package/lib/services/domainservice.spec.js +0 -592
  599. package/lib/services/domainservice.spec.js.map +0 -1
  600. package/lib/services/filebinary.d.ts +0 -136
  601. package/lib/services/filebinary.d.ts.map +0 -1
  602. package/lib/services/filebinary.js +0 -373
  603. package/lib/services/filebinary.js.map +0 -1
  604. package/lib/services/filebinary.spec.d.ts +0 -25
  605. package/lib/services/filebinary.spec.d.ts.map +0 -1
  606. package/lib/services/filebinary.spec.js +0 -428
  607. package/lib/services/filebinary.spec.js.map +0 -1
  608. package/lib/services/fileconfiguration.d.ts +0 -23
  609. package/lib/services/fileconfiguration.d.ts.map +0 -1
  610. package/lib/services/fileconfiguration.js +0 -48
  611. package/lib/services/fileconfiguration.js.map +0 -1
  612. package/lib/services/fileconfiguration.spec.d.ts +0 -2
  613. package/lib/services/fileconfiguration.spec.d.ts.map +0 -1
  614. package/lib/services/fileconfiguration.spec.js +0 -215
  615. package/lib/services/fileconfiguration.spec.js.map +0 -1
  616. package/lib/services/invitationservice.d.ts +0 -223
  617. package/lib/services/invitationservice.d.ts.map +0 -1
  618. package/lib/services/invitationservice.js +0 -529
  619. package/lib/services/invitationservice.js.map +0 -1
  620. package/lib/services/invitationservice.spec.d.ts +0 -2
  621. package/lib/services/invitationservice.spec.d.ts.map +0 -1
  622. package/lib/services/invitationservice.spec.js +0 -567
  623. package/lib/services/invitationservice.spec.js.map +0 -1
  624. package/lib/services/kubernetesconfiguration.d.ts +0 -27
  625. package/lib/services/kubernetesconfiguration.d.ts.map +0 -1
  626. package/lib/services/kubernetesconfiguration.js +0 -52
  627. package/lib/services/kubernetesconfiguration.js.map +0 -1
  628. package/lib/services/kubernetesconfiguration.spec.d.ts +0 -2
  629. package/lib/services/kubernetesconfiguration.spec.d.ts.map +0 -1
  630. package/lib/services/kubernetesconfiguration.spec.js +0 -206
  631. package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
  632. package/lib/services/mailer.d.ts +0 -166
  633. package/lib/services/mailer.d.ts.map +0 -1
  634. package/lib/services/mailer.js +0 -176
  635. package/lib/services/mailer.js.map +0 -1
  636. package/lib/services/mailer.spec.d.ts +0 -2
  637. package/lib/services/mailer.spec.d.ts.map +0 -1
  638. package/lib/services/mailer.spec.js +0 -158
  639. package/lib/services/mailer.spec.js.map +0 -1
  640. package/lib/services/notificationservice.d.ts.map +0 -1
  641. package/lib/services/notificationservice.js.map +0 -1
  642. package/lib/services/notificationservice.spec.d.ts +0 -2
  643. package/lib/services/notificationservice.spec.d.ts.map +0 -1
  644. package/lib/services/notificationservice.spec.js +0 -83
  645. package/lib/services/notificationservice.spec.js.map +0 -1
  646. package/lib/services/oauth.d.ts +0 -226
  647. package/lib/services/oauth.d.ts.map +0 -1
  648. package/lib/services/oauth.js +0 -294
  649. package/lib/services/oauth.js.map +0 -1
  650. package/lib/services/oauth.spec.d.ts +0 -2
  651. package/lib/services/oauth.spec.d.ts.map +0 -1
  652. package/lib/services/oauth.spec.js +0 -208
  653. package/lib/services/oauth.spec.js.map +0 -1
  654. package/lib/services/prometheus.d.ts.map +0 -1
  655. package/lib/services/prometheus.js +0 -160
  656. package/lib/services/prometheus.js.map +0 -1
  657. package/lib/services/prometheus.spec.d.ts +0 -2
  658. package/lib/services/prometheus.spec.d.ts.map +0 -1
  659. package/lib/services/prometheus.spec.js +0 -76
  660. package/lib/services/prometheus.spec.js.map +0 -1
  661. package/lib/services/resource.d.ts.map +0 -1
  662. package/lib/services/resource.js +0 -170
  663. package/lib/services/resource.js.map +0 -1
  664. package/lib/services/resource.spec.d.ts +0 -2
  665. package/lib/services/resource.spec.d.ts.map +0 -1
  666. package/lib/services/resource.spec.js +0 -140
  667. package/lib/services/resource.spec.js.map +0 -1
  668. package/lib/services/service.spec.d.ts +0 -2
  669. package/lib/services/service.spec.d.ts.map +0 -1
  670. package/lib/services/service.spec.js +0 -286
  671. package/lib/services/service.spec.js.map +0 -1
  672. package/lib/stores/aggregator.d.ts +0 -48
  673. package/lib/stores/aggregator.d.ts.map +0 -1
  674. package/lib/stores/aggregator.js +0 -80
  675. package/lib/stores/aggregator.js.map +0 -1
  676. package/lib/stores/file.d.ts +0 -108
  677. package/lib/stores/file.d.ts.map +0 -1
  678. package/lib/stores/file.js +0 -188
  679. package/lib/stores/file.js.map +0 -1
  680. package/lib/stores/file.spec.d.ts +0 -13
  681. package/lib/stores/file.spec.d.ts.map +0 -1
  682. package/lib/stores/file.spec.js +0 -138
  683. package/lib/stores/file.spec.js.map +0 -1
  684. package/lib/stores/mapper.d.ts +0 -150
  685. package/lib/stores/mapper.d.ts.map +0 -1
  686. package/lib/stores/mapper.js +0 -293
  687. package/lib/stores/mapper.js.map +0 -1
  688. package/lib/stores/mapper.spec.d.ts +0 -2
  689. package/lib/stores/mapper.spec.d.ts.map +0 -1
  690. package/lib/stores/mapper.spec.js +0 -167
  691. package/lib/stores/mapper.spec.js.map +0 -1
  692. package/lib/stores/memory.d.ts +0 -152
  693. package/lib/stores/memory.d.ts.map +0 -1
  694. package/lib/stores/memory.js +0 -371
  695. package/lib/stores/memory.js.map +0 -1
  696. package/lib/stores/memory.spec.d.ts +0 -14
  697. package/lib/stores/memory.spec.d.ts.map +0 -1
  698. package/lib/stores/memory.spec.js +0 -263
  699. package/lib/stores/memory.spec.js.map +0 -1
  700. package/lib/stores/modelmapper.d.ts +0 -62
  701. package/lib/stores/modelmapper.d.ts.map +0 -1
  702. package/lib/stores/modelmapper.js +0 -197
  703. package/lib/stores/modelmapper.js.map +0 -1
  704. package/lib/stores/store.spec.d.ts +0 -57
  705. package/lib/stores/store.spec.d.ts.map +0 -1
  706. package/lib/stores/store.spec.js +0 -737
  707. package/lib/stores/store.spec.js.map +0 -1
  708. package/lib/test.d.ts +0 -265
  709. package/lib/test.d.ts.map +0 -1
  710. package/lib/test.js +0 -622
  711. package/lib/test.js.map +0 -1
  712. package/lib/unpackedapplication.d.ts.map +0 -1
  713. package/lib/unpackedapplication.js +0 -350
  714. package/lib/unpackedapplication.js.map +0 -1
  715. package/lib/utils/abstractdeployer.spec.d.ts +0 -2
  716. package/lib/utils/abstractdeployer.spec.d.ts.map +0 -1
  717. package/lib/utils/abstractdeployer.spec.js +0 -21
  718. package/lib/utils/abstractdeployer.spec.js.map +0 -1
  719. package/lib/utils/case.d.ts +0 -8
  720. package/lib/utils/case.d.ts.map +0 -1
  721. package/lib/utils/case.js +0 -43
  722. package/lib/utils/case.js.map +0 -1
  723. package/lib/utils/case.spec.d.ts +0 -2
  724. package/lib/utils/case.spec.d.ts.map +0 -1
  725. package/lib/utils/case.spec.js +0 -50
  726. package/lib/utils/case.spec.js.map +0 -1
  727. package/lib/utils/context.d.ts +0 -482
  728. package/lib/utils/context.d.ts.map +0 -1
  729. package/lib/utils/context.js +0 -739
  730. package/lib/utils/context.js.map +0 -1
  731. package/lib/utils/context.spec.d.ts +0 -10
  732. package/lib/utils/context.spec.d.ts.map +0 -1
  733. package/lib/utils/context.spec.js +0 -383
  734. package/lib/utils/context.spec.js.map +0 -1
  735. package/lib/utils/cookie.d.ts.map +0 -1
  736. package/lib/utils/cookie.js.map +0 -1
  737. package/lib/utils/cookie.spec.d.ts +0 -2
  738. package/lib/utils/cookie.spec.d.ts.map +0 -1
  739. package/lib/utils/cookie.spec.js +0 -88
  740. package/lib/utils/cookie.spec.js.map +0 -1
  741. package/lib/utils/esm.d.ts +0 -14
  742. package/lib/utils/esm.d.ts.map +0 -1
  743. package/lib/utils/esm.js +0 -19
  744. package/lib/utils/esm.js.map +0 -1
  745. package/lib/utils/httpcontext.d.ts.map +0 -1
  746. package/lib/utils/httpcontext.js.map +0 -1
  747. package/lib/utils/httpcontext.spec.d.ts +0 -5
  748. package/lib/utils/httpcontext.spec.d.ts.map +0 -1
  749. package/lib/utils/httpcontext.spec.js +0 -77
  750. package/lib/utils/httpcontext.spec.js.map +0 -1
  751. package/lib/utils/logger.d.ts +0 -92
  752. package/lib/utils/logger.d.ts.map +0 -1
  753. package/lib/utils/logger.js +0 -121
  754. package/lib/utils/logger.js.map +0 -1
  755. package/lib/utils/logger.spec.d.ts +0 -2
  756. package/lib/utils/logger.spec.d.ts.map +0 -1
  757. package/lib/utils/logger.spec.js +0 -48
  758. package/lib/utils/logger.spec.js.map +0 -1
  759. package/lib/utils/serializers.d.ts +0 -162
  760. package/lib/utils/serializers.d.ts.map +0 -1
  761. package/lib/utils/serializers.js +0 -420
  762. package/lib/utils/serializers.js.map +0 -1
  763. package/lib/utils/serializers.spec.d.ts +0 -2
  764. package/lib/utils/serializers.spec.d.ts.map +0 -1
  765. package/lib/utils/serializers.spec.js +0 -311
  766. package/lib/utils/serializers.spec.js.map +0 -1
  767. package/lib/utils/session.d.ts +0 -123
  768. package/lib/utils/session.d.ts.map +0 -1
  769. package/lib/utils/session.js +0 -156
  770. package/lib/utils/session.js.map +0 -1
  771. package/lib/utils/session.spec.d.ts +0 -2
  772. package/lib/utils/session.spec.d.ts.map +0 -1
  773. package/lib/utils/session.spec.js +0 -81
  774. package/lib/utils/session.spec.js.map +0 -1
  775. package/lib/utils/throttler.d.ts +0 -99
  776. package/lib/utils/throttler.d.ts.map +0 -1
  777. package/lib/utils/throttler.js +0 -160
  778. package/lib/utils/throttler.js.map +0 -1
  779. package/lib/utils/throttler.spec.d.ts +0 -2
  780. package/lib/utils/throttler.spec.d.ts.map +0 -1
  781. package/lib/utils/throttler.spec.js +0 -53
  782. package/lib/utils/throttler.spec.js.map +0 -1
  783. package/lib/utils/waiter.d.ts +0 -94
  784. package/lib/utils/waiter.d.ts.map +0 -1
  785. package/lib/utils/waiter.js +0 -148
  786. package/lib/utils/waiter.js.map +0 -1
  787. package/lib/utils/waiter.spec.d.ts +0 -2
  788. package/lib/utils/waiter.spec.d.ts.map +0 -1
  789. package/lib/utils/waiter.spec.js +0 -98
  790. package/lib/utils/waiter.spec.js.map +0 -1
  791. package/test/jsonutils/mdocs.yaml +0 -56
  792. package/test/jsonutils/test.json +0 -3
  793. package/test/jsonutils/test.yml +0 -5
@@ -0,0 +1,676 @@
1
+ import { TransformCase } from "@webda/utils";
2
+ import { Service } from "./service.js";
3
+ import { OperationContext } from "../contexts/operationcontext.js";
4
+ import { runWithContext, useContext } from "../contexts/execution.js";
5
+ import * as WebdaError from "../errors/errors.js";
6
+ import { ServiceParameters } from "../services/serviceparameters.js";
7
+ import { useApplication } from "../application/hooks.js";
8
+ import { useModelMetadata } from "../core/hooks.js";
9
+ import { useInstanceStorage } from "../core/instancestorage.js";
10
+ import { registerOperation } from "../core/operations.js";
11
+ import { hasSchema, registerSchema } from "../schemas/hooks.js";
12
+ /**
13
+ * Remove Behavior-typed attributes (Metadata.Relations.behaviors) and private fields from client input.
14
+ * Behavior state can only be changed through the behavior's own actions.
15
+ * @param model - the model class
16
+ * @param input - the client input
17
+ * @returns the sanitized input
18
+ */
19
+ export function sanitizeModelInput(model, input) {
20
+ const out = stripPrivateFields(input);
21
+ if (out && typeof out === "object" && !Array.isArray(out)) {
22
+ for (const rel of useModelMetadata(model)?.Relations?.behaviors ?? []) {
23
+ delete out[rel.attribute];
24
+ }
25
+ }
26
+ return out;
27
+ }
28
+ /**
29
+ * Remove `__`-prefixed keys at any depth from client-supplied input, so private fields
30
+ * (such as a password hash) can never be set through the REST/operations surface
31
+ * @param input - the client input
32
+ * @returns a sanitized deep copy (non plain-object/array values are returned as is)
33
+ */
34
+ export function stripPrivateFields(input) {
35
+ if (Array.isArray(input)) {
36
+ return input.map(i => stripPrivateFields(i));
37
+ }
38
+ if (input && typeof input === "object" && Object.getPrototypeOf(input) === Object.prototype) {
39
+ // Object.fromEntries defines own properties: no dynamic assignment can reach a prototype
40
+ return Object.fromEntries(Object.entries(input)
41
+ .filter(([k]) => !k.startsWith("__") && k !== "constructor" && k !== "prototype")
42
+ .map(([k, v]) => [k, stripPrivateFields(v)]));
43
+ }
44
+ return input;
45
+ }
46
+ /**
47
+ * Models that hold authentication state: never exposed by a DomainService (REST, GraphQL, operations), nor any of
48
+ * their subclasses, unless explicitly listed in its `models` parameter
49
+ */
50
+ export const INTERNAL_MODELS = ["Webda/Ident", "Webda/RefreshToken"];
51
+ /**
52
+ * @param model - a model class
53
+ * @returns true when the model is, or descends from, one of {@link INTERNAL_MODELS}
54
+ */
55
+ export function isInternalModel(model) {
56
+ for (let clazz = model; clazz && clazz !== Function.prototype; clazz = Object.getPrototypeOf(clazz)) {
57
+ if (INTERNAL_MODELS.includes(clazz.Metadata?.Identifier)) {
58
+ return true;
59
+ }
60
+ }
61
+ return false;
62
+ }
63
+ /** Parameters for DomainService, controlling model exposure, URL naming, and query methods */
64
+ export class DomainServiceParameters extends ServiceParameters {
65
+ /**
66
+ * Expose objects as operations too
67
+ *
68
+ * @default true
69
+ */
70
+ operations;
71
+ /**
72
+ * Transform the name of the model to be used in the URL
73
+ *
74
+ * @see https://blog.boot.dev/clean-code/casings-in-coding/#:~:text=%F0%9F%94%97%20Camel%20Case,Go
75
+ * @default camelCase
76
+ */
77
+ nameTransfomer;
78
+ /**
79
+ * Method used for query objects
80
+ *
81
+ * @default "PUT"
82
+ */
83
+ queryMethod;
84
+ /**
85
+ * List of models to include
86
+ *
87
+ * If model is prefixed with a ! it will be excluded
88
+ *
89
+ * @default ["*"]
90
+ */
91
+ models;
92
+ /**
93
+ * Used to store the excluded models
94
+ * @SchemaIgnore
95
+ */
96
+ excludedModels;
97
+ /**
98
+ * Load parameters with defaults for operations, naming, and query method
99
+ * @param params - the service parameters
100
+ * @returns this for chaining
101
+ */
102
+ load(params = {}) {
103
+ super.load(params);
104
+ // Init default here
105
+ this.operations ??= true;
106
+ this.nameTransfomer ??= "camelCase";
107
+ this.queryMethod ??= "PUT";
108
+ this.models ??= ["*"];
109
+ this.excludedModels = this.models.filter(i => i.startsWith("!")).map(i => i.substring(1));
110
+ // Only contains excluded models so a wildcard is implied
111
+ if (this.models.length === this.excludedModels.length) {
112
+ this.models = ["*"];
113
+ }
114
+ return this;
115
+ }
116
+ /**
117
+ * Is a model is included in the service
118
+ * @param model - the model to use
119
+ * @returns the result
120
+ */
121
+ isIncluded(model) {
122
+ return !this.isExcluded(model) && (this.models.includes("*") || this.models.includes(model));
123
+ }
124
+ /**
125
+ * Is a model explicitly listed (not through the wildcard) in `models`
126
+ * @param model - the model identifier
127
+ * @returns the result
128
+ */
129
+ isExplicitlyIncluded(model) {
130
+ return !this.isExcluded(model) && this.models.includes(model);
131
+ }
132
+ /**
133
+ * Is a model excluded from the service
134
+ * @param model - the model to use
135
+ * @returns the result
136
+ */
137
+ isExcluded(model) {
138
+ return this.excludedModels.includes(model);
139
+ }
140
+ }
141
+ /**
142
+ * Domain Service expose all the models as Operations
143
+ *
144
+ * Model are exposed if they have a Expose decorator
145
+ *
146
+ * Children models Exposed should be under the first ModelRelated targetting them or the segment endpoint of Expose
147
+ *
148
+ * Other relations (ModelLinks, ModelParent) should only display their information but not be exposed
149
+ * ModelRelated should be ignored
150
+ *
151
+ * @WebdaModda
152
+ */
153
+ export class DomainService extends Service {
154
+ app;
155
+ static schemas = {
156
+ uuidRequest: {
157
+ type: "object",
158
+ properties: {
159
+ uuid: {
160
+ type: "string"
161
+ }
162
+ },
163
+ required: ["uuid"]
164
+ },
165
+ searchRequest: {
166
+ type: "object",
167
+ properties: {
168
+ query: {
169
+ type: "string"
170
+ }
171
+ }
172
+ }
173
+ };
174
+ /**
175
+ * Return the model name for this service
176
+ * @param name - the name to use
177
+ * @returns the result string
178
+ *
179
+ * @see https://blog.boot.dev/clean-code/casings-in-coding/#:~:text=%F0%9F%94%97%20Camel%20Case,Go
180
+ */
181
+ transformName(name) {
182
+ return TransformCase(name, this.parameters.nameTransfomer);
183
+ }
184
+ /**
185
+ * Retrieve a model instance by uuid, throwing NotFound if missing or deleted
186
+ * @param model - the model class to query
187
+ * @param uuid - the primary key
188
+ * @returns the model instance
189
+ */
190
+ async loadModel(model, uuid) {
191
+ let object;
192
+ try {
193
+ object = await model.ref(uuid).get();
194
+ }
195
+ catch {
196
+ // Repository may throw when the object does not exist
197
+ }
198
+ if (object === undefined || object.isDeleted()) {
199
+ const context = useContext();
200
+ await this.emit("Store.WebNotFound", {
201
+ context,
202
+ uuid: typeof uuid === "string" ? uuid : JSON.stringify(uuid)
203
+ });
204
+ throw new WebdaError.NotFound("Object not found");
205
+ }
206
+ return object;
207
+ }
208
+ /**
209
+ * Create a model operation implementation
210
+ * @param input - the model data to create
211
+ * @returns the created model instance
212
+ */
213
+ async modelCreate(input) {
214
+ const context = useContext();
215
+ const { model } = context.getExtension("operationContext");
216
+ // resolveArguments spreads the model schema's properties into positional args,
217
+ // so what lands here as `input` may be a single property value (e.g. slug string)
218
+ // rather than the full body. Also handles the no-schema fallback where the
219
+ // OperationContext itself is passed. In all non-object cases, read the raw input.
220
+ if (typeof input !== "object" || input === null || input instanceof OperationContext) {
221
+ input = await context.getInput();
222
+ }
223
+ input = sanitizeModelInput(model, input);
224
+ return runWithContext(context, async () => {
225
+ // Instantiate the model from raw input, load data, then save
226
+ const object = new model();
227
+ object.load(input);
228
+ await object.save();
229
+ return object;
230
+ });
231
+ }
232
+ /**
233
+ * Update a model operation implementation
234
+ * @param uuid - the model primary key
235
+ * @param input - the update data (may be undefined if schema was not resolvable)
236
+ * @returns the updated model instance
237
+ */
238
+ async modelUpdate(input) {
239
+ const context = useContext();
240
+ const { model, pkFields } = context.getExtension("operationContext");
241
+ // resolveArguments spreads all model schema properties as positional args.
242
+ // The first arg becomes the first property value (often the PK value).
243
+ // Fall back to context for both PK and input when needed.
244
+ if (typeof input !== "object" || input === null) {
245
+ input = await context.getInput();
246
+ }
247
+ input = sanitizeModelInput(model, input);
248
+ // Resolve the PK from body or URL params using the model's actual PK fields;
249
+ // fall back to "uuid" for legacy operations without pkFields in the context.
250
+ const params = context.getParameters() ?? {};
251
+ const fields = pkFields?.length ? pkFields : ["uuid"];
252
+ const pk = fields.length === 1
253
+ ? (input?.[fields[0]] ?? params[fields[0]])
254
+ : fields.reduce((acc, f) => {
255
+ acc[f] = input?.[f] ?? params[f];
256
+ return acc;
257
+ }, {});
258
+ const object = await this.loadModel(model, pk);
259
+ object["load"](input);
260
+ return object;
261
+ }
262
+ /**
263
+ * Get a model operation implementation
264
+ * @param uuid - the model primary key
265
+ * @returns the model instance
266
+ */
267
+ async modelGet(uuid) {
268
+ const context = useContext();
269
+ const { model } = context.getExtension("operationContext");
270
+ const object = await this.loadModel(model, uuid);
271
+ //await object.checkAct(context, "get");
272
+ return object;
273
+ }
274
+ /**
275
+ * Delete a model operation implementation
276
+ * @param uuid - the model primary key
277
+ */
278
+ async modelDelete(uuid) {
279
+ const context = useContext();
280
+ const { model } = context.getExtension("operationContext");
281
+ const object = await this.loadModel(model, uuid);
282
+ //await object.checkAct(context, "delete");
283
+ // Object can decide to not delete but mark as deleted
284
+ await object.delete();
285
+ }
286
+ /**
287
+ * Query models
288
+ * @param query - the query string
289
+ * @returns the query results
290
+ */
291
+ async modelQuery(query) {
292
+ const context = useContext();
293
+ const { model } = context.getExtension("operationContext");
294
+ return runWithContext(context, async () => {
295
+ try {
296
+ return await model.query(query);
297
+ }
298
+ catch (err) {
299
+ if (err instanceof SyntaxError) {
300
+ this.log("INFO", "Query syntax error");
301
+ throw new WebdaError.BadRequest("Query syntax error");
302
+ }
303
+ throw err;
304
+ }
305
+ });
306
+ }
307
+ /**
308
+ * Patch a model
309
+ * @param uuid - the model primary key
310
+ * @param input - the partial update data (may be undefined if schema was not resolvable)
311
+ * @returns the patched model instance
312
+ */
313
+ async modelPatch(input) {
314
+ const context = useContext();
315
+ const { model, pkFields } = context.getExtension("operationContext");
316
+ if (typeof input !== "object" || input === null) {
317
+ input = await context.getInput();
318
+ }
319
+ input = sanitizeModelInput(model, input);
320
+ // Build the PK from the model's real primary-key fields (same logic as modelUpdate).
321
+ const params = context.getParameters() ?? {};
322
+ const fields = pkFields?.length ? pkFields : ["uuid"];
323
+ const pk = fields.length === 1
324
+ ? (input?.[fields[0]] ?? params[fields[0]])
325
+ : fields.reduce((acc, f) => {
326
+ acc[f] = input?.[f] ?? params[f];
327
+ return acc;
328
+ }, {});
329
+ const object = await this.loadModel(model, pk);
330
+ await object.patch(input);
331
+ return object;
332
+ }
333
+ /**
334
+ * Action on a model
335
+ * @param args - arguments forwarded to the action method
336
+ * @returns the action result
337
+ */
338
+ async modelAction(...args) {
339
+ const context = useContext();
340
+ const { model, action } = context.getExtension("operationContext");
341
+ // The action can be exposed under another name than its method
342
+ const handler = action.handler || action.name;
343
+ if (!action.global) {
344
+ // First arg is uuid when the action is instance-level
345
+ const uuid = args[0];
346
+ const object = await model.ref(uuid).get();
347
+ if (!object || object.isDeleted()) {
348
+ throw new WebdaError.NotFound("Object not found");
349
+ }
350
+ //await object.checkAct(context, action.name as ActionsEnum<Model>);
351
+ return object[handler](context);
352
+ }
353
+ else {
354
+ return model[handler](context);
355
+ }
356
+ }
357
+ /**
358
+ * Whether a model may be exposed: models of {@link INTERNAL_MODELS} and their subclasses need an explicit listing
359
+ * in the `models` parameter
360
+ * @param model - model class
361
+ * @param identifier - model identifier
362
+ * @returns true when the model may be exposed
363
+ */
364
+ isExposable(model, identifier) {
365
+ return !isInternalModel(model) || this.parameters.isExplicitlyIncluded(identifier);
366
+ }
367
+ /**
368
+ * Add operations for all exposed models
369
+ * @returns the result
370
+ */
371
+ initOperations() {
372
+ super.initOperations();
373
+ if (!this.parameters.operations) {
374
+ return;
375
+ }
376
+ const app = (this.app = useApplication());
377
+ // Add default schemas - used for operation parameters validation
378
+ const appSchemas = app.getSchemas();
379
+ for (const i in DomainService.schemas) {
380
+ if (hasSchema(i)) {
381
+ continue;
382
+ }
383
+ registerSchema(i, DomainService.schemas[i]);
384
+ }
385
+ // Register schemas in application schema registry so that
386
+ // resolveArguments can find them for typed parameter extraction.
387
+ for (const name of Object.keys(DomainService.schemas)) {
388
+ appSchemas[name] ??= DomainService.schemas[name];
389
+ }
390
+ const models = app.getModels();
391
+ for (const modelKey in models) {
392
+ const model = models[modelKey];
393
+ if (!model) {
394
+ continue;
395
+ }
396
+ const Metadata = useModelMetadata(model);
397
+ if (!Metadata) {
398
+ continue;
399
+ }
400
+ // Skip if not exposed or not included
401
+ if (!this.parameters.isIncluded(Metadata.Identifier)) {
402
+ continue;
403
+ }
404
+ // Overlap object are hidden by design
405
+ if (!this.app.isFinalModel(Metadata.Identifier)) {
406
+ continue;
407
+ }
408
+ // Authentication state models (and subclasses) are internal unless explicitly listed
409
+ if (!this.isExposable(model, Metadata.Identifier)) {
410
+ continue;
411
+ }
412
+ const shortId = Metadata.Identifier.split("/").pop();
413
+ const plural = Metadata.Plural;
414
+ const modelSchema = modelKey;
415
+ const actionsName = Object.keys(Metadata.Actions);
416
+ // Build primary key schema for this model
417
+ const pkSchemaName = `${modelKey}.primaryKey`;
418
+ const pkFields = Metadata.PrimaryKey || ["uuid"];
419
+ const pkSchema = { type: "object", properties: {}, required: pkFields };
420
+ for (const field of pkFields) {
421
+ pkSchema.properties[field] = { type: "string" };
422
+ }
423
+ if (!hasSchema(pkSchemaName)) {
424
+ registerSchema(pkSchemaName, pkSchema);
425
+ }
426
+ // Always register in the app schema map (the global registry is process-wide) so getSchema() finds it
427
+ appSchemas[pkSchemaName] ??= pkSchema;
428
+ // Build query result schema for this model
429
+ const queryResultSchemaName = `${modelKey}.queryResult`;
430
+ const queryResultSchema = {
431
+ type: "object",
432
+ properties: {
433
+ continuationToken: { type: "string" },
434
+ results: { type: "array", items: { $ref: `#/definitions/${modelKey}` } }
435
+ }
436
+ };
437
+ if (!hasSchema(queryResultSchemaName)) {
438
+ registerSchema(queryResultSchemaName, queryResultSchema);
439
+ }
440
+ appSchemas[queryResultSchemaName] ??= queryResultSchema;
441
+ // URL path segments for the model's primary key (e.g. "{slug}" or
442
+ // "{follower}/{following}"). Named after the real PK fields so the router
443
+ // exposes them in context.getParameters() under matching names, which is
444
+ // what the pkSchema validation and modelGet/Update/Delete expect.
445
+ const pkPath = pkFields.map(f => `{${String(f)}}`).join("/");
446
+ // CRUD operations
447
+ ["create", "update"]
448
+ .filter(k => !actionsName.includes(k))
449
+ .forEach(k => {
450
+ k = k.substring(0, 1).toUpperCase() + k.substring(1);
451
+ const id = `${shortId}.${k}`;
452
+ registerOperation(id, {
453
+ service: this.getName(),
454
+ method: k === "Create" ? "modelCreate" : "modelUpdate",
455
+ input: modelSchema + "?",
456
+ output: modelSchema,
457
+ summary: k === "Create" ? `Create a new ${shortId}` : `Update a ${shortId}`,
458
+ tags: [shortId],
459
+ rest: { method: k === "Create" ? "post" : "put", path: k === "Create" ? "" : pkPath },
460
+ context: {
461
+ model,
462
+ pkFields
463
+ }
464
+ });
465
+ });
466
+ ["delete", "get"]
467
+ .filter(k => !actionsName.includes(k))
468
+ .forEach(k => {
469
+ k = k.substring(0, 1).toUpperCase() + k.substring(1);
470
+ const id = `${shortId}.${k}`;
471
+ registerOperation(id, {
472
+ service: this.getName(),
473
+ method: `model${k}`,
474
+ input: pkSchemaName,
475
+ output: k === "Get" ? modelSchema : "void",
476
+ summary: `${k === "Delete" ? "Delete" : "Retrieve"} a ${shortId}`,
477
+ tags: [shortId],
478
+ rest: { method: k === "Delete" ? "delete" : "get", path: pkPath },
479
+ context: {
480
+ model,
481
+ pkFields
482
+ }
483
+ });
484
+ });
485
+ if (!actionsName.includes("query")) {
486
+ const id = `${plural}.Query`;
487
+ registerOperation(id, {
488
+ service: this.getName(),
489
+ method: "modelQuery",
490
+ input: "searchRequest",
491
+ output: queryResultSchemaName,
492
+ summary: `Query ${plural}`,
493
+ tags: [shortId],
494
+ rest: { method: this.parameters.queryMethod.toLowerCase(), path: "" },
495
+ context: {
496
+ model
497
+ }
498
+ });
499
+ }
500
+ // Add patch
501
+ if (!actionsName.includes("update")) {
502
+ const id = `${shortId}.Patch`;
503
+ registerOperation(id, {
504
+ service: this.getName(),
505
+ method: "modelPatch",
506
+ input: modelSchema + "?",
507
+ output: modelSchema,
508
+ summary: `Patch a ${shortId}`,
509
+ tags: [shortId],
510
+ rest: { method: "patch", path: pkPath },
511
+ context: {
512
+ model,
513
+ pkFields
514
+ }
515
+ });
516
+ }
517
+ // Add all operations for Actions
518
+ const actions = Metadata.Actions;
519
+ Object.keys(actions)
520
+ .filter(k => !["create", "update", "delete", "get", "query"].includes(k))
521
+ .forEach(name => {
522
+ const id = `${shortId}.${name.substring(0, 1).toUpperCase() + name.substring(1)}`;
523
+ const info = {
524
+ service: this.getName(),
525
+ method: `modelAction`,
526
+ id
527
+ };
528
+ info.input = actions[name].global ? `${modelKey}.${name}.input` : "uuidRequest";
529
+ info.output = `${modelKey}.${name}.output`;
530
+ info.context = {
531
+ model,
532
+ action: { ...actions[name], name }
533
+ };
534
+ info.summary = `${name.substring(0, 1).toUpperCase() + name.substring(1)} on ${shortId}`;
535
+ info.tags = [shortId];
536
+ info.rest = {
537
+ method: (actions[name].method || "PUT").toLowerCase(),
538
+ path: actions[name].global ? name : `{uuid}/${name}`
539
+ };
540
+ registerOperation(id, info);
541
+ });
542
+ this.addBehaviorOperations(model, Metadata, shortId);
543
+ }
544
+ }
545
+ /**
546
+ * Register one operation per declared action on every Behavior attribute of
547
+ * the model. Operation ids follow the `<Model>.<Attribute>.<Action>` shape
548
+ * so transports can discover them with the same lookup logic used for
549
+ * model-level operations.
550
+ *
551
+ * The actual dispatch is deferred to `modelBehaviorAction`. This method
552
+ * only wires the registry entries — it does not invoke behaviors.
553
+ *
554
+ * @param model - the model class owning the behavior attribute
555
+ * @param Metadata - the model metadata blob (with Relations.behaviors)
556
+ * @param name - the model's short identifier (e.g. "User")
557
+ */
558
+ addBehaviorOperations(model, Metadata, name) {
559
+ const app = useApplication();
560
+ (Metadata.Relations?.behaviors || []).forEach((behaviorRel) => {
561
+ const behaviorMeta = app.getBehaviorMetadata(behaviorRel.behavior);
562
+ if (!behaviorMeta) {
563
+ return;
564
+ }
565
+ const attributeCap = behaviorRel.attribute.substring(0, 1).toUpperCase() + behaviorRel.attribute.substring(1);
566
+ Object.keys(behaviorMeta.Actions || {}).forEach(actionName => {
567
+ const actionCap = actionName.substring(0, 1).toUpperCase() + actionName.substring(1);
568
+ const id = `${name}.${attributeCap}.${actionCap}`;
569
+ const inputSchema = `${behaviorRel.behavior}.${actionName}.input`;
570
+ const outputSchema = `${behaviorRel.behavior}.${actionName}.output`;
571
+ const actionMeta = (behaviorMeta.Actions || {})[actionName] || {};
572
+ const restHint = actionMeta.rest ?? {};
573
+ const route = restHint.route;
574
+ const method = (restHint.method ?? "PUT").toLowerCase();
575
+ let path;
576
+ if (route === ".") {
577
+ path = `{uuid}/${behaviorRel.attribute}`;
578
+ }
579
+ else if (route !== undefined && route !== "") {
580
+ path = `{uuid}/${behaviorRel.attribute}/${route}`;
581
+ }
582
+ else {
583
+ path = `{uuid}/${behaviorRel.attribute}.${actionName}`;
584
+ }
585
+ registerOperation(id, {
586
+ service: this.getName(),
587
+ method: "modelBehaviorAction",
588
+ input: hasSchema(inputSchema) ? inputSchema : "uuidRequest",
589
+ output: hasSchema(outputSchema) ? outputSchema : "void",
590
+ summary: `${actionCap} on ${name}.${behaviorRel.attribute}`,
591
+ tags: [name],
592
+ rest: {
593
+ method,
594
+ path
595
+ },
596
+ context: {
597
+ model,
598
+ attribute: behaviorRel.attribute,
599
+ behavior: behaviorRel.behavior,
600
+ action: actionName
601
+ }
602
+ });
603
+ });
604
+ });
605
+ }
606
+ /**
607
+ * Dispatcher for a behavior-attribute action registered by
608
+ * `addBehaviorOperations`. Mirrors the shape of `modelAction`:
609
+ *
610
+ * 1. read the parent model class + attribute/action names off
611
+ * `operationContext` (set up by `callOperation`),
612
+ * 2. take `args[0]` as the parent UUID (Behavior actions are always
613
+ * instance-scoped per the spec),
614
+ * 3. load the parent via `model.ref(uuid).get()` — `NotFound` if missing
615
+ * or soft-deleted,
616
+ * 4. ask the model whether the action is allowed via
617
+ * `canAct(ctx, "<attribute>.<action>")` — anything but `true` (or the
618
+ * instance itself, the convention some models use to say "yes, on this
619
+ * object") is treated as a denial,
620
+ * 5. read `instance[attribute]` — already a hydrated Behavior instance
621
+ * thanks to `CoreModel.deserialize` (Task 7),
622
+ * 6. call `behaviorInstance[action](...args.slice(1))` and let
623
+ * `callOperation` write the result onto the context.
624
+ *
625
+ * @param args - resolved arguments from `resolveArguments`; the first is
626
+ * always the parent UUID, the rest come from the request body / query
627
+ * params depending on the registered input schema.
628
+ * @returns the Behavior method's return value (callOperation writes it to
629
+ * the context output if non-undefined).
630
+ */
631
+ async modelBehaviorAction(...args) {
632
+ const context = useContext();
633
+ const { model, attribute, action, behavior } = context.getExtension("operationContext");
634
+ // Parent uuid comes from the URL (`/posts/{uuid}/mainImage/...`); read it
635
+ // straight off the context so we don't depend on its position in `args`.
636
+ const uuid = (context.getParameters() || {}).uuid;
637
+ let instance;
638
+ try {
639
+ instance = await model.ref(uuid).get();
640
+ }
641
+ catch {
642
+ // Repositories (e.g. MemoryRepository) throw a plain Error when the
643
+ // primary key isn't in storage. Treat that the same as a "soft" miss.
644
+ }
645
+ if (!instance || instance.isDeleted?.()) {
646
+ throw new WebdaError.NotFound("Object not found");
647
+ }
648
+ const allowed = await instance.canAct(context, `${attribute}.${action}`);
649
+ if (allowed !== true && allowed !== instance) {
650
+ throw new WebdaError.Forbidden(`Action ${attribute}.${action} not allowed`);
651
+ }
652
+ const behaviorInstance = instance[attribute];
653
+ if (!behaviorInstance || typeof behaviorInstance[action] !== "function") {
654
+ throw new WebdaError.NotFound(`Behavior method ${attribute}.${action} not found`);
655
+ }
656
+ // `args` was built by `resolveArguments` from the operation's input
657
+ // schema. Two schema shapes coexist:
658
+ // 1. Auto-generated from the method signature (`exploreBehaviorsAction`
659
+ // in the compiler) — e.g. `setMetadata(hash, metadata)` produces
660
+ // `{ hash, metadata }`. No `uuid` property.
661
+ // 2. Legacy `uuidRequest` fallback (and hand-crafted test schemas) —
662
+ // starts with `{ uuid, ... }`. The `uuid` slot exists only so the
663
+ // validator accepts the URL param.
664
+ // When the schema starts with `uuid`, drop it before forwarding to the
665
+ // behavior method (whose signature never includes uuid). When it
666
+ // doesn't, forward as-is.
667
+ const operationId = context.getExtension("operation");
668
+ const opInput = operationId ? useInstanceStorage().operations?.[operationId]?.input : undefined;
669
+ const inputSchema = typeof opInput === "string" ? useApplication().getSchema(opInput) : undefined;
670
+ const propNames = inputSchema?.properties ? Object.keys(inputSchema.properties) : [];
671
+ const passArgs = propNames[0] === "uuid" ? args.slice(1) : args;
672
+ void behavior; // tagged in operationContext for future use
673
+ return behaviorInstance[action](...passArgs);
674
+ }
675
+ }
676
+ //# sourceMappingURL=domainservice.service.js.map