@webda/core 4.0.0-beta.1 → 4.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/README.md +252 -0
  2. package/lib/application/application.d.ts +437 -0
  3. package/lib/application/application.d.ts.map +1 -0
  4. package/lib/application/application.js +792 -0
  5. package/lib/application/application.js.map +1 -0
  6. package/lib/application/hooks.d.ts +34 -0
  7. package/lib/application/hooks.d.ts.map +1 -0
  8. package/lib/application/hooks.js +57 -0
  9. package/lib/application/hooks.js.map +1 -0
  10. package/lib/application/iapplication.d.ts +43 -0
  11. package/lib/application/iapplication.d.ts.map +1 -0
  12. package/lib/application/iapplication.js +2 -0
  13. package/lib/application/iapplication.js.map +1 -0
  14. package/lib/application/iconfiguration.d.ts +176 -0
  15. package/lib/application/iconfiguration.d.ts.map +1 -0
  16. package/lib/application/iconfiguration.js +8 -0
  17. package/lib/application/iconfiguration.js.map +1 -0
  18. package/lib/application/runner.d.ts +8 -0
  19. package/lib/application/runner.d.ts.map +1 -0
  20. package/lib/application/runner.js +26 -0
  21. package/lib/application/runner.js.map +1 -0
  22. package/lib/application/unpackedapplication.d.ts +104 -0
  23. package/lib/application/unpackedapplication.d.ts.map +1 -0
  24. package/lib/application/unpackedapplication.js +492 -0
  25. package/lib/application/unpackedapplication.js.map +1 -0
  26. package/lib/bin/cli-phase.d.ts +28 -0
  27. package/lib/bin/cli-phase.d.ts.map +1 -0
  28. package/lib/bin/cli-phase.js +44 -0
  29. package/lib/bin/cli-phase.js.map +1 -0
  30. package/lib/bin/cli.d.ts +161 -0
  31. package/lib/bin/cli.d.ts.map +1 -0
  32. package/lib/bin/cli.js +828 -0
  33. package/lib/bin/cli.js.map +1 -0
  34. package/lib/bin/launcher.d.ts +3 -0
  35. package/lib/bin/launcher.d.ts.map +1 -0
  36. package/lib/bin/launcher.js +50 -0
  37. package/lib/bin/launcher.js.map +1 -0
  38. package/lib/cache/cache.d.ts +33 -0
  39. package/lib/cache/cache.d.ts.map +1 -0
  40. package/lib/cache/cache.js +8 -0
  41. package/lib/cache/cache.js.map +1 -0
  42. package/lib/{services/configuration.d.ts → configurations/configuration.service.d.ts} +58 -49
  43. package/lib/configurations/configuration.service.d.ts.map +1 -0
  44. package/lib/configurations/configuration.service.js +248 -0
  45. package/lib/configurations/configuration.service.js.map +1 -0
  46. package/lib/configurations/fileconfiguration.service.d.ts +30 -0
  47. package/lib/configurations/fileconfiguration.service.d.ts.map +1 -0
  48. package/lib/configurations/fileconfiguration.service.js +65 -0
  49. package/lib/configurations/fileconfiguration.service.js.map +1 -0
  50. package/lib/configurations/kubernetesconfiguration.service.d.ts +43 -0
  51. package/lib/configurations/kubernetesconfiguration.service.d.ts.map +1 -0
  52. package/lib/configurations/kubernetesconfiguration.service.js +83 -0
  53. package/lib/configurations/kubernetesconfiguration.service.js.map +1 -0
  54. package/lib/contexts/execution.d.ts +33 -0
  55. package/lib/contexts/execution.d.ts.map +1 -0
  56. package/lib/contexts/execution.js +73 -0
  57. package/lib/contexts/execution.js.map +1 -0
  58. package/lib/contexts/globalcontext.d.ts +29 -0
  59. package/lib/contexts/globalcontext.d.ts.map +1 -0
  60. package/lib/contexts/globalcontext.js +38 -0
  61. package/lib/contexts/globalcontext.js.map +1 -0
  62. package/lib/{utils → contexts}/httpcontext.d.ts +45 -19
  63. package/lib/contexts/httpcontext.d.ts.map +1 -0
  64. package/lib/{utils → contexts}/httpcontext.js +102 -34
  65. package/lib/contexts/httpcontext.js.map +1 -0
  66. package/lib/contexts/icontext.d.ts +236 -0
  67. package/lib/contexts/icontext.d.ts.map +1 -0
  68. package/lib/contexts/icontext.js +230 -0
  69. package/lib/contexts/icontext.js.map +1 -0
  70. package/lib/contexts/operationcontext.d.ts +179 -0
  71. package/lib/contexts/operationcontext.d.ts.map +1 -0
  72. package/lib/contexts/operationcontext.js +358 -0
  73. package/lib/contexts/operationcontext.js.map +1 -0
  74. package/lib/contexts/simplecontext.d.ts +31 -0
  75. package/lib/contexts/simplecontext.d.ts.map +1 -0
  76. package/lib/contexts/simplecontext.js +45 -0
  77. package/lib/contexts/simplecontext.js.map +1 -0
  78. package/lib/contexts/webcontext.d.ts +218 -0
  79. package/lib/contexts/webcontext.d.ts.map +1 -0
  80. package/lib/contexts/webcontext.js +389 -0
  81. package/lib/contexts/webcontext.js.map +1 -0
  82. package/lib/core/authorizer.d.ts +23 -0
  83. package/lib/core/authorizer.d.ts.map +1 -0
  84. package/lib/core/authorizer.js +17 -0
  85. package/lib/core/authorizer.js.map +1 -0
  86. package/lib/core/core.d.ts +225 -0
  87. package/lib/core/core.d.ts.map +1 -0
  88. package/lib/core/core.js +576 -0
  89. package/lib/core/core.js.map +1 -0
  90. package/lib/core/hooks.d.ts +72 -0
  91. package/lib/core/hooks.d.ts.map +1 -0
  92. package/lib/core/hooks.js +73 -0
  93. package/lib/core/hooks.js.map +1 -0
  94. package/lib/core/icore.d.ts +249 -0
  95. package/lib/core/icore.d.ts.map +1 -0
  96. package/lib/core/icore.js +15 -0
  97. package/lib/core/icore.js.map +1 -0
  98. package/lib/core/instancestorage.d.ts +61 -0
  99. package/lib/core/instancestorage.d.ts.map +1 -0
  100. package/lib/core/instancestorage.js +75 -0
  101. package/lib/core/instancestorage.js.map +1 -0
  102. package/lib/core/operations.d.ts +181 -0
  103. package/lib/core/operations.d.ts.map +1 -0
  104. package/lib/core/operations.js +559 -0
  105. package/lib/core/operations.js.map +1 -0
  106. package/lib/errors/errors.d.ts +126 -0
  107. package/lib/errors/errors.d.ts.map +1 -0
  108. package/lib/errors/errors.js +165 -0
  109. package/lib/errors/errors.js.map +1 -0
  110. package/lib/events/asynceventemitter.d.ts +159 -0
  111. package/lib/events/asynceventemitter.d.ts.map +1 -0
  112. package/lib/events/asynceventemitter.js +152 -0
  113. package/lib/events/asynceventemitter.js.map +1 -0
  114. package/lib/events/events.d.ts +112 -0
  115. package/lib/events/events.d.ts.map +1 -0
  116. package/lib/events/events.js +45 -0
  117. package/lib/events/events.js.map +1 -0
  118. package/lib/index.d.ts +84 -51
  119. package/lib/index.d.ts.map +1 -0
  120. package/lib/index.js +82 -59
  121. package/lib/index.js.map +1 -1
  122. package/lib/loggers/console.service.d.ts +24 -0
  123. package/lib/loggers/console.service.d.ts.map +1 -0
  124. package/lib/loggers/console.service.js +30 -0
  125. package/lib/loggers/console.service.js.map +1 -0
  126. package/lib/loggers/file.service.d.ts +25 -0
  127. package/lib/loggers/file.service.d.ts.map +1 -0
  128. package/lib/loggers/file.service.js +33 -0
  129. package/lib/loggers/file.service.js.map +1 -0
  130. package/lib/loggers/hooks.d.ts +20 -0
  131. package/lib/loggers/hooks.d.ts.map +1 -0
  132. package/lib/loggers/hooks.js +40 -0
  133. package/lib/loggers/hooks.js.map +1 -0
  134. package/lib/loggers/ilogger.d.ts +76 -0
  135. package/lib/loggers/ilogger.d.ts.map +1 -0
  136. package/lib/loggers/ilogger.js +108 -0
  137. package/lib/loggers/ilogger.js.map +1 -0
  138. package/lib/loggers/logger.d.ts +13 -0
  139. package/lib/loggers/logger.d.ts.map +1 -0
  140. package/lib/loggers/logger.js +18 -0
  141. package/lib/loggers/logger.js.map +1 -0
  142. package/lib/loggers/memory.service.d.ts +18 -0
  143. package/lib/loggers/memory.service.d.ts.map +1 -0
  144. package/lib/loggers/memory.service.js +21 -0
  145. package/lib/loggers/memory.service.js.map +1 -0
  146. package/lib/loggers/params.d.ts +47 -0
  147. package/lib/loggers/params.d.ts.map +1 -0
  148. package/lib/loggers/params.js +56 -0
  149. package/lib/loggers/params.js.map +1 -0
  150. package/lib/metrics/metrics.d.ts +25 -0
  151. package/lib/metrics/metrics.d.ts.map +1 -0
  152. package/lib/metrics/metrics.js +51 -0
  153. package/lib/metrics/metrics.js.map +1 -0
  154. package/lib/models/aclmodel.d.ts +21 -77
  155. package/lib/models/aclmodel.d.ts.map +1 -0
  156. package/lib/models/aclmodel.js +27 -204
  157. package/lib/models/aclmodel.js.map +1 -1
  158. package/lib/models/coremodel.model.d.ts +5 -0
  159. package/lib/models/coremodel.model.d.ts.map +1 -0
  160. package/lib/models/coremodel.model.js +5 -0
  161. package/lib/models/coremodel.model.js.map +1 -0
  162. package/lib/models/decorator.d.ts +63 -0
  163. package/lib/models/decorator.d.ts.map +1 -0
  164. package/lib/models/decorator.js +63 -0
  165. package/lib/models/decorator.js.map +1 -0
  166. package/lib/models/deployment.d.ts +2 -1
  167. package/lib/models/deployment.d.ts.map +1 -0
  168. package/lib/models/ident.model.d.ts +89 -0
  169. package/lib/models/ident.model.d.ts.map +1 -0
  170. package/lib/models/ident.model.js +115 -0
  171. package/lib/models/ident.model.js.map +1 -0
  172. package/lib/models/ownermodel.model.d.ts +68 -0
  173. package/lib/models/ownermodel.model.d.ts.map +1 -0
  174. package/lib/models/ownermodel.model.js +112 -0
  175. package/lib/models/ownermodel.model.js.map +1 -0
  176. package/lib/models/registry.model.d.ts +76 -0
  177. package/lib/models/registry.model.d.ts.map +1 -0
  178. package/lib/models/registry.model.js +104 -0
  179. package/lib/models/registry.model.js.map +1 -0
  180. package/lib/models/rolemodel.model.d.ts +28 -0
  181. package/lib/models/rolemodel.model.d.ts.map +1 -0
  182. package/lib/models/rolemodel.model.js +53 -0
  183. package/lib/models/rolemodel.model.js.map +1 -0
  184. package/lib/models/simpleuser.model.d.ts +78 -0
  185. package/lib/models/simpleuser.model.d.ts.map +1 -0
  186. package/lib/models/simpleuser.model.js +123 -0
  187. package/lib/models/simpleuser.model.js.map +1 -0
  188. package/lib/models/types.d.ts +113 -0
  189. package/lib/models/types.d.ts.map +1 -0
  190. package/lib/models/types.js +2 -0
  191. package/lib/models/types.js.map +1 -0
  192. package/lib/models/user.model.d.ts +103 -0
  193. package/lib/models/user.model.d.ts.map +1 -0
  194. package/lib/models/user.model.js +125 -0
  195. package/lib/models/user.model.js.map +1 -0
  196. package/lib/queues/memoryqueue.service.d.ts +72 -0
  197. package/lib/queues/memoryqueue.service.d.ts.map +1 -0
  198. package/lib/queues/memoryqueue.service.js +136 -0
  199. package/lib/queues/memoryqueue.service.js.map +1 -0
  200. package/lib/queues/pubsubservice.d.ts +9 -6
  201. package/lib/queues/pubsubservice.d.ts.map +1 -0
  202. package/lib/queues/pubsubservice.js +5 -4
  203. package/lib/queues/pubsubservice.js.map +1 -1
  204. package/lib/queues/queueservice.d.ts +10 -11
  205. package/lib/queues/queueservice.d.ts.map +1 -0
  206. package/lib/queues/queueservice.js +48 -20
  207. package/lib/queues/queueservice.js.map +1 -1
  208. package/lib/rest/hooks.d.ts +8 -0
  209. package/lib/rest/hooks.d.ts.map +1 -0
  210. package/lib/rest/hooks.js +10 -0
  211. package/lib/rest/hooks.js.map +1 -0
  212. package/lib/rest/irest.d.ts +212 -0
  213. package/lib/rest/irest.d.ts.map +1 -0
  214. package/lib/rest/irest.js +39 -0
  215. package/lib/rest/irest.js.map +1 -0
  216. package/lib/rest/originfilter.d.ts +38 -0
  217. package/lib/rest/originfilter.d.ts.map +1 -0
  218. package/lib/rest/originfilter.js +61 -0
  219. package/lib/rest/originfilter.js.map +1 -0
  220. package/lib/rest/restoperationstransport.service.d.ts +193 -0
  221. package/lib/rest/restoperationstransport.service.d.ts.map +1 -0
  222. package/lib/rest/restoperationstransport.service.js +780 -0
  223. package/lib/rest/restoperationstransport.service.js.map +1 -0
  224. package/lib/rest/router.service.d.ts +244 -0
  225. package/lib/rest/router.service.d.ts.map +1 -0
  226. package/lib/rest/router.service.js +843 -0
  227. package/lib/rest/router.service.js.map +1 -0
  228. package/lib/schemas/hooks.d.ts +48 -0
  229. package/lib/schemas/hooks.d.ts.map +1 -0
  230. package/lib/schemas/hooks.js +152 -0
  231. package/lib/schemas/hooks.js.map +1 -0
  232. package/lib/services/audit.model.d.ts +208 -0
  233. package/lib/services/audit.model.d.ts.map +1 -0
  234. package/lib/services/audit.model.js +431 -0
  235. package/lib/services/audit.model.js.map +1 -0
  236. package/lib/services/{authentication.d.ts → authentication.service.d.ts} +140 -58
  237. package/lib/services/authentication.service.d.ts.map +1 -0
  238. package/lib/services/authentication.service.js +932 -0
  239. package/lib/services/authentication.service.js.map +1 -0
  240. package/lib/services/binary.service.d.ts +808 -0
  241. package/lib/services/binary.service.d.ts.map +1 -0
  242. package/lib/services/binary.service.js +1365 -0
  243. package/lib/services/binary.service.js.map +1 -0
  244. package/lib/services/cloudbinary.d.ts +19 -13
  245. package/lib/services/cloudbinary.d.ts.map +1 -0
  246. package/lib/services/cloudbinary.js +24 -18
  247. package/lib/services/cloudbinary.js.map +1 -1
  248. package/lib/services/command.d.ts +118 -0
  249. package/lib/services/command.d.ts.map +1 -0
  250. package/lib/services/command.js +97 -0
  251. package/lib/services/command.js.map +1 -0
  252. package/lib/services/cron.service.d.ts +142 -0
  253. package/lib/services/cron.service.d.ts.map +1 -0
  254. package/lib/services/cron.service.js +291 -0
  255. package/lib/services/cron.service.js.map +1 -0
  256. package/lib/services/{cryptoservice.d.ts → cryptoservice.service.d.ts} +77 -142
  257. package/lib/services/cryptoservice.service.d.ts.map +1 -0
  258. package/lib/services/cryptoservice.service.js +527 -0
  259. package/lib/services/cryptoservice.service.js.map +1 -0
  260. package/lib/services/debugmailer.service.d.ts +49 -0
  261. package/lib/services/debugmailer.service.d.ts.map +1 -0
  262. package/lib/services/debugmailer.service.js +66 -0
  263. package/lib/services/debugmailer.service.js.map +1 -0
  264. package/lib/services/domainservice.service.d.ts +203 -0
  265. package/lib/services/domainservice.service.d.ts.map +1 -0
  266. package/lib/services/domainservice.service.js +600 -0
  267. package/lib/services/domainservice.service.js.map +1 -0
  268. package/lib/services/httpserver.service.d.ts +248 -0
  269. package/lib/services/httpserver.service.d.ts.map +1 -0
  270. package/lib/services/httpserver.service.js +673 -0
  271. package/lib/services/httpserver.service.js.map +1 -0
  272. package/lib/services/iauthentication.d.ts +9 -0
  273. package/lib/services/iauthentication.d.ts.map +1 -0
  274. package/lib/services/iauthentication.js +2 -0
  275. package/lib/services/iauthentication.js.map +1 -0
  276. package/lib/services/icryptoservice.d.ts +127 -0
  277. package/lib/services/icryptoservice.d.ts.map +1 -0
  278. package/lib/services/icryptoservice.js +68 -0
  279. package/lib/services/icryptoservice.js.map +1 -0
  280. package/lib/services/imailer.d.ts +17 -0
  281. package/lib/services/imailer.d.ts.map +1 -0
  282. package/lib/services/imailer.js +2 -0
  283. package/lib/services/imailer.js.map +1 -0
  284. package/lib/services/iservice.d.ts +104 -0
  285. package/lib/services/iservice.d.ts.map +1 -0
  286. package/lib/services/iservice.js +63 -0
  287. package/lib/services/iservice.js.map +1 -0
  288. package/lib/services/mailer.service.d.ts +220 -0
  289. package/lib/services/mailer.service.d.ts.map +1 -0
  290. package/lib/services/mailer.service.js +251 -0
  291. package/lib/services/mailer.service.js.map +1 -0
  292. package/lib/services/{notificationservice.d.ts → notificationservice.service.d.ts} +10 -10
  293. package/lib/services/notificationservice.service.d.ts.map +1 -0
  294. package/lib/services/{notificationservice.js → notificationservice.service.js} +24 -12
  295. package/lib/services/notificationservice.service.js.map +1 -0
  296. package/lib/services/oauth.d.ts +58 -31
  297. package/lib/services/oauth.d.ts.map +1 -0
  298. package/lib/services/oauth.js +365 -251
  299. package/lib/services/oauth.js.map +1 -1
  300. package/lib/services/operationstransport.d.ts +65 -0
  301. package/lib/services/operationstransport.d.ts.map +1 -0
  302. package/lib/services/operationstransport.js +103 -0
  303. package/lib/services/operationstransport.js.map +1 -0
  304. package/lib/services/{prometheus.d.ts → prometheus.service.d.ts} +13 -11
  305. package/lib/services/prometheus.service.d.ts.map +1 -0
  306. package/lib/services/prometheus.service.js +203 -0
  307. package/lib/services/prometheus.service.js.map +1 -0
  308. package/lib/services/resource.service.d.ts +121 -0
  309. package/lib/services/resource.service.d.ts.map +1 -0
  310. package/lib/services/resource.service.js +301 -0
  311. package/lib/services/resource.service.js.map +1 -0
  312. package/lib/services/service.d.ts +88 -189
  313. package/lib/services/service.d.ts.map +1 -0
  314. package/lib/services/service.js +407 -432
  315. package/lib/services/service.js.map +1 -1
  316. package/lib/services/servicecommands.d.ts +99 -0
  317. package/lib/services/servicecommands.d.ts.map +1 -0
  318. package/lib/services/servicecommands.js +165 -0
  319. package/lib/services/servicecommands.js.map +1 -0
  320. package/lib/services/serviceparameters.d.ts +33 -0
  321. package/lib/services/serviceparameters.d.ts.map +1 -0
  322. package/lib/services/serviceparameters.js +79 -0
  323. package/lib/services/serviceparameters.js.map +1 -0
  324. package/lib/{utils → session}/cookie.d.ts +32 -18
  325. package/lib/session/cookie.d.ts.map +1 -0
  326. package/lib/{utils → session}/cookie.js +76 -23
  327. package/lib/session/cookie.js.map +1 -0
  328. package/lib/session/manager.model.d.ts +71 -0
  329. package/lib/session/manager.model.d.ts.map +1 -0
  330. package/lib/session/manager.model.js +155 -0
  331. package/lib/session/manager.model.js.map +1 -0
  332. package/lib/session/session.d.ts +57 -0
  333. package/lib/session/session.d.ts.map +1 -0
  334. package/lib/session/session.js +126 -0
  335. package/lib/session/session.js.map +1 -0
  336. package/lib/stores/istore.d.ts +99 -0
  337. package/lib/stores/istore.d.ts.map +1 -0
  338. package/lib/stores/istore.js +26 -0
  339. package/lib/stores/istore.js.map +1 -0
  340. package/lib/stores/memory.service.d.ts +114 -0
  341. package/lib/stores/memory.service.d.ts.map +1 -0
  342. package/lib/stores/memory.service.js +343 -0
  343. package/lib/stores/memory.service.js.map +1 -0
  344. package/lib/stores/store.d.ts +127 -768
  345. package/lib/stores/store.d.ts.map +1 -0
  346. package/lib/stores/store.js +258 -1718
  347. package/lib/stores/store.js.map +1 -1
  348. package/lib/templates/templates.d.ts +39 -0
  349. package/lib/templates/templates.d.ts.map +1 -0
  350. package/lib/templates/templates.js +92 -0
  351. package/lib/templates/templates.js.map +1 -0
  352. package/lib/test/application.d.ts +174 -0
  353. package/lib/test/application.d.ts.map +1 -0
  354. package/lib/test/application.js +288 -0
  355. package/lib/test/application.js.map +1 -0
  356. package/lib/test/asyncstorage.d.ts +16 -0
  357. package/lib/test/asyncstorage.d.ts.map +1 -0
  358. package/lib/test/asyncstorage.js +32 -0
  359. package/lib/test/asyncstorage.js.map +1 -0
  360. package/lib/test/core.d.ts +63 -0
  361. package/lib/test/core.d.ts.map +1 -0
  362. package/lib/test/core.js +190 -0
  363. package/lib/test/core.js.map +1 -0
  364. package/lib/test/index.d.ts +7 -0
  365. package/lib/test/index.d.ts.map +1 -0
  366. package/lib/test/index.js +8 -0
  367. package/lib/test/index.js.map +1 -0
  368. package/lib/test/internal.d.ts +34 -0
  369. package/lib/test/internal.d.ts.map +1 -0
  370. package/lib/test/internal.js +156 -0
  371. package/lib/test/internal.js.map +1 -0
  372. package/lib/test/objects.d.ts +318 -0
  373. package/lib/test/objects.d.ts.map +1 -0
  374. package/lib/test/objects.js +443 -0
  375. package/lib/test/objects.js.map +1 -0
  376. package/lib/utils/abstractdeployer.d.ts +5 -2
  377. package/lib/utils/abstractdeployer.d.ts.map +1 -0
  378. package/lib/utils/abstractdeployer.js +3 -0
  379. package/lib/utils/abstractdeployer.js.map +1 -1
  380. package/package.json +85 -56
  381. package/test/cachedapp/webda.config.json +1 -5
  382. package/test/config-cached.json +1 -5
  383. package/test/config.json +6 -99
  384. package/test/data/.env +1 -0
  385. package/test/my-cnf.json +9 -0
  386. package/webda.module.json +3462 -2231
  387. package/lib/application.d.ts +0 -876
  388. package/lib/application.js +0 -741
  389. package/lib/application.js.map +0 -1
  390. package/lib/application.spec.d.ts +0 -1
  391. package/lib/application.spec.js +0 -234
  392. package/lib/application.spec.js.map +0 -1
  393. package/lib/core.d.ts +0 -740
  394. package/lib/core.js +0 -1310
  395. package/lib/core.js.map +0 -1
  396. package/lib/core.spec.d.ts +0 -1
  397. package/lib/core.spec.js +0 -761
  398. package/lib/core.spec.js.map +0 -1
  399. package/lib/errors.d.ts +0 -65
  400. package/lib/errors.js +0 -113
  401. package/lib/errors.js.map +0 -1
  402. package/lib/errors.spec.d.ts +0 -1
  403. package/lib/errors.spec.js +0 -33
  404. package/lib/errors.spec.js.map +0 -1
  405. package/lib/models/aclmodel.spec.d.ts +0 -1
  406. package/lib/models/aclmodel.spec.js +0 -187
  407. package/lib/models/aclmodel.spec.js.map +0 -1
  408. package/lib/models/coremodel.d.ts +0 -887
  409. package/lib/models/coremodel.js +0 -1208
  410. package/lib/models/coremodel.js.map +0 -1
  411. package/lib/models/coremodel.spec.d.ts +0 -1
  412. package/lib/models/coremodel.spec.js +0 -462
  413. package/lib/models/coremodel.spec.js.map +0 -1
  414. package/lib/models/ident.d.ts +0 -53
  415. package/lib/models/ident.js +0 -40
  416. package/lib/models/ident.js.map +0 -1
  417. package/lib/models/ident.spec.d.ts +0 -1
  418. package/lib/models/ident.spec.js +0 -43
  419. package/lib/models/ident.spec.js.map +0 -1
  420. package/lib/models/ownermodel.d.ts +0 -50
  421. package/lib/models/ownermodel.js +0 -65
  422. package/lib/models/ownermodel.js.map +0 -1
  423. package/lib/models/ownermodel.spec.d.ts +0 -1
  424. package/lib/models/ownermodel.spec.js +0 -191
  425. package/lib/models/ownermodel.spec.js.map +0 -1
  426. package/lib/models/relations.d.ts +0 -181
  427. package/lib/models/relations.js +0 -157
  428. package/lib/models/relations.js.map +0 -1
  429. package/lib/models/relations.spec.d.ts +0 -12
  430. package/lib/models/relations.spec.js +0 -224
  431. package/lib/models/relations.spec.js.map +0 -1
  432. package/lib/models/rolemodel.d.ts +0 -10
  433. package/lib/models/rolemodel.js +0 -35
  434. package/lib/models/rolemodel.js.map +0 -1
  435. package/lib/models/rolemodel.spec.d.ts +0 -1
  436. package/lib/models/rolemodel.spec.js +0 -86
  437. package/lib/models/rolemodel.spec.js.map +0 -1
  438. package/lib/models/user.d.ts +0 -100
  439. package/lib/models/user.js +0 -157
  440. package/lib/models/user.js.map +0 -1
  441. package/lib/models/user.spec.d.ts +0 -1
  442. package/lib/models/user.spec.js +0 -88
  443. package/lib/models/user.spec.js.map +0 -1
  444. package/lib/queues/filequeue.d.ts +0 -58
  445. package/lib/queues/filequeue.js +0 -131
  446. package/lib/queues/filequeue.js.map +0 -1
  447. package/lib/queues/filequeue.spec.d.ts +0 -1
  448. package/lib/queues/filequeue.spec.js +0 -78
  449. package/lib/queues/filequeue.spec.js.map +0 -1
  450. package/lib/queues/memoryqueue.d.ts +0 -45
  451. package/lib/queues/memoryqueue.js +0 -81
  452. package/lib/queues/memoryqueue.js.map +0 -1
  453. package/lib/queues/memoryqueue.spec.d.ts +0 -1
  454. package/lib/queues/memoryqueue.spec.js +0 -192
  455. package/lib/queues/memoryqueue.spec.js.map +0 -1
  456. package/lib/queues/queue.spec.d.ts +0 -5
  457. package/lib/queues/queue.spec.js +0 -55
  458. package/lib/queues/queue.spec.js.map +0 -1
  459. package/lib/router.d.ts +0 -172
  460. package/lib/router.js +0 -419
  461. package/lib/router.js.map +0 -1
  462. package/lib/router.spec.d.ts +0 -1
  463. package/lib/router.spec.js +0 -229
  464. package/lib/router.spec.js.map +0 -1
  465. package/lib/services/asyncevents.d.ts +0 -151
  466. package/lib/services/asyncevents.js +0 -217
  467. package/lib/services/asyncevents.js.map +0 -1
  468. package/lib/services/asyncevents.spec.d.ts +0 -1
  469. package/lib/services/asyncevents.spec.js +0 -118
  470. package/lib/services/asyncevents.spec.js.map +0 -1
  471. package/lib/services/authentication.js +0 -772
  472. package/lib/services/authentication.js.map +0 -1
  473. package/lib/services/authentication.spec.d.ts +0 -1
  474. package/lib/services/authentication.spec.js +0 -458
  475. package/lib/services/authentication.spec.js.map +0 -1
  476. package/lib/services/binary.d.ts +0 -549
  477. package/lib/services/binary.js +0 -986
  478. package/lib/services/binary.js.map +0 -1
  479. package/lib/services/binary.spec.d.ts +0 -44
  480. package/lib/services/binary.spec.js +0 -438
  481. package/lib/services/binary.spec.js.map +0 -1
  482. package/lib/services/cloudbinary.spec.d.ts +0 -13
  483. package/lib/services/cloudbinary.spec.js +0 -192
  484. package/lib/services/cloudbinary.spec.js.map +0 -1
  485. package/lib/services/configuration.js +0 -178
  486. package/lib/services/configuration.js.map +0 -1
  487. package/lib/services/configuration.spec.d.ts +0 -1
  488. package/lib/services/configuration.spec.js +0 -87
  489. package/lib/services/configuration.spec.js.map +0 -1
  490. package/lib/services/cron.d.ts +0 -73
  491. package/lib/services/cron.js +0 -141
  492. package/lib/services/cron.js.map +0 -1
  493. package/lib/services/cron.spec.d.ts +0 -1
  494. package/lib/services/cron.spec.js +0 -76
  495. package/lib/services/cron.spec.js.map +0 -1
  496. package/lib/services/cryptoservice.js +0 -434
  497. package/lib/services/cryptoservice.js.map +0 -1
  498. package/lib/services/cryptoservice.spec.d.ts +0 -1
  499. package/lib/services/cryptoservice.spec.js +0 -177
  500. package/lib/services/cryptoservice.spec.js.map +0 -1
  501. package/lib/services/debugmailer.d.ts +0 -36
  502. package/lib/services/debugmailer.js +0 -52
  503. package/lib/services/debugmailer.js.map +0 -1
  504. package/lib/services/debugmailer.spec.d.ts +0 -1
  505. package/lib/services/debugmailer.spec.js +0 -29
  506. package/lib/services/debugmailer.spec.js.map +0 -1
  507. package/lib/services/domainservice.d.ts +0 -152
  508. package/lib/services/domainservice.js +0 -881
  509. package/lib/services/domainservice.js.map +0 -1
  510. package/lib/services/domainservice.spec.d.ts +0 -1
  511. package/lib/services/domainservice.spec.js +0 -401
  512. package/lib/services/domainservice.spec.js.map +0 -1
  513. package/lib/services/filebinary.d.ts +0 -133
  514. package/lib/services/filebinary.js +0 -371
  515. package/lib/services/filebinary.js.map +0 -1
  516. package/lib/services/filebinary.spec.d.ts +0 -21
  517. package/lib/services/filebinary.spec.js +0 -415
  518. package/lib/services/filebinary.spec.js.map +0 -1
  519. package/lib/services/fileconfiguration.d.ts +0 -22
  520. package/lib/services/fileconfiguration.js +0 -48
  521. package/lib/services/fileconfiguration.js.map +0 -1
  522. package/lib/services/fileconfiguration.spec.d.ts +0 -1
  523. package/lib/services/fileconfiguration.spec.js +0 -177
  524. package/lib/services/fileconfiguration.spec.js.map +0 -1
  525. package/lib/services/invitationservice.d.ts +0 -222
  526. package/lib/services/invitationservice.js +0 -526
  527. package/lib/services/invitationservice.js.map +0 -1
  528. package/lib/services/invitationservice.spec.d.ts +0 -1
  529. package/lib/services/invitationservice.spec.js +0 -516
  530. package/lib/services/invitationservice.spec.js.map +0 -1
  531. package/lib/services/kubernetesconfiguration.d.ts +0 -26
  532. package/lib/services/kubernetesconfiguration.js +0 -54
  533. package/lib/services/kubernetesconfiguration.js.map +0 -1
  534. package/lib/services/kubernetesconfiguration.spec.d.ts +0 -1
  535. package/lib/services/kubernetesconfiguration.spec.js +0 -147
  536. package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
  537. package/lib/services/mailer.d.ts +0 -165
  538. package/lib/services/mailer.js +0 -176
  539. package/lib/services/mailer.js.map +0 -1
  540. package/lib/services/mailer.spec.d.ts +0 -1
  541. package/lib/services/mailer.spec.js +0 -144
  542. package/lib/services/mailer.spec.js.map +0 -1
  543. package/lib/services/notificationservice.js.map +0 -1
  544. package/lib/services/notificationservice.spec.d.ts +0 -1
  545. package/lib/services/notificationservice.spec.js +0 -78
  546. package/lib/services/notificationservice.spec.js.map +0 -1
  547. package/lib/services/oauth.spec.d.ts +0 -1
  548. package/lib/services/oauth.spec.js +0 -184
  549. package/lib/services/oauth.spec.js.map +0 -1
  550. package/lib/services/prometheus.js +0 -160
  551. package/lib/services/prometheus.js.map +0 -1
  552. package/lib/services/prometheus.spec.d.ts +0 -1
  553. package/lib/services/prometheus.spec.js +0 -57
  554. package/lib/services/prometheus.spec.js.map +0 -1
  555. package/lib/services/resource.d.ts +0 -87
  556. package/lib/services/resource.js +0 -156
  557. package/lib/services/resource.js.map +0 -1
  558. package/lib/services/resource.spec.d.ts +0 -1
  559. package/lib/services/resource.spec.js +0 -122
  560. package/lib/services/resource.spec.js.map +0 -1
  561. package/lib/services/service.spec.d.ts +0 -1
  562. package/lib/services/service.spec.js +0 -268
  563. package/lib/services/service.spec.js.map +0 -1
  564. package/lib/stores/aggregator.d.ts +0 -41
  565. package/lib/stores/aggregator.js +0 -80
  566. package/lib/stores/aggregator.js.map +0 -1
  567. package/lib/stores/aliasstore.d.ts +0 -108
  568. package/lib/stores/aliasstore.js +0 -168
  569. package/lib/stores/aliasstore.js.map +0 -1
  570. package/lib/stores/aliasstore.spec.d.ts +0 -11
  571. package/lib/stores/aliasstore.spec.js +0 -89
  572. package/lib/stores/aliasstore.spec.js.map +0 -1
  573. package/lib/stores/file.d.ts +0 -107
  574. package/lib/stores/file.js +0 -188
  575. package/lib/stores/file.js.map +0 -1
  576. package/lib/stores/file.spec.d.ts +0 -19
  577. package/lib/stores/file.spec.js +0 -232
  578. package/lib/stores/file.spec.js.map +0 -1
  579. package/lib/stores/mapper.d.ts +0 -149
  580. package/lib/stores/mapper.js +0 -293
  581. package/lib/stores/mapper.js.map +0 -1
  582. package/lib/stores/mapper.spec.d.ts +0 -1
  583. package/lib/stores/mapper.spec.js +0 -160
  584. package/lib/stores/mapper.spec.js.map +0 -1
  585. package/lib/stores/memory.d.ts +0 -151
  586. package/lib/stores/memory.js +0 -371
  587. package/lib/stores/memory.js.map +0 -1
  588. package/lib/stores/memory.spec.d.ts +0 -20
  589. package/lib/stores/memory.spec.js +0 -328
  590. package/lib/stores/memory.spec.js.map +0 -1
  591. package/lib/stores/modelmapper.d.ts +0 -61
  592. package/lib/stores/modelmapper.js +0 -199
  593. package/lib/stores/modelmapper.js.map +0 -1
  594. package/lib/stores/store.spec.d.ts +0 -65
  595. package/lib/stores/store.spec.js +0 -906
  596. package/lib/stores/store.spec.js.map +0 -1
  597. package/lib/test.d.ts +0 -162
  598. package/lib/test.js +0 -399
  599. package/lib/test.js.map +0 -1
  600. package/lib/unpackedapplication.d.ts +0 -76
  601. package/lib/unpackedapplication.js +0 -299
  602. package/lib/unpackedapplication.js.map +0 -1
  603. package/lib/utils/abstractdeployer.spec.d.ts +0 -1
  604. package/lib/utils/abstractdeployer.spec.js +0 -21
  605. package/lib/utils/abstractdeployer.spec.js.map +0 -1
  606. package/lib/utils/case.d.ts +0 -7
  607. package/lib/utils/case.js +0 -43
  608. package/lib/utils/case.js.map +0 -1
  609. package/lib/utils/case.spec.d.ts +0 -1
  610. package/lib/utils/case.spec.js +0 -50
  611. package/lib/utils/case.spec.js.map +0 -1
  612. package/lib/utils/context.d.ts +0 -462
  613. package/lib/utils/context.js +0 -732
  614. package/lib/utils/context.js.map +0 -1
  615. package/lib/utils/context.spec.d.ts +0 -9
  616. package/lib/utils/context.spec.js +0 -372
  617. package/lib/utils/context.spec.js.map +0 -1
  618. package/lib/utils/cookie.js.map +0 -1
  619. package/lib/utils/cookie.spec.d.ts +0 -1
  620. package/lib/utils/cookie.spec.js +0 -78
  621. package/lib/utils/cookie.spec.js.map +0 -1
  622. package/lib/utils/esm.d.ts +0 -13
  623. package/lib/utils/esm.js +0 -19
  624. package/lib/utils/esm.js.map +0 -1
  625. package/lib/utils/httpcontext.js.map +0 -1
  626. package/lib/utils/httpcontext.spec.d.ts +0 -4
  627. package/lib/utils/httpcontext.spec.js +0 -77
  628. package/lib/utils/httpcontext.spec.js.map +0 -1
  629. package/lib/utils/logger.d.ts +0 -91
  630. package/lib/utils/logger.js +0 -121
  631. package/lib/utils/logger.js.map +0 -1
  632. package/lib/utils/logger.spec.d.ts +0 -1
  633. package/lib/utils/logger.spec.js +0 -48
  634. package/lib/utils/logger.spec.js.map +0 -1
  635. package/lib/utils/serializers.d.ts +0 -161
  636. package/lib/utils/serializers.js +0 -420
  637. package/lib/utils/serializers.js.map +0 -1
  638. package/lib/utils/serializers.spec.d.ts +0 -1
  639. package/lib/utils/serializers.spec.js +0 -313
  640. package/lib/utils/serializers.spec.js.map +0 -1
  641. package/lib/utils/session.d.ts +0 -126
  642. package/lib/utils/session.js +0 -166
  643. package/lib/utils/session.js.map +0 -1
  644. package/lib/utils/session.spec.d.ts +0 -1
  645. package/lib/utils/session.spec.js +0 -71
  646. package/lib/utils/session.spec.js.map +0 -1
  647. package/lib/utils/throttler.d.ts +0 -102
  648. package/lib/utils/throttler.js +0 -168
  649. package/lib/utils/throttler.js.map +0 -1
  650. package/lib/utils/throttler.spec.d.ts +0 -1
  651. package/lib/utils/throttler.spec.js +0 -55
  652. package/lib/utils/throttler.spec.js.map +0 -1
  653. package/lib/utils/waiter.d.ts +0 -93
  654. package/lib/utils/waiter.js +0 -148
  655. package/lib/utils/waiter.js.map +0 -1
  656. package/lib/utils/waiter.spec.d.ts +0 -1
  657. package/lib/utils/waiter.spec.js +0 -98
  658. package/lib/utils/waiter.spec.js.map +0 -1
  659. package/test/config-file-missing-file-no-default.json +0 -44
  660. package/test/config-file-missing-file.json +0 -55
  661. package/test/config-file-no-reload.json +0 -69
  662. package/test/config-file-reload.json +0 -68
  663. package/test/config-invitation.json +0 -63
  664. package/test/config-kube-reload.json +0 -68
  665. package/test/config-reload.json +0 -66
  666. package/test/config.old.json +0 -152
  667. package/test/jsonutils/mdocs.yaml +0 -56
  668. package/test/jsonutils/test.json +0 -3
  669. package/test/jsonutils/test.yml +0 -5
  670. package/test/moddas/annotatedservice.js +0 -23
  671. package/test/moddas/debugmailer.js +0 -13
  672. package/test/moddas/fakeservice.js +0 -4
  673. package/test/moddas/voidstore.js +0 -66
  674. package/test/models/ident.js +0 -36
  675. package/test/models/task.js +0 -42
