@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,843 @@
1
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
2
+ var useValue = arguments.length > 2;
3
+ for (var i = 0; i < initializers.length; i++) {
4
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
5
+ }
6
+ return useValue ? value : void 0;
7
+ };
8
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
9
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
10
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
11
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
12
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
13
+ var _, done = false;
14
+ for (var i = decorators.length - 1; i >= 0; i--) {
15
+ var context = {};
16
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
17
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
18
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
19
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
20
+ if (kind === "accessor") {
21
+ if (result === void 0) continue;
22
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
23
+ if (_ = accept(result.get)) descriptor.get = _;
24
+ if (_ = accept(result.set)) descriptor.set = _;
25
+ if (_ = accept(result.init)) initializers.unshift(_);
26
+ }
27
+ else if (_ = accept(result)) {
28
+ if (kind === "field") initializers.unshift(_);
29
+ else descriptor[key] = _;
30
+ }
31
+ }
32
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
+ done = true;
34
+ };
35
+ import uriTemplates from "uri-templates";
36
+ import { useApplication, useModelId } from "../application/hooks.js";
37
+ import { Command } from "../services/command.js";
38
+ import { useLog, useOutput } from "../loggers/hooks.js";
39
+ import { useParameters } from "../application/hooks.js";
40
+ import { useDynamicService } from "../core/hooks.js";
41
+ import { deepmerge } from "deepmerge-ts";
42
+ import { Service } from "../services/service.js";
43
+ import { ServiceParameters } from "../services/serviceparameters.js";
44
+ import { getMetadata } from "@webda/decorators";
45
+ import { templateVariables } from "../templates/templates.js";
46
+ import { emitCoreEvent, useCoreEvents } from "../events/events.js";
47
+ import { useInstanceStorage } from "../core/instancestorage.js";
48
+ import { FileUtils } from "@webda/utils";
49
+ /** Parameters for the Router service */
50
+ export class RouterParameters extends ServiceParameters {
51
+ /**
52
+ * Display a WARNING if a route is overriden
53
+ */
54
+ overrideWarning;
55
+ }
56
+ /**
57
+ * Manage Route resolution
58
+ * @category CoreFeatures
59
+ *
60
+ * @WebdaModda
61
+ */
62
+ let Router = (() => {
63
+ let _classSuper = Service;
64
+ let _instanceExtraInitializers = [];
65
+ let _openapi_decorators;
66
+ return class Router extends _classSuper {
67
+ static {
68
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
69
+ _openapi_decorators = [Command("openapi", { description: "Export the OpenAPI definition", requires: ["router", "rest-domain"] })];
70
+ __esDecorate(this, null, _openapi_decorators, { kind: "method", name: "openapi", static: false, private: false, access: { has: obj => "openapi" in obj, get: obj => obj.openapi }, metadata: _metadata }, null, _instanceExtraInitializers);
71
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
72
+ }
73
+ /**
74
+ * Routes
75
+ */
76
+ routes = (__runInitializers(this, _instanceExtraInitializers), new Map());
77
+ /**
78
+ *
79
+ */
80
+ pathMap;
81
+ models = new Map();
82
+ /**
83
+ * Request filters to apply
84
+ */
85
+ _requestFilters = [];
86
+ /**
87
+ * Request filters to apply for CORS
88
+ */
89
+ _requestCORSFilters = [];
90
+ /**
91
+ * Registration of a model
92
+ * @param model - the model to use
93
+ * @param url - the URL
94
+ */
95
+ registerModelUrl(model, url) {
96
+ this.models.set(model, url);
97
+ }
98
+ /**
99
+ * Resolve dependencies and wire up core lifecycle listeners.
100
+ *
101
+ * The Router pulls its inputs from events rather than being driven by
102
+ * `Core.init()` directly:
103
+ * - `Webda.Init.Services` — scan every resolved service for
104
+ * `@Route` metadata and filter capabilities.
105
+ * - `Webda.Init` — finalize the URI template index after all routes
106
+ * (dynamic or decorator-based) have been registered.
107
+ *
108
+ * @returns the result
109
+ */
110
+ resolve() {
111
+ // Register as the instance router
112
+ useInstanceStorage().router = this;
113
+ // Discover routes + filters once every service is resolved and initialized
114
+ useCoreEvents("Webda.Init.Services", services => {
115
+ const list = Object.values(services);
116
+ this.discoverFilters(list);
117
+ this.discoverRoutes(list);
118
+ });
119
+ // Remap route
120
+ useCoreEvents("Webda.Init", () => {
121
+ this.remapRoutes();
122
+ });
123
+ return super.resolve();
124
+ }
125
+ /**
126
+ * Return the route for model
127
+ * @param model - the model to use
128
+ * @returns the result
129
+ */
130
+ getModelUrl(model) {
131
+ if (typeof model !== "string") {
132
+ model = useModelId(model);
133
+ }
134
+ return this.models.get(model);
135
+ }
136
+ /**
137
+ * Include prefix to the url if not present
138
+ * @param url - the URL
139
+ * @returns the result string
140
+ */
141
+ getFinalUrl(url) {
142
+ // We have to replace all @ by %40 as it is allowed in url rfc (https://www.rfc-editor.org/rfc/rfc3986#page-22)
143
+ // But disallowed in https://www.rfc-editor.org/rfc/rfc6570#section-3.2.1
144
+ // Similar for / in query string
145
+ url = url.replace(/@/g, "%40");
146
+ if (url.includes("?")) {
147
+ url = url.substring(0, url.indexOf("?")) + "?" + url.substring(url.indexOf("?") + 1).replace(/\//g, "%2F");
148
+ }
149
+ const prefix = useParameters().routePrefix || "";
150
+ if (prefix && url.startsWith(prefix)) {
151
+ return url;
152
+ }
153
+ // Absolute url
154
+ if (url.startsWith("//")) {
155
+ return url.substring(1);
156
+ }
157
+ return `${prefix}${url}`;
158
+ }
159
+ /**
160
+ * Return routes
161
+ * @returns the result
162
+ */
163
+ getRoutes() {
164
+ return this.routes;
165
+ }
166
+ /**
167
+ * Add a route dynamicaly
168
+ *
169
+ * @param {String} url of the route can contains dynamic part like {uuid}
170
+ * @param {Object} info the type of executor
171
+ */
172
+ addRouteToRouter(url, info) {
173
+ const finalUrl = this.getFinalUrl(url);
174
+ useLog("TRACE", `Add route ${info.methods.join(",")} ${finalUrl}`);
175
+ info.openapi ??= {};
176
+ if (this.routes[finalUrl]) {
177
+ // If route is already added do not do anything
178
+ if (this.routes[finalUrl].includes(info)) {
179
+ return;
180
+ }
181
+ // Check and add warning if same method is used
182
+ if (this.parameters.overrideWarning) {
183
+ const methods = this.routes[finalUrl].map((r) => r.methods).flat();
184
+ info.methods.forEach(m => {
185
+ if (methods.indexOf(m) >= 0) {
186
+ if (!info.override) {
187
+ useLog("WARN", `${m} ${finalUrl} overlap with another defined route`);
188
+ }
189
+ }
190
+ });
191
+ }
192
+ // Last added need to be overriding
193
+ this.routes[finalUrl].unshift(info);
194
+ }
195
+ else {
196
+ this.routes[finalUrl] = [info];
197
+ }
198
+ if (this.getState() === "running") {
199
+ this.remapRoutes();
200
+ }
201
+ }
202
+ /**
203
+ * Remove a route dynamicly
204
+ *
205
+ * @param {String} url to remove
206
+ * @param info - the information object
207
+ */
208
+ removeRoute(url, info = undefined) {
209
+ const finalUrl = this.getFinalUrl(url);
210
+ if (!info) {
211
+ delete this.routes[finalUrl];
212
+ }
213
+ else if (this.routes[finalUrl] && this.routes[finalUrl].includes(info)) {
214
+ this.routes[finalUrl].splice(this.routes[finalUrl].indexOf(info), 1);
215
+ }
216
+ this.remapRoutes();
217
+ }
218
+ /**
219
+ * Reinit all routes
220
+ *
221
+ * It will readd the URITemplates if needed
222
+ * Sort all routes again
223
+ */
224
+ remapRoutes() {
225
+ // Might need to ensure each routes is prefixed
226
+ const prefix = useParameters().routePrefix || "";
227
+ if (prefix) {
228
+ Object.keys(this.routes)
229
+ .filter(k => !k.startsWith(prefix))
230
+ .forEach(k => {
231
+ this.routes[this.getFinalUrl(k)] = this.routes[k];
232
+ delete this.routes[k];
233
+ });
234
+ }
235
+ this.initURITemplates(this.routes);
236
+ // Order path desc
237
+ this.pathMap = [];
238
+ for (const i in this.routes) {
239
+ // Might need to trail the query string
240
+ this.routes[i].forEach((config) => {
241
+ this.pathMap.push({
242
+ url: i,
243
+ config
244
+ });
245
+ });
246
+ }
247
+ this.pathMap.sort(this.comparePath);
248
+ }
249
+ /**
250
+ * Compare two route paths for sorting, prioritizing literal segments over parameters
251
+ * @param a - the first route
252
+ * @param b - the second route
253
+ * @returns the result number
254
+ */
255
+ comparePath(a, b) {
256
+ // Normal node works with localeCompare but not Lambda...
257
+ // Local compare { to a return: 26 on Lambda
258
+ const bs = b.url.replace(/\{[^{}]+}/, "{}").split("/");
259
+ const as = a.url.replace(/\{[^{}]+}/, "{}").split("/");
260
+ for (const i in as) {
261
+ if (bs[i] === undefined)
262
+ return -1;
263
+ if (as[i] === bs[i])
264
+ continue;
265
+ if (as[i][0] === "{" && bs[i][0] !== "{")
266
+ return 1;
267
+ if (as[i][0] !== "{" && bs[i][0] === "{")
268
+ return -1;
269
+ return bs[i] < as[i] ? -1 : 1;
270
+ }
271
+ return 1;
272
+ }
273
+ /**
274
+ * @hidden
275
+ * @param config - the configuration
276
+ */
277
+ initURITemplates(config) {
278
+ // Prepare tbe URI parser
279
+ for (const map in config) {
280
+ if (map.indexOf("{") !== -1) {
281
+ config[map].forEach((e) => {
282
+ const idx = map.indexOf("{?");
283
+ let queryOptional = true;
284
+ if (idx >= 0) {
285
+ const query = map.substring(idx + 2, map.length - 1);
286
+ e._queryParams = [];
287
+ query.split(",").forEach(q => {
288
+ if (q.endsWith("*")) {
289
+ e._queryCatchAll = q.substring(0, q.length - 1);
290
+ return;
291
+ }
292
+ else if (q.endsWith("+")) {
293
+ e._queryCatchAll = q.substring(0, q.length - 1);
294
+ queryOptional = false;
295
+ return;
296
+ }
297
+ else if (q.endsWith("?")) {
298
+ e._queryParams.push({ name: q.substring(0, q.length - 1), required: false });
299
+ }
300
+ else {
301
+ queryOptional = false;
302
+ e._queryParams.push({ name: q, required: true });
303
+ }
304
+ });
305
+ // We do not use uri-templates for query parsing
306
+ //map = map.substring(0, idx) + "?{+URITemplateQuery}";
307
+ const templates = [uriTemplates(map.substring(0, idx) + "?{+URITemplateQuery}")];
308
+ const pathTemplate = uriTemplates(map.substring(0, idx));
309
+ if (queryOptional) {
310
+ templates.push(pathTemplate);
311
+ }
312
+ e._uriTemplateParse = {
313
+ fromUri: (url) => {
314
+ return templates.reduce((v, t) => (v ? v : t.fromUri(url)), undefined);
315
+ },
316
+ varNames: [...pathTemplate.varNames, ...e._queryParams.map(q => q.name)]
317
+ };
318
+ }
319
+ else {
320
+ e._uriTemplateParse = uriTemplates(map);
321
+ }
322
+ });
323
+ }
324
+ }
325
+ }
326
+ /**
327
+ * What a request URL is matched against for a route: a route declaring a
328
+ * query template (`{?q,page?}`, `{?rest*}`) matches the whole URL, any other
329
+ * route matches the path alone, so an extra query string (`?v=123`) neither
330
+ * prevents the match nor ends up in a path variable
331
+ * @param routeUrl - the route URL
332
+ * @param finalUrl - the request URL, from `getFinalUrl`
333
+ * @returns the URL to match
334
+ */
335
+ getMatchTarget(routeUrl, finalUrl) {
336
+ return routeUrl.includes("{?") ? finalUrl : finalUrl.split("?")[0];
337
+ }
338
+ /**
339
+ * Get all method for a specific url
340
+ * @param config - the configuration
341
+ * @param method - the HTTP method
342
+ * @param url - the URL
343
+ * @returns the list of results
344
+ */
345
+ getRouteMethodsFromUrl(url) {
346
+ const finalUrl = this.getFinalUrl(url);
347
+ const methods = new Set();
348
+ for (const i in this.pathMap) {
349
+ const routeUrl = this.pathMap[i].url;
350
+ const map = this.pathMap[i].config;
351
+ const target = this.getMatchTarget(routeUrl, finalUrl);
352
+ if (routeUrl !== target &&
353
+ (map._uriTemplateParse === undefined || map._uriTemplateParse.fromUri(target, { strict: true }) === undefined)) {
354
+ continue;
355
+ }
356
+ map.methods.forEach(m => methods.add(m));
357
+ }
358
+ return Array.from(methods);
359
+ }
360
+ /**
361
+ * Get the route from a method / url
362
+ * @param ctx - the operation context
363
+ * @param method - the HTTP method
364
+ * @param url - the URL
365
+ * @returns the result
366
+ */
367
+ getRouteFromUrl(ctx, method, url) {
368
+ const finalUrl = this.getFinalUrl(url);
369
+ // Search for the route
370
+ for (const i in this.pathMap) {
371
+ const routeUrl = this.pathMap[i].url;
372
+ const map = this.pathMap[i].config;
373
+ // Check method
374
+ if (map.methods.indexOf(method) === -1) {
375
+ continue;
376
+ }
377
+ const target = this.getMatchTarget(routeUrl, finalUrl);
378
+ // If url is strictly equal
379
+ if (routeUrl === target) {
380
+ return map;
381
+ }
382
+ // If the url
383
+ if (map._uriTemplateParse === undefined) {
384
+ continue;
385
+ }
386
+ const parse_result = map._uriTemplateParse.fromUri(target, { strict: true });
387
+ if (parse_result !== undefined) {
388
+ const parseUrl = new URL(`http://localhost${finalUrl}`);
389
+ if (map._queryCatchAll) {
390
+ parse_result[map._queryCatchAll] = {};
391
+ parseUrl.searchParams.forEach((v, k) => {
392
+ if (!map._queryParams?.find(q => q.name === k)) {
393
+ parse_result[map._queryCatchAll][k] = v;
394
+ }
395
+ });
396
+ }
397
+ // Check for each params
398
+ let mandatoryParams = true;
399
+ map._queryParams?.forEach(q => {
400
+ if (!parseUrl.searchParams.has(q.name)) {
401
+ mandatoryParams &&= !q.required;
402
+ return;
403
+ }
404
+ parse_result[q.name] = parseUrl.searchParams.get(q.name);
405
+ });
406
+ // Skip if we miss mandatory params
407
+ if (!mandatoryParams) {
408
+ continue;
409
+ }
410
+ if (parse_result.URITemplateQuery) {
411
+ delete parse_result.URITemplateQuery;
412
+ }
413
+ ctx.setParameters(parse_result);
414
+ return map;
415
+ }
416
+ }
417
+ }
418
+ /**
419
+ * Convert a schema name or object to an OpenAPI $ref or inline schema
420
+ * @param schema - the schema object
421
+ * @returns the result
422
+ */
423
+ getOpenAPISchema(schema) {
424
+ if (!schema) {
425
+ return {
426
+ $ref: "#/components/schemas/Object"
427
+ };
428
+ }
429
+ else if (typeof schema === "string") {
430
+ return {
431
+ $ref: "#/components/schemas/" + schema
432
+ };
433
+ }
434
+ return schema;
435
+ }
436
+ /**
437
+ * Add all known routes to paths
438
+ *
439
+ * @param openapi to complete
440
+ * @param skipHidden add hidden routes or not
441
+ */
442
+ completeOpenAPI(openapi, skipHidden = true) {
443
+ const hasTag = tag => openapi.tags.find(t => t.name === tag) !== undefined;
444
+ for (const i in this.routes) {
445
+ this.routes[i].forEach((route) => {
446
+ route.openapi = templateVariables(route.openapi || {}, useDynamicService(route.executor).getOpenApiReplacements());
447
+ if (route.openapi.hidden && skipHidden) {
448
+ return;
449
+ }
450
+ route.openapi.hidden = false;
451
+ let path = i;
452
+ if (i.indexOf("{?") >= 0) {
453
+ path = i.substring(0, i.indexOf("{?"));
454
+ }
455
+ openapi.paths[path] = openapi.paths[path] || {};
456
+ if (route._uriTemplateParse) {
457
+ openapi.paths[path].parameters = [];
458
+ route._uriTemplateParse.varNames.forEach(varName => {
459
+ const queryParam = route._queryParams?.find(i => i.name === varName);
460
+ if (queryParam) {
461
+ let name = varName;
462
+ if (name.startsWith("*")) {
463
+ name = name.substr(1);
464
+ }
465
+ openapi.paths[path].parameters.push({
466
+ name,
467
+ in: "query",
468
+ required: queryParam.required,
469
+ schema: {
470
+ type: "string"
471
+ }
472
+ });
473
+ return;
474
+ }
475
+ openapi.paths[path].parameters.push({
476
+ // ^[a-zA-Z0-9._$-]+$] is the official regex of AWS
477
+ name: varName.replace(/[^a-zA-Z0-9._$-]/g, ""),
478
+ in: "path",
479
+ required: true,
480
+ schema: {
481
+ type: "string"
482
+ }
483
+ });
484
+ });
485
+ }
486
+ route.methods.forEach(method => {
487
+ let responses;
488
+ let schema;
489
+ let description;
490
+ let summary;
491
+ let operationId;
492
+ let requestBody;
493
+ const tags = route.openapi.tags ?? [];
494
+ // Refactor here
495
+ if (route.openapi[method.toLowerCase()]) {
496
+ responses = route.openapi[method.toLowerCase()].responses;
497
+ schema = this.getOpenAPISchema(route.openapi[method.toLowerCase()].schemas?.output);
498
+ description = route.openapi[method.toLowerCase()].description;
499
+ summary = route.openapi[method.toLowerCase()].summary;
500
+ operationId = route.openapi[method.toLowerCase()].operationId;
501
+ tags.push(...(route.openapi[method.toLowerCase()].tags || []));
502
+ requestBody = route.openapi[method.toLowerCase()].requestBody;
503
+ }
504
+ responses = responses || {
505
+ 200: {
506
+ description: "Operation success"
507
+ }
508
+ };
509
+ for (const j in responses) {
510
+ // Add default answer
511
+ const code = parseInt(j);
512
+ if (code < 300 && code >= 200 && !responses[j].description) {
513
+ responses[j].description = "Operation success";
514
+ responses[j].content ??= {};
515
+ responses[j].content["application/json"] = {
516
+ schema
517
+ };
518
+ }
519
+ }
520
+ // Add the service name if no tags are defined
521
+ if (tags.length === 0) {
522
+ tags.push(route.executor);
523
+ }
524
+ const desc = {
525
+ tags,
526
+ responses: responses,
527
+ description,
528
+ summary,
529
+ operationId,
530
+ requestBody
531
+ };
532
+ if (method.toLowerCase().startsWith("p") && route.openapi[method.toLowerCase()]?.schemas?.input) {
533
+ // Add request schema if exist
534
+ desc.requestBody ??= {
535
+ content: {
536
+ "application/json": {
537
+ schema: this.getOpenAPISchema(route.openapi[method.toLowerCase()]?.schemas?.input)
538
+ }
539
+ }
540
+ };
541
+ }
542
+ openapi.paths[path][method.toLowerCase()] = desc;
543
+ tags
544
+ .filter(tag => !hasTag(tag))
545
+ .forEach(tag => openapi.tags.push({
546
+ name: tag
547
+ }));
548
+ });
549
+ });
550
+ }
551
+ }
552
+ /**
553
+ * Execute the matched route handler for a web context
554
+ * @param ctx - the operation context
555
+ */
556
+ async execute(ctx) {
557
+ const httpContext = ctx.getHttpContext();
558
+ const method = httpContext.getMethod();
559
+ // Routes are relative to the prefix (API Gateway stage, custom domain base path…)
560
+ const url = httpContext.getRelativeUri();
561
+ // Handle CORS preflight
562
+ if (method === "OPTIONS") {
563
+ const methods = this.getRouteMethodsFromUrl(url);
564
+ if (methods.length > 0 && (await this.checkCORSRequest(ctx))) {
565
+ ctx.setHeader("Access-Control-Allow-Methods", methods.join(","));
566
+ ctx.writeHead(204);
567
+ return;
568
+ }
569
+ this.writeNotFound(ctx, method, url);
570
+ return;
571
+ }
572
+ const info = this.getRouteFromUrl(ctx, method, url);
573
+ if (!info) {
574
+ this.writeNotFound(ctx, method, url);
575
+ return;
576
+ }
577
+ // Check request filters (authentication, etc.)
578
+ if (!(await this.checkRequest(ctx))) {
579
+ ctx.writeHead(403);
580
+ return;
581
+ }
582
+ // Execute the route handler
583
+ if (typeof info._method === "function") {
584
+ await info._method(ctx);
585
+ }
586
+ else if (info._method && info.executor) {
587
+ const service = useDynamicService(info.executor);
588
+ if (service && typeof service[info._method] === "function") {
589
+ await service[info._method](ctx);
590
+ }
591
+ }
592
+ }
593
+ /**
594
+ * Answer a request no route matches: 404 with the same error body a thrown
595
+ * `NotFound` gets, so clients don't receive an empty response
596
+ * @param ctx - the web context
597
+ * @param method - the HTTP method
598
+ * @param url - the requested URL
599
+ */
600
+ writeNotFound(ctx, method, url) {
601
+ emitCoreEvent("Webda.404", { context: ctx });
602
+ ctx.writeHead(404);
603
+ ctx.write({ error: { code: "NOT_FOUND", message: `No route for ${method} ${url}` } });
604
+ }
605
+ /**
606
+ * Verify if a request can be done
607
+ *
608
+ * @param context Context of the request
609
+ * @param ctx - the operation context
610
+ * @returns true if the condition is met
611
+ */
612
+ async checkRequest(ctx) {
613
+ // Do not need to filter on OPTIONS as CORS is for that
614
+ if (ctx.getHttpContext().getMethod() === "OPTIONS" || this._requestFilters.length === 0) {
615
+ return true;
616
+ }
617
+ return (await Promise.all(this._requestFilters.map(filter => filter.checkRequest(ctx, "AUTH")))).some(v => v);
618
+ }
619
+ /**
620
+ * Verify if an origin is allowed to do request on the API
621
+ *
622
+ * @param context Context of the request
623
+ * @param ctx - the operation context
624
+ * @returns true if the condition is met
625
+ */
626
+ async checkCORSRequest(ctx) {
627
+ return (await Promise.all(this._requestCORSFilters.map(filter => filter.checkRequest(ctx, "CORS")))).some(v => v);
628
+ }
629
+ /**
630
+ * Export the OpenAPI definition as JSON to stdout
631
+ * @param output - file path to write to (prints to stdout if omitted)
632
+ * @param includeHidden - include hidden routes in the output
633
+ */
634
+ openapi(
635
+ /** @alias o @description Output file path (stdout if omitted) */
636
+ output,
637
+ /** @description Include hidden routes */
638
+ includeHidden) {
639
+ const doc = this.exportOpenAPI(!includeHidden);
640
+ const json = JSON.stringify(doc, undefined, 2);
641
+ if (output) {
642
+ FileUtils.save(doc, output);
643
+ useLog("INFO", `OpenAPI definition written to ${output}`);
644
+ }
645
+ else {
646
+ useOutput(json);
647
+ }
648
+ }
649
+ /**
650
+ * Export OpenAPI
651
+ * @param skipHidden - whether to skip hidden entries
652
+ * @returns the result
653
+ */
654
+ exportOpenAPI(skipHidden = true) {
655
+ const packageInfo = useApplication().getPackageDescription();
656
+ let contact;
657
+ if (typeof packageInfo.author === "string") {
658
+ contact = {
659
+ name: packageInfo.author
660
+ };
661
+ }
662
+ else if (packageInfo.author) {
663
+ contact = packageInfo.author;
664
+ }
665
+ let license;
666
+ if (typeof packageInfo.license === "string") {
667
+ license = {
668
+ name: packageInfo.license
669
+ };
670
+ }
671
+ else if (packageInfo.license) {
672
+ license = packageInfo.license;
673
+ }
674
+ const openapi = deepmerge({
675
+ openapi: "3.0.3",
676
+ info: {
677
+ description: packageInfo.description,
678
+ version: packageInfo.version || "0.0.0",
679
+ title: packageInfo.title || "Webda-based application",
680
+ termsOfService: packageInfo.termsOfService,
681
+ contact,
682
+ license
683
+ },
684
+ components: {
685
+ schemas: {
686
+ Object: {
687
+ type: "object"
688
+ }
689
+ }
690
+ },
691
+ paths: {},
692
+ tags: []
693
+ }, useApplication().getCurrentConfiguration().openapi || {});
694
+ const app = useApplication();
695
+ const models = app.getModels();
696
+ const schemas = app.getSchemas();
697
+ // Copy all input/output from actions
698
+ for (const i in schemas) {
699
+ if (!(i.endsWith(".input") || i.endsWith(".output"))) {
700
+ continue;
701
+ }
702
+ // @ts-ignore
703
+ openapi.components.schemas[i] ??= schemas[i];
704
+ // Not sure how to test following
705
+ /* c8 ignore next 5 */
706
+ for (const j in schemas[i].definitions) {
707
+ // @ts-ignore
708
+ openapi.components.schemas[j] ??= schemas[i].definitions[j];
709
+ }
710
+ }
711
+ for (const i in models) {
712
+ const model = models[i];
713
+ let desc = {
714
+ type: "object"
715
+ };
716
+ const modelName = model.name || i.split("/").pop();
717
+ const schema = useApplication().getSchema(i);
718
+ if (schema) {
719
+ for (const j in schema.definitions) {
720
+ // @ts-ignore
721
+ openapi.components.schemas[j] ??= schema.definitions[j];
722
+ }
723
+ delete schema.definitions;
724
+ desc = schema;
725
+ }
726
+ // Remove empty required as openapi does not like that
727
+ // Our compiler is not generating this anymore but it is additional protection
728
+ /* c8 ignore next 3 */
729
+ if (desc.required && desc.required.length === 0) {
730
+ delete desc.required;
731
+ }
732
+ // Remove $schema
733
+ delete desc.$schema;
734
+ // Rename all #/definitions/ by #/components/schemas/
735
+ openapi.components.schemas[modelName] = JSON.parse(JSON.stringify(desc).replace(/#\/definitions\//g, "#/components/schemas/"));
736
+ }
737
+ this.completeOpenAPI(openapi, skipHidden);
738
+ openapi.tags.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase()));
739
+ const paths = {};
740
+ Object.keys(openapi.paths)
741
+ .sort()
742
+ .forEach(i => (paths[i] = openapi.paths[i]));
743
+ openapi.paths = paths;
744
+ return openapi;
745
+ }
746
+ /**
747
+ * Register a request filtering
748
+ *
749
+ * Will apply to all requests regardless of the devMode
750
+ * @param filter - the filter to apply
751
+ */
752
+ registerRequestFilter(filter) {
753
+ this._requestFilters.push(filter);
754
+ }
755
+ /**
756
+ * Register a CORS request filtering
757
+ *
758
+ * Does not apply in devMode
759
+ * @param filter - the filter to apply
760
+ */
761
+ registerCORSFilter(filter) {
762
+ this._requestCORSFilters.push(filter);
763
+ }
764
+ /**
765
+ * Auto-discover services that declare `request-filter` or `cors-filter` capabilities
766
+ * and register them with the Router.
767
+ *
768
+ * Called during framework initialization (after all services are resolved and
769
+ * initialized) to replace manual `registerRequestFilter(this)` calls. Iterates
770
+ * all services, checks their {@link Service.getCapabilities} return value, and
771
+ * registers matching services as request or CORS filters.
772
+ *
773
+ * @param services - Iterable of initialized services to scan for filter capabilities
774
+ *
775
+ * @example
776
+ * ```typescript
777
+ * // Called automatically by Core.init():
778
+ * router.discoverFilters(Object.values(this.services));
779
+ *
780
+ * // A service with "request-filter" capability is auto-registered:
781
+ * class HawkService extends Service implements RequestFilter {
782
+ * // getCapabilities() returns { "request-filter": {}, "cors-filter": {} }
783
+ * // → automatically registered with router as both request and CORS filter
784
+ * }
785
+ * ```
786
+ */
787
+ discoverFilters(services) {
788
+ for (const service of services) {
789
+ // Services that failed to construct are kept as undefined entries
790
+ if (!service)
791
+ continue;
792
+ const caps = service.getCapabilities();
793
+ if ("request-filter" in caps) {
794
+ this.registerRequestFilter(service);
795
+ }
796
+ if ("cors-filter" in caps) {
797
+ this.registerCORSFilter(service);
798
+ }
799
+ }
800
+ }
801
+ /**
802
+ * Auto-discover routes declared with `@Route` (or the legacy
803
+ * `constructor.routes` bucket) on each service, and register them with the
804
+ * router. Called once from `Core.init()` after all services have resolved —
805
+ * services don't have to push their own routes anymore.
806
+ *
807
+ * @param services - iterable of initialized services to scan
808
+ */
809
+ discoverRoutes(services) {
810
+ for (const service of services) {
811
+ if (!service)
812
+ continue;
813
+ // @ts-ignore — back-compat for subclasses that still populate this
814
+ const legacy = service.constructor.routes || {};
815
+ const fromMetadata = getMetadata(service.constructor)?.["webda.route"] || {};
816
+ const routes = { ...legacy };
817
+ for (const path in fromMetadata) {
818
+ routes[path] = [...(routes[path] || []), ...fromMetadata[path]];
819
+ }
820
+ for (const path in routes) {
821
+ for (const route of routes[path]) {
822
+ const executor = service[route.executor];
823
+ if (typeof executor !== "function") {
824
+ useLog("WARN", `@Route on ${service.getName()} references non-method ${route.executor}`);
825
+ continue;
826
+ }
827
+ const finalUrl = service.getUrl(path, route.methods);
828
+ if (!finalUrl)
829
+ continue;
830
+ this.addRouteToRouter(finalUrl, {
831
+ _method: executor.bind(service),
832
+ executor: service.getName(),
833
+ openapi: route.openapi,
834
+ methods: route.methods
835
+ });
836
+ }
837
+ }
838
+ }
839
+ }
840
+ };
841
+ })();
842
+ export { Router };
843
+ //# sourceMappingURL=router.service.js.map