@@ -1,14 +1,62 @@
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 { EventEmitterUtils } from "../events/asynceventemitter.js";
36
+ import { createPropertyDecorator } from "@webda/tsc-esm";
37
+ import { useMetric } from "../metrics/metrics.js";
38
+ import { ServiceParameters } from "./serviceparameters.js";
39
+ import { useDynamicService, useService } from "../core/hooks.js";
40
+ import { registerOperation } from "../core/operations.js";
1
41
  import { deepmerge } from "deepmerge-ts";
2
- import * as events from "events";
3
- import { EventEmitterUtils } from "../index.js";
42
+ import { useApplication } from "../application/hooks.js";
43
+ import { AbstractService } from "../core/icore.js";
44
+ import { useLogger } from "../loggers/hooks.js";
45
+ import { WEBDA_EVENTS } from "@webda/models";
46
+ import { State } from "@webda/utils";
47
+ import { ServiceState } from "./iservice.js";
48
+ import { getMetadata } from "@webda/decorators";
4
49
  /**
5
50
  * Represent a Inject annotation
6
51
  *
7
52
  * @see Inject
8
53
  */
9
54
  class Injector {
55
+ parameter;
56
+ value;
57
+ property;
58
+ optional;
10
59
  /**
11
- *
12
60
  * @param property annotated
13
61
  * @param parameterOrName to inject from
14
62
  * @param defaultValue in case of a parameter
@@ -40,7 +88,7 @@ class Injector {
40
88
  if (this.parameter) {
41
89
  name = service.getParameters()[this.parameter] || this.value;
42
90
  }
43
- service[this.property] = service.getService(name);
91
+ service[this.property] = useService(name);
44
92
  if (!service[this.property] && !this.optional) {
45
93
  if (this.parameter) {
46
94
  throw new Error(`Injector did not found bean '${name}'(parameter:${this.parameter}) for '${service.getName()}'`);
@@ -54,7 +102,9 @@ class Injector {
54
102
  * @param service to inject to
55
103
  */
56
104
  static resolveAll(service) {
57
- (Object.getPrototypeOf(service).Injectors || []).forEach(injector => injector.resolve(service));
105
+ getMetadata(service.constructor)?.["webda.inject"]?.forEach((injector) => {
106
+ injector.resolve(service);
107
+ });
58
108
  }
59
109
  }
60
110
  /**
@@ -69,140 +119,29 @@ class Injector {
69
119
  * @param parameterOrName of the service to inject
70
120
  *
71
121
  * Might consider to split into two annotations
122
+ * TODO @webda/compiler could get all interfaces and ancestors classes to find the correct service
72
123
  */
73
- export function Inject(parameterOrName, defaultValue, optional) {
74
- return function (target, propertyName) {
75
- target.Injectors = target.Injectors || [];
76
- if (typeof defaultValue === "boolean") {
77
- target.Injectors.push(new Injector(propertyName, parameterOrName || propertyName, undefined, defaultValue));
78
- }
79
- else {
80
- target.Injectors.push(new Injector(propertyName, parameterOrName || propertyName, defaultValue, optional));
81
- }
82
- };
83
- }
84
- /**
85
- * Register an Operation within the framework
86
- *
87
- * An operation is a callable method with an input and output
88
- * The method will receive a Context from where it can execute
89
- *
90
- * @param id
91
- * @param input
92
- * @param output
93
- */
94
- export function Operation(properties, route) {
95
- return function (target, executor) {
96
- var _a, _b, _c, _d, _e, _f;
97
- (_a = target.constructor).operations ?? (_a.operations = {});
98
- properties ?? (properties = {});
99
- properties.id ?? (properties.id = executor);
100
- const id = properties.id;
101
- if (target.constructor.operations[id]) {
102
- console.error("Operation already exists", id);
103
- return;
104
- }
105
- (_b = target.constructor.operations)[id] ?? (_b[id] = {
106
- method: executor,
107
- ...properties
108
- });
109
- // If url is specified define the openapi
110
- if (route) {
111
- route.method ?? (route.method = "GET");
112
- route.openapi ?? (route.openapi = {});
113
- (_c = route.openapi)[_d = route.method.toLowerCase()] ?? (_c[_d] = {});
114
- let def = route.openapi[route.method.toLowerCase()];
115
- def.operationId = id;
116
- def.schemas ?? (def.schemas = {});
117
- (_e = def.schemas).input ?? (_e.input = properties.id.toLowerCase() + ".input");
118
- (_f = def.schemas).output ?? (_f.output = properties.id.toLowerCase() + ".output");
119
- Route(route.url, route.method, route.openapi)(target, executor);
120
- }
121
- };
122
- }
123
- // @Route to declare route on Bean
124
- export function Route(route, methods = ["GET"], openapi = {}) {
125
- return function (target, executor) {
126
- var _a, _b;
127
- (_a = target.constructor).routes ?? (_a.routes = {});
128
- (_b = target.constructor.routes)[route] ?? (_b[route] = []);
129
- target.constructor.routes[route].push({
130
- methods: Array.isArray(methods) ? methods : [methods],
131
- executor,
132
- openapi
133
- });
134
- };
135
- }
136
- /**
137
- * A utility class that takes a array of string or string transformed into regex that includes
138
- * a start line and end line
139
- */
140
- export class RegExpValidator {
141
- constructor(info) {
142
- info = Array.isArray(info) ? info : [info];
143
- this.validators = info.map(i => RegExpValidator.getRegExp(i));
144
- }
145
- static getRegExp(reg) {
146
- if (!reg.startsWith("^")) {
147
- reg = "^" + reg;
148
- }
149
- if (!reg.endsWith("$")) {
150
- reg += "$";
151
- }
152
- return new RegExp(reg);
153
- }
154
- validate(value) {
155
- return this.validators.some(p => p.test(value));
156
- }
157
- }
158
- /**
159
- * Standardized way to allow string/regex validation within configuration
160
- *
161
- * If url is prefixed with `regex:` it is considered a regex
162
- *
163
- * @example
164
- * ```typescript
165
- * class MyServiceParameters extends ServiceParameters {
166
- * urls: string[];
167
- * }
168
- *
169
- * class MyService extends Service {
170
- * loadParameters(params:any) {
171
- * const parameters = new MyServiceParameters(params);
172
- * this.urlsValidator = new RegExpStringValidator(parameters.urls);
173
- * return parameters;
174
- * }
175
- * }
176
- * ```
177
- */
178
- export class RegExpStringValidator extends RegExpValidator {
179
- constructor(info) {
180
- info = Array.isArray(info) ? info : [info];
181
- super(info.filter(i => i.startsWith("regex:")).map(i => i.substring(6)));
182
- this.stringValidators = info.filter(i => !i.startsWith("regex:"));
183
- }
184
- /**
185
- * Add string validation
186
- * @param value
187
- * @returns
188
- */
189
- validate(value) {
190
- return this.stringValidators.find(p => p === value) !== undefined || super.validate(value);
191
- }
192
- }
193
- /**
194
- * Interface to specify the Service parameters
195
- */
196
- export class ServiceParameters {
197
- /**
198
- * Copy all parameters into the object by default
199
- *
200
- * @param params from webda.config.json
201
- */
202
- constructor(params) {
203
- Object.assign(this, params);
204
- }
124
+ export const Inject = createPropertyDecorator((context, parameterOrName, defaultValue, optional) => {
125
+ context.metadata["webda.inject"] ??= [];
126
+ context.metadata["webda.inject"].push(new Injector(context.name, (parameterOrName || context.name), typeof defaultValue === "boolean" ? undefined : defaultValue, typeof defaultValue === "boolean" ? defaultValue : optional));
127
+ });
128
+ /*
129
+ export function Inject(parameterOrName?: string, defaultValue?: string | boolean, optional?: boolean) {
130
+ return (target: Service, context: ClassFieldDecoratorContext): void => {
131
+ context.metadata["webda.inject"] ??= {};
132
+ context.metadata["webda.inject"][context.name] = { parameterOrName, defaultValue, optional };
133
+
134
+ /*
135
+ target.Injectors = target.Injectors || [];
136
+ if (typeof defaultValue === "boolean") {
137
+ target.Injectors.push(new Injector(propertyName, parameterOrName || propertyName, undefined, defaultValue));
138
+ } else {
139
+ target.Injectors.push(new Injector(propertyName, parameterOrName || propertyName, defaultValue, optional));
140
+ }
141
+ /
142
+ };
205
143
  }
144
+ */
206
145
  /**
207
146
  * Use this object for representing a service in the application
208
147
  * A Service is a singleton in the application, that is init after all others services are created
@@ -213,308 +152,344 @@ export class ServiceParameters {
213
152
  * @abstract
214
153
  * @class Service
215
154
  */
216
- class Service extends events.EventEmitter {
217
- /**
218
- *
219
- *
220
- * @class Service
221
- * @param {Webda} webda - The main instance of Webda
222
- * @param {String} name - The name of the service
223
- * @param {Object} params - The parameters block define in the configuration file
224
- */
225
- constructor(webda, name, params = {}) {
226
- super();
227
- this._initException = undefined;
228
- this.logger = webda ? webda.getLogger(this) : undefined;
229
- this._webda = webda;
230
- this._name = name;
231
- this.parameters = this.loadParameters(params);
232
- }
233
- /**
234
- * Load the parameters for a service
235
- */
236
- loadParameters(params) {
237
- return new ServiceParameters(params);
238
- }
239
- /**
240
- * Used to compute or derivate input parameter to attribute
241
- */
242
- computeParameters() {
243
- // Can be overriden by subclasses if needed
244
- }
245
- /**
246
- * Get the service parameters
247
- */
248
- getParameters() {
249
- return this.parameters;
250
- }
251
- /**
252
- * Return WebdaCore
253
- */
254
- getWebda() {
255
- return this._webda;
256
- }
257
- /**
258
- * Shutdown the current service if action need to be taken
259
- */
260
- async stop() {
261
- // Nothing to do
262
- }
263
- /**
264
- * Return service representation
265
- */
266
- toString() {
267
- return this.parameters.type + "[" + this._name + "]";
268
- }
269
- /**
270
- * Resolve parameters
271
- * Call initRoutes and initBeanRoutes
272
- */
273
- resolve() {
274
- this.initMetrics();
275
- // Inject dependencies
276
- Injector.resolveAll(this);
277
- // We wait for all services to be created before calling computeParameters
278
- this.computeParameters();
279
- this.initRoutes();
280
- this.initOperations();
281
- return this;
282
- }
283
- /**
284
- * Init the metrics
285
- */
286
- initMetrics() {
287
- this.metrics = {};
288
- }
289
- /**
290
- * Add service name label
291
- * @param type
292
- * @param configuration
293
- * @returns
294
- */
295
- getMetric(type, configuration) {
296
- configuration.labelNames ?? (configuration.labelNames = []);
297
- configuration.labelNames = [...configuration.labelNames, "service"];
298
- configuration.name = `${this.getName().toLowerCase()}_${configuration.name}`;
299
- return this.getWebda().getMetric(type, configuration);
300
- }
301
- /**
302
- * Return the events that an external system can subscribe to
303
- *
304
- * @returns
305
- */
306
- getClientEvents() {
307
- return [];
308
- }
309
- /**
310
- * Authorize a public event subscription
311
- * @param event
312
- * @param context
313
- */
314
- authorizeClientEvent(_event, _context) {
315
- return false;
316
- }
317
- /**
318
- * Return the full path url based on parameters
319
- *
320
- * @param url relative url to service
321
- * @param _methods in case we need filtering (like Store)
322
- * @returns absolute url or undefined if need to skip the Route
323
- */
324
- getUrl(url, _methods) {
325
- // If url is absolute
326
- if (url.startsWith("/")) {
327
- return url;
155
+ let Service = (() => {
156
+ let _classSuper = AbstractService;
157
+ let _instanceExtraInitializers = [];
158
+ let _stop_decorators;
159
+ let _resolve_decorators;
160
+ let _init_decorators;
161
+ return class Service extends _classSuper {
162
+ static {
163
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
164
+ _stop_decorators = [ServiceState({ start: "stopping", end: "stopped" })];
165
+ _resolve_decorators = [ServiceState({ start: "resolving", end: "resolved" })];
166
+ _init_decorators = [ServiceState({ start: "initializing", end: "running" })];
167
+ __esDecorate(this, null, _stop_decorators, { kind: "method", name: "stop", static: false, private: false, access: { has: obj => "stop" in obj, get: obj => obj.stop }, metadata: _metadata }, null, _instanceExtraInitializers);
168
+ __esDecorate(this, null, _resolve_decorators, { kind: "method", name: "resolve", static: false, private: false, access: { has: obj => "resolve" in obj, get: obj => obj.resolve }, metadata: _metadata }, null, _instanceExtraInitializers);
169
+ __esDecorate(this, null, _init_decorators, { kind: "method", name: "init", static: false, private: false, access: { has: obj => "init" in obj, get: obj => obj.init }, metadata: _metadata }, null, _instanceExtraInitializers);
170
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
171
+ }
172
+ /**
173
+ * Service parameters
174
+ */
175
+ static Parameters = ServiceParameters;
176
+ /**
177
+ * Set the Webda events here
178
+ */
179
+ [WEBDA_EVENTS] = __runInitializers(this, _instanceExtraInitializers);
180
+ /**
181
+ * Get the current state
182
+ * @returns the result
183
+ */
184
+ getState() {
185
+ return State.getCurrentState(this);
186
+ }
187
+ /**
188
+ * Logger with class context
189
+ */
190
+ logger;
191
+ /**
192
+ * Get metrics
193
+ */
194
+ metrics;
195
+ /**
196
+ *
197
+ *
198
+ * @class Service
199
+ * @param {Webda} webda - The main instance of Webda
200
+ * @param {String} name - The name of the service
201
+ * @param {Object} params - The parameters block define in the configuration file
202
+ */
203
+ constructor(name, params) {
204
+ super(name, params);
205
+ this.logger = useLogger(this);
206
+ }
207
+ /**
208
+ * Used to compute or derivate input parameter to attribute
209
+ * @deprecated
210
+ */
211
+ computeParameters() {
212
+ // Can be overriden by subclasses if needed
328
213
  }
329
- if (!this.parameters.url) {
330
- return undefined;
214
+ /**
215
+ * Get the service parameters
216
+ * @returns the result
217
+ */
218
+ getParameters() {
219
+ return this.parameters;
331
220
  }
332
- if (url.startsWith(".")) {
333
- if (this.parameters.url.endsWith("/") && url.startsWith("./")) {
334
- return this.parameters.url + url.substring(2);
221
+ /**
222
+ * Shutdown the current service if action need to be taken
223
+ */
224
+ async stop() {
225
+ // Nothing to do
226
+ }
227
+ /**
228
+ * Return service representation
229
+ * @returns the result
230
+ */
231
+ toString() {
232
+ return this.parameters.type + "[" + this.name + "]";
233
+ }
234
+ /**
235
+ * Resolve parameters and load metadata. `@Route`-declared routes are scanned
236
+ * and registered by `Router.discoverRoutes(services)` from `Core.init()`
237
+ * once every service has resolved — nothing to do per-service here.
238
+ * @returns the result
239
+ */
240
+ resolve() {
241
+ this.initMetrics();
242
+ // Inject dependencies
243
+ Injector.resolveAll(this);
244
+ // We wait for all services to be created before calling computeParameters
245
+ this.computeParameters();
246
+ this.loadCapabilities();
247
+ this.initOperations();
248
+ return this;
249
+ }
250
+ /**
251
+ * Load capabilities from webda.module.json metadata into {@link _compiledCapabilities}.
252
+ *
253
+ * Called during {@link resolve} after dependency injection. Reads the service's
254
+ * type name from parameters, looks it up in the application's module metadata
255
+ * (moddas or beans section), and populates `_compiledCapabilities` with an
256
+ * empty object for each declared capability name.
257
+ *
258
+ * Fails silently if the application is not available (e.g., in unit tests
259
+ * where services are instantiated without a full application context).
260
+ *
261
+ * @example
262
+ * ```typescript
263
+ * // If webda.module.json contains:
264
+ * // { "moddas": { "MyApp/HawkService": { "capabilities": ["request-filter", "cors-filter"] } } }
265
+ * // Then after resolve(), this.getCapabilities() returns:
266
+ * // { "request-filter": {}, "cors-filter": {} }
267
+ * ```
268
+ *
269
+ * @see getCapabilities
270
+ */
271
+ loadCapabilities() {
272
+ try {
273
+ const app = useApplication();
274
+ const modules = app.getModules();
275
+ const type = this.parameters.type;
276
+ const metadata = modules.moddas?.[type] || modules.beans?.[type];
277
+ if (metadata?.capabilities) {
278
+ this._compiledCapabilities = {};
279
+ for (const cap of metadata.capabilities) {
280
+ this._compiledCapabilities[cap] = {};
281
+ }
282
+ }
283
+ }
284
+ catch {
285
+ // Application may not be available in tests
335
286
  }
336
- return this.parameters.url + url.substring(1);
337
287
  }
338
- return url;
339
- }
340
- /**
341
- * If undefined is returned it cancel the operation registration
342
- * @param id
343
- * @returns
344
- */
345
- getOperationId(id) {
346
- return id;
347
- }
348
- /**
349
- * Add a route dynamicaly
350
- *
351
- * @param {String} url of the route can contains dynamic part like {uuid}
352
- * @param {Array[]} methods
353
- * @param {Function} executer Method to execute for this route
354
- */
355
- addRoute(url, methods, executer, openapi = {}, override = false) {
356
- let finalUrl = this.getUrl(url, methods);
357
- if (!finalUrl) {
358
- return;
359
- }
360
- this._webda.addRoute(finalUrl, {
361
- // Create bounded function to keep the context
362
- _method: executer.bind(this),
363
- executor: this._name,
364
- openapi: deepmerge(openapi, this.parameters.openapi || {}),
365
- methods,
366
- override
367
- });
368
- }
369
- /**
370
- * Return variables for replacement in openapi
371
- * @returns
372
- */
373
- getOpenApiReplacements() {
374
- return {};
375
- }
376
- /**
377
- * Init the routes
378
- */
379
- initRoutes() {
380
- // @ts-ignore
381
- let routes = this.constructor.routes || {};
382
- for (let j in routes) {
383
- this.log("TRACE", "Adding route", j, "for bean", this.getName());
384
- routes[j].forEach(route => {
385
- this.addRoute(j, route.methods, this[route.executor], route.openapi);
386
- });
288
+ /**
289
+ * Init the metrics
290
+ */
291
+ initMetrics() {
292
+ this.metrics = {};
387
293
  }
388
- }
389
- /**
390
- * Init the operations
391
- */
392
- initOperations() {
393
- // @ts-ignore
394
- let operations = this.constructor.operations || {};
395
- for (let j in operations) {
396
- const id = this.getOperationId(j);
397
- if (!id)
398
- continue;
399
- this.log("TRACE", "Adding operation", id, "for bean", this.getName());
400
- this._webda.registerOperation(j.includes(".") ? j : `${this.getName()}.${j}`, {
401
- ...operations[j],
402
- service: this.getName(),
403
- input: `${this.getName()}.${operations[j].method}.input`,
404
- output: `${this.getName()}.${operations[j].method}.output`,
405
- id
294
+ /**
295
+ * Get a service by name
296
+ * @param name - the name to use
297
+ * @returns the result map
298
+ * @deprecated Use useService, might reconsider
299
+ */
300
+ getService(name) {
301
+ return useService(name);
302
+ }
303
+ /**
304
+ * Add service name label
305
+ * @param type - the type to look up
306
+ * @param configuration - the configuration
307
+ * @returns the result
308
+ */
309
+ getMetric(type, configuration) {
310
+ configuration.labelNames ??= [];
311
+ configuration.labelNames = [...configuration.labelNames, "service"];
312
+ configuration.name = `${this.getName().toLowerCase()}_${configuration.name}`;
313
+ return useMetric(type, configuration);
314
+ }
315
+ /**
316
+ * Return the events that an external system can subscribe to
317
+ *
318
+ * @returns the list of results
319
+ */
320
+ getClientEvents() {
321
+ return [];
322
+ }
323
+ /**
324
+ * Authorize a public event subscription
325
+ * @param event - the event name
326
+ * @param context - the execution context
327
+ * @param _event - the event name
328
+ * @param _context - the execution context
329
+ * @returns true if the condition is met
330
+ */
331
+ authorizeClientEvent(_event, _context) {
332
+ return false;
333
+ }
334
+ /**
335
+ * Return the full path url based on parameters
336
+ *
337
+ * @param url relative url to service
338
+ * @param _methods in case we need filtering (like Store)
339
+ * @returns absolute url or undefined if need to skip the Route
340
+ */
341
+ getUrl(url, _methods) {
342
+ const { url: ServiceUrl } = this.parameters;
343
+ // If url is absolute
344
+ if (url.startsWith("/")) {
345
+ return url;
346
+ }
347
+ if (!ServiceUrl) {
348
+ return undefined;
349
+ }
350
+ if (url.startsWith(".")) {
351
+ if (ServiceUrl.endsWith("/") && url.startsWith("./")) {
352
+ return ServiceUrl + url.substring(2);
353
+ }
354
+ return ServiceUrl + url.substring(1);
355
+ }
356
+ return url;
357
+ }
358
+ /**
359
+ * If undefined is returned it cancel the operation registration
360
+ * @param id - the identifier
361
+ * @returns the result
362
+ */
363
+ getOperationId(id) {
364
+ return id;
365
+ }
366
+ /**
367
+ * Add a route dynamicaly
368
+ *
369
+ * @param {String} url of the route can contains dynamic part like {uuid}
370
+ * @param {Array[]} methods - the HTTP methods
371
+ * @param {Function} executer Method to execute for this route
372
+ * @param openapi - the OpenAPI specification
373
+ * @param override - whether to override existing
374
+ */
375
+ addRoute(url, methods, executer, openapi = {}, override = false) {
376
+ const finalUrl = this.getUrl(url, methods);
377
+ if (!finalUrl) {
378
+ return;
379
+ }
380
+ const router = useDynamicService("Router");
381
+ if (!router) {
382
+ this.log("WARN", `No Router service available, skipping route ${finalUrl}`);
383
+ return;
384
+ }
385
+ router.addRouteToRouter(finalUrl, {
386
+ _method: executer.bind(this),
387
+ executor: this.getName(),
388
+ openapi: deepmerge(openapi, this.parameters.openapi || {}),
389
+ methods,
390
+ override
406
391
  });
407
392
  }
408
- }
409
- /**
410
- * Convert an object to JSON using the Webda json filter
411
- *
412
- * @class Service
413
- * @param {Object} object - The object to export
414
- * @return {String} The export of the strip object ( removed all attribute with _ )
415
- */
416
- toPublicJSON(object) {
417
- return this._webda.toPublicJSON(object);
418
- }
419
- /**
420
- * Prevent service to be serialized
421
- * @returns
422
- */
423
- toJSON() {
424
- return this._name;
425
- }
426
- /**
427
- * Will be called after all the Services are created
428
- *
429
- * @param config for the host so you can add your own route here
430
- * @abstract
431
- */
432
- async init() {
433
- // Can be overriden by subclasses if needed
434
- return this;
435
- }
436
- /**
437
- *
438
- * @param config new parameters for the service
439
- */
440
- async reinit(config) {
441
- this.parameters = this.loadParameters(config);
442
- this.computeParameters();
443
- return this.init();
444
- }
445
- /**
446
- * Emit the event with data and wait for Promise to finish if listener returned a Promise
447
- */
448
- emitSync(event, data) {
449
- return EventEmitterUtils.emitSync(this, event, data);
450
- }
451
- /**
452
- * Override to allow capturing long listeners
453
- * @override
454
- */
455
- emit(event, data) {
456
- return EventEmitterUtils.emit(this, event, data);
457
- }
458
- /**
459
- * Type the listener part
460
- * @param event
461
- * @param listener
462
- * @param queue
463
- * @returns
464
- */
465
- on(event, listener) {
466
- super.on(event, listener);
467
- return this;
468
- }
469
- /**
470
- * Listen to an event as on(...) would do except that it will be asynchronous
471
- * @param event
472
- * @param callback
473
- * @param queue Name of queue to use, can be undefined, queue name are used to define differents priorities
474
- */
475
- onAsync(event, listener, queue = undefined) {
476
- this._webda.getService("AsyncEvents").bindAsyncListener(this, event, listener, queue);
477
- }
478
- /**
479
- * Return a webda service
480
- * @param service name to retrieve
481
- */
482
- getService(service) {
483
- return this._webda.getService(service);
484
- }
485
- /**
486
- * Get service name
487
- */
488
- getName() {
489
- return this._name;
490
- }
491
- /**
492
- * Clean the service data, can only be used in test mode
493
- *
494
- * @abstract
495
- */
496
- __clean() {
497
- // @ts-ignore
498
- if (typeof global.it !== "function") {
499
- throw Error("Only for test purpose");
393
+ /**
394
+ * Return variables for replacement in openapi
395
+ * @returns the result
396
+ */
397
+ getOpenApiReplacements() {
398
+ return {};
500
399
  }
501
- return this.___cleanData();
502
- }
503
- /**
504
- * @private
505
- */
506
- ___cleanData() {
507
- return Promise.resolve();
508
- }
509
- /**
510
- *
511
- * @param level to log
512
- * @param args
513
- */
514
- log(level, ...args) {
515
- // Add the service name to avoid confusion
516
- this.logger.log(level, `[${this._name}]`, ...args);
517
- }
518
- }
400
+ /**
401
+ * Init the operations from @Operation decorators on this service
402
+ */
403
+ initOperations() {
404
+ // Read @Operation decorator metadata from Symbol.metadata
405
+ const metadata = getMetadata(this.constructor);
406
+ const operations = metadata?.["webda.operations"] || [];
407
+ if (operations.length === 0)
408
+ return;
409
+ let serviceName = this.getName();
410
+ serviceName = serviceName.substring(0, 1).toUpperCase() + serviceName.substring(1);
411
+ for (const op of operations) {
412
+ // The decorator stores context.name first, then spreads options which may override id
413
+ // We need the actual method name (context.name) for execution
414
+ const actualMethod = op._methodName;
415
+ const opName = op.id;
416
+ const opId = opName.includes(".")
417
+ ? opName
418
+ : `${serviceName}.${opName.substring(0, 1).toUpperCase() + opName.substring(1)}`;
419
+ if (!this.getOperationId(opId))
420
+ continue;
421
+ this.log("TRACE", "Adding operation", opId, "for service", this.getName());
422
+ registerOperation(opId, {
423
+ ...op,
424
+ service: this.getName(),
425
+ method: actualMethod,
426
+ input: op.input || `${this.getName()}.${actualMethod}.input`,
427
+ output: op.output || `${this.getName()}.${actualMethod}.output`,
428
+ id: opId
429
+ });
430
+ }
431
+ }
432
+ /**
433
+ * Prevent service to be serialized
434
+ * @returns the result
435
+ */
436
+ toJSON() {
437
+ return this.toString();
438
+ }
439
+ /**
440
+ * Will be called after all the Services are created
441
+ *
442
+ * @param config for the host so you can add your own route here
443
+ * @abstract
444
+ */
445
+ async init() {
446
+ // Can be overriden by subclasses if needed
447
+ return this;
448
+ }
449
+ /**
450
+ * Emit the event with data and wait for Promise to finish if listener returned a Promise
451
+ * @param event - the event name
452
+ * @param data - the data to process
453
+ */
454
+ async emit(event, data) {
455
+ await EventEmitterUtils.emit(this, event, data, (level, ...args) => this.log(level, ...args));
456
+ }
457
+ /**
458
+ * Get service name
459
+ * @returns the result string
460
+ */
461
+ getName() {
462
+ return this.name;
463
+ }
464
+ /**
465
+ * Clean the service data, can only be used in test mode
466
+ *
467
+ * @abstract
468
+ */
469
+ __clean() {
470
+ // @ts-ignore
471
+ if (typeof global.it !== "function") {
472
+ throw Error("Only for test purpose");
473
+ }
474
+ return this.___cleanData();
475
+ }
476
+ /**
477
+ * @private
478
+ * @returns the result
479
+ */
480
+ ___cleanData() {
481
+ return Promise.resolve();
482
+ }
483
+ /**
484
+ *
485
+ * @param level to log
486
+ * @param args - additional arguments
487
+ */
488
+ log(level, ...args) {
489
+ // Add the service name to avoid confusion
490
+ this.logger.log(level, `[${this.name}]`, ...args);
491
+ }
492
+ };
493
+ })();
519
494
  export { Service };
520
495
  //# sourceMappingURL=service.js.map