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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/README.md +252 -0
  2. package/lib/application/application.d.ts +437 -0
  3. package/lib/application/application.d.ts.map +1 -0
  4. package/lib/application/application.js +792 -0
  5. package/lib/application/application.js.map +1 -0
  6. package/lib/application/hooks.d.ts +34 -0
  7. package/lib/application/hooks.d.ts.map +1 -0
  8. package/lib/application/hooks.js +57 -0
  9. package/lib/application/hooks.js.map +1 -0
  10. package/lib/application/iapplication.d.ts +43 -0
  11. package/lib/application/iapplication.d.ts.map +1 -0
  12. package/lib/application/iapplication.js +2 -0
  13. package/lib/application/iapplication.js.map +1 -0
  14. package/lib/application/iconfiguration.d.ts +176 -0
  15. package/lib/application/iconfiguration.d.ts.map +1 -0
  16. package/lib/application/iconfiguration.js +8 -0
  17. package/lib/application/iconfiguration.js.map +1 -0
  18. package/lib/application/runner.d.ts +8 -0
  19. package/lib/application/runner.d.ts.map +1 -0
  20. package/lib/application/runner.js +26 -0
  21. package/lib/application/runner.js.map +1 -0
  22. package/lib/application/unpackedapplication.d.ts +104 -0
  23. package/lib/application/unpackedapplication.d.ts.map +1 -0
  24. package/lib/application/unpackedapplication.js +492 -0
  25. package/lib/application/unpackedapplication.js.map +1 -0
  26. package/lib/bin/cli-phase.d.ts +28 -0
  27. package/lib/bin/cli-phase.d.ts.map +1 -0
  28. package/lib/bin/cli-phase.js +44 -0
  29. package/lib/bin/cli-phase.js.map +1 -0
  30. package/lib/bin/cli.d.ts +161 -0
  31. package/lib/bin/cli.d.ts.map +1 -0
  32. package/lib/bin/cli.js +828 -0
  33. package/lib/bin/cli.js.map +1 -0
  34. package/lib/bin/launcher.d.ts +3 -0
  35. package/lib/bin/launcher.d.ts.map +1 -0
  36. package/lib/bin/launcher.js +50 -0
  37. package/lib/bin/launcher.js.map +1 -0
  38. package/lib/cache/cache.d.ts +33 -0
  39. package/lib/cache/cache.d.ts.map +1 -0
  40. package/lib/cache/cache.js +8 -0
  41. package/lib/cache/cache.js.map +1 -0
  42. package/lib/{services/configuration.d.ts → configurations/configuration.service.d.ts} +58 -49
  43. package/lib/configurations/configuration.service.d.ts.map +1 -0
  44. package/lib/configurations/configuration.service.js +248 -0
  45. package/lib/configurations/configuration.service.js.map +1 -0
  46. package/lib/configurations/fileconfiguration.service.d.ts +30 -0
  47. package/lib/configurations/fileconfiguration.service.d.ts.map +1 -0
  48. package/lib/configurations/fileconfiguration.service.js +65 -0
  49. package/lib/configurations/fileconfiguration.service.js.map +1 -0
  50. package/lib/configurations/kubernetesconfiguration.service.d.ts +43 -0
  51. package/lib/configurations/kubernetesconfiguration.service.d.ts.map +1 -0
  52. package/lib/configurations/kubernetesconfiguration.service.js +83 -0
  53. package/lib/configurations/kubernetesconfiguration.service.js.map +1 -0
  54. package/lib/contexts/execution.d.ts +33 -0
  55. package/lib/contexts/execution.d.ts.map +1 -0
  56. package/lib/contexts/execution.js +73 -0
  57. package/lib/contexts/execution.js.map +1 -0
  58. package/lib/contexts/globalcontext.d.ts +29 -0
  59. package/lib/contexts/globalcontext.d.ts.map +1 -0
  60. package/lib/contexts/globalcontext.js +38 -0
  61. package/lib/contexts/globalcontext.js.map +1 -0
  62. package/lib/{utils → contexts}/httpcontext.d.ts +45 -19
  63. package/lib/contexts/httpcontext.d.ts.map +1 -0
  64. package/lib/{utils → contexts}/httpcontext.js +102 -34
  65. package/lib/contexts/httpcontext.js.map +1 -0
  66. package/lib/contexts/icontext.d.ts +236 -0
  67. package/lib/contexts/icontext.d.ts.map +1 -0
  68. package/lib/contexts/icontext.js +230 -0
  69. package/lib/contexts/icontext.js.map +1 -0
  70. package/lib/contexts/operationcontext.d.ts +179 -0
  71. package/lib/contexts/operationcontext.d.ts.map +1 -0
  72. package/lib/contexts/operationcontext.js +358 -0
  73. package/lib/contexts/operationcontext.js.map +1 -0
  74. package/lib/contexts/simplecontext.d.ts +31 -0
  75. package/lib/contexts/simplecontext.d.ts.map +1 -0
  76. package/lib/contexts/simplecontext.js +45 -0
  77. package/lib/contexts/simplecontext.js.map +1 -0
  78. package/lib/contexts/webcontext.d.ts +218 -0
  79. package/lib/contexts/webcontext.d.ts.map +1 -0
  80. package/lib/contexts/webcontext.js +389 -0
  81. package/lib/contexts/webcontext.js.map +1 -0
  82. package/lib/core/authorizer.d.ts +23 -0
  83. package/lib/core/authorizer.d.ts.map +1 -0
  84. package/lib/core/authorizer.js +17 -0
  85. package/lib/core/authorizer.js.map +1 -0
  86. package/lib/core/core.d.ts +225 -0
  87. package/lib/core/core.d.ts.map +1 -0
  88. package/lib/core/core.js +576 -0
  89. package/lib/core/core.js.map +1 -0
  90. package/lib/core/hooks.d.ts +72 -0
  91. package/lib/core/hooks.d.ts.map +1 -0
  92. package/lib/core/hooks.js +73 -0
  93. package/lib/core/hooks.js.map +1 -0
  94. package/lib/core/icore.d.ts +249 -0
  95. package/lib/core/icore.d.ts.map +1 -0
  96. package/lib/core/icore.js +15 -0
  97. package/lib/core/icore.js.map +1 -0
  98. package/lib/core/instancestorage.d.ts +61 -0
  99. package/lib/core/instancestorage.d.ts.map +1 -0
  100. package/lib/core/instancestorage.js +75 -0
  101. package/lib/core/instancestorage.js.map +1 -0
  102. package/lib/core/operations.d.ts +181 -0
  103. package/lib/core/operations.d.ts.map +1 -0
  104. package/lib/core/operations.js +559 -0
  105. package/lib/core/operations.js.map +1 -0
  106. package/lib/errors/errors.d.ts +126 -0
  107. package/lib/errors/errors.d.ts.map +1 -0
  108. package/lib/errors/errors.js +165 -0
  109. package/lib/errors/errors.js.map +1 -0
  110. package/lib/events/asynceventemitter.d.ts +159 -0
  111. package/lib/events/asynceventemitter.d.ts.map +1 -0
  112. package/lib/events/asynceventemitter.js +152 -0
  113. package/lib/events/asynceventemitter.js.map +1 -0
  114. package/lib/events/events.d.ts +112 -0
  115. package/lib/events/events.d.ts.map +1 -0
  116. package/lib/events/events.js +45 -0
  117. package/lib/events/events.js.map +1 -0
  118. package/lib/index.d.ts +84 -51
  119. package/lib/index.d.ts.map +1 -0
  120. package/lib/index.js +82 -59
  121. package/lib/index.js.map +1 -1
  122. package/lib/loggers/console.service.d.ts +24 -0
  123. package/lib/loggers/console.service.d.ts.map +1 -0
  124. package/lib/loggers/console.service.js +30 -0
  125. package/lib/loggers/console.service.js.map +1 -0
  126. package/lib/loggers/file.service.d.ts +25 -0
  127. package/lib/loggers/file.service.d.ts.map +1 -0
  128. package/lib/loggers/file.service.js +33 -0
  129. package/lib/loggers/file.service.js.map +1 -0
  130. package/lib/loggers/hooks.d.ts +20 -0
  131. package/lib/loggers/hooks.d.ts.map +1 -0
  132. package/lib/loggers/hooks.js +40 -0
  133. package/lib/loggers/hooks.js.map +1 -0
  134. package/lib/loggers/ilogger.d.ts +76 -0
  135. package/lib/loggers/ilogger.d.ts.map +1 -0
  136. package/lib/loggers/ilogger.js +108 -0
  137. package/lib/loggers/ilogger.js.map +1 -0
  138. package/lib/loggers/logger.d.ts +13 -0
  139. package/lib/loggers/logger.d.ts.map +1 -0
  140. package/lib/loggers/logger.js +18 -0
  141. package/lib/loggers/logger.js.map +1 -0
  142. package/lib/loggers/memory.service.d.ts +18 -0
  143. package/lib/loggers/memory.service.d.ts.map +1 -0
  144. package/lib/loggers/memory.service.js +21 -0
  145. package/lib/loggers/memory.service.js.map +1 -0
  146. package/lib/loggers/params.d.ts +47 -0
  147. package/lib/loggers/params.d.ts.map +1 -0
  148. package/lib/loggers/params.js +56 -0
  149. package/lib/loggers/params.js.map +1 -0
  150. package/lib/metrics/metrics.d.ts +25 -0
  151. package/lib/metrics/metrics.d.ts.map +1 -0
  152. package/lib/metrics/metrics.js +51 -0
  153. package/lib/metrics/metrics.js.map +1 -0
  154. package/lib/models/aclmodel.d.ts +21 -77
  155. package/lib/models/aclmodel.d.ts.map +1 -0
  156. package/lib/models/aclmodel.js +27 -204
  157. package/lib/models/aclmodel.js.map +1 -1
  158. package/lib/models/coremodel.model.d.ts +5 -0
  159. package/lib/models/coremodel.model.d.ts.map +1 -0
  160. package/lib/models/coremodel.model.js +5 -0
  161. package/lib/models/coremodel.model.js.map +1 -0
  162. package/lib/models/decorator.d.ts +63 -0
  163. package/lib/models/decorator.d.ts.map +1 -0
  164. package/lib/models/decorator.js +63 -0
  165. package/lib/models/decorator.js.map +1 -0
  166. package/lib/models/deployment.d.ts +2 -1
  167. package/lib/models/deployment.d.ts.map +1 -0
  168. package/lib/models/ident.model.d.ts +89 -0
  169. package/lib/models/ident.model.d.ts.map +1 -0
  170. package/lib/models/ident.model.js +115 -0
  171. package/lib/models/ident.model.js.map +1 -0
  172. package/lib/models/ownermodel.model.d.ts +68 -0
  173. package/lib/models/ownermodel.model.d.ts.map +1 -0
  174. package/lib/models/ownermodel.model.js +112 -0
  175. package/lib/models/ownermodel.model.js.map +1 -0
  176. package/lib/models/registry.model.d.ts +76 -0
  177. package/lib/models/registry.model.d.ts.map +1 -0
  178. package/lib/models/registry.model.js +104 -0
  179. package/lib/models/registry.model.js.map +1 -0
  180. package/lib/models/rolemodel.model.d.ts +28 -0
  181. package/lib/models/rolemodel.model.d.ts.map +1 -0
  182. package/lib/models/rolemodel.model.js +53 -0
  183. package/lib/models/rolemodel.model.js.map +1 -0
  184. package/lib/models/simpleuser.model.d.ts +78 -0
  185. package/lib/models/simpleuser.model.d.ts.map +1 -0
  186. package/lib/models/simpleuser.model.js +123 -0
  187. package/lib/models/simpleuser.model.js.map +1 -0
  188. package/lib/models/types.d.ts +113 -0
  189. package/lib/models/types.d.ts.map +1 -0
  190. package/lib/models/types.js +2 -0
  191. package/lib/models/types.js.map +1 -0
  192. package/lib/models/user.model.d.ts +103 -0
  193. package/lib/models/user.model.d.ts.map +1 -0
  194. package/lib/models/user.model.js +125 -0
  195. package/lib/models/user.model.js.map +1 -0
  196. package/lib/queues/memoryqueue.service.d.ts +72 -0
  197. package/lib/queues/memoryqueue.service.d.ts.map +1 -0
  198. package/lib/queues/memoryqueue.service.js +136 -0
  199. package/lib/queues/memoryqueue.service.js.map +1 -0
  200. package/lib/queues/pubsubservice.d.ts +9 -6
  201. package/lib/queues/pubsubservice.d.ts.map +1 -0
  202. package/lib/queues/pubsubservice.js +5 -4
  203. package/lib/queues/pubsubservice.js.map +1 -1
  204. package/lib/queues/queueservice.d.ts +10 -11
  205. package/lib/queues/queueservice.d.ts.map +1 -0
  206. package/lib/queues/queueservice.js +48 -20
  207. package/lib/queues/queueservice.js.map +1 -1
  208. package/lib/rest/hooks.d.ts +8 -0
  209. package/lib/rest/hooks.d.ts.map +1 -0
  210. package/lib/rest/hooks.js +10 -0
  211. package/lib/rest/hooks.js.map +1 -0
  212. package/lib/rest/irest.d.ts +212 -0
  213. package/lib/rest/irest.d.ts.map +1 -0
  214. package/lib/rest/irest.js +39 -0
  215. package/lib/rest/irest.js.map +1 -0
  216. package/lib/rest/originfilter.d.ts +38 -0
  217. package/lib/rest/originfilter.d.ts.map +1 -0
  218. package/lib/rest/originfilter.js +61 -0
  219. package/lib/rest/originfilter.js.map +1 -0
  220. package/lib/rest/restoperationstransport.service.d.ts +193 -0
  221. package/lib/rest/restoperationstransport.service.d.ts.map +1 -0
  222. package/lib/rest/restoperationstransport.service.js +780 -0
  223. package/lib/rest/restoperationstransport.service.js.map +1 -0
  224. package/lib/rest/router.service.d.ts +244 -0
  225. package/lib/rest/router.service.d.ts.map +1 -0
  226. package/lib/rest/router.service.js +843 -0
  227. package/lib/rest/router.service.js.map +1 -0
  228. package/lib/schemas/hooks.d.ts +48 -0
  229. package/lib/schemas/hooks.d.ts.map +1 -0
  230. package/lib/schemas/hooks.js +152 -0
  231. package/lib/schemas/hooks.js.map +1 -0
  232. package/lib/services/audit.model.d.ts +208 -0
  233. package/lib/services/audit.model.d.ts.map +1 -0
  234. package/lib/services/audit.model.js +431 -0
  235. package/lib/services/audit.model.js.map +1 -0
  236. package/lib/services/{authentication.d.ts → authentication.service.d.ts} +140 -58
  237. package/lib/services/authentication.service.d.ts.map +1 -0
  238. package/lib/services/authentication.service.js +932 -0
  239. package/lib/services/authentication.service.js.map +1 -0
  240. package/lib/services/binary.service.d.ts +808 -0
  241. package/lib/services/binary.service.d.ts.map +1 -0
  242. package/lib/services/binary.service.js +1365 -0
  243. package/lib/services/binary.service.js.map +1 -0
  244. package/lib/services/cloudbinary.d.ts +19 -13
  245. package/lib/services/cloudbinary.d.ts.map +1 -0
  246. package/lib/services/cloudbinary.js +24 -18
  247. package/lib/services/cloudbinary.js.map +1 -1
  248. package/lib/services/command.d.ts +118 -0
  249. package/lib/services/command.d.ts.map +1 -0
  250. package/lib/services/command.js +97 -0
  251. package/lib/services/command.js.map +1 -0
  252. package/lib/services/cron.service.d.ts +142 -0
  253. package/lib/services/cron.service.d.ts.map +1 -0
  254. package/lib/services/cron.service.js +291 -0
  255. package/lib/services/cron.service.js.map +1 -0
  256. package/lib/services/{cryptoservice.d.ts → cryptoservice.service.d.ts} +77 -142
  257. package/lib/services/cryptoservice.service.d.ts.map +1 -0
  258. package/lib/services/cryptoservice.service.js +527 -0
  259. package/lib/services/cryptoservice.service.js.map +1 -0
  260. package/lib/services/debugmailer.service.d.ts +49 -0
  261. package/lib/services/debugmailer.service.d.ts.map +1 -0
  262. package/lib/services/debugmailer.service.js +66 -0
  263. package/lib/services/debugmailer.service.js.map +1 -0
  264. package/lib/services/domainservice.service.d.ts +203 -0
  265. package/lib/services/domainservice.service.d.ts.map +1 -0
  266. package/lib/services/domainservice.service.js +600 -0
  267. package/lib/services/domainservice.service.js.map +1 -0
  268. package/lib/services/httpserver.service.d.ts +248 -0
  269. package/lib/services/httpserver.service.d.ts.map +1 -0
  270. package/lib/services/httpserver.service.js +673 -0
  271. package/lib/services/httpserver.service.js.map +1 -0
  272. package/lib/services/iauthentication.d.ts +9 -0
  273. package/lib/services/iauthentication.d.ts.map +1 -0
  274. package/lib/services/iauthentication.js +2 -0
  275. package/lib/services/iauthentication.js.map +1 -0
  276. package/lib/services/icryptoservice.d.ts +127 -0
  277. package/lib/services/icryptoservice.d.ts.map +1 -0
  278. package/lib/services/icryptoservice.js +68 -0
  279. package/lib/services/icryptoservice.js.map +1 -0
  280. package/lib/services/imailer.d.ts +17 -0
  281. package/lib/services/imailer.d.ts.map +1 -0
  282. package/lib/services/imailer.js +2 -0
  283. package/lib/services/imailer.js.map +1 -0
  284. package/lib/services/iservice.d.ts +104 -0
  285. package/lib/services/iservice.d.ts.map +1 -0
  286. package/lib/services/iservice.js +63 -0
  287. package/lib/services/iservice.js.map +1 -0
  288. package/lib/services/mailer.service.d.ts +220 -0
  289. package/lib/services/mailer.service.d.ts.map +1 -0
  290. package/lib/services/mailer.service.js +251 -0
  291. package/lib/services/mailer.service.js.map +1 -0
  292. package/lib/services/{notificationservice.d.ts → notificationservice.service.d.ts} +10 -10
  293. package/lib/services/notificationservice.service.d.ts.map +1 -0
  294. package/lib/services/{notificationservice.js → notificationservice.service.js} +24 -12
  295. package/lib/services/notificationservice.service.js.map +1 -0
  296. package/lib/services/oauth.d.ts +58 -31
  297. package/lib/services/oauth.d.ts.map +1 -0
  298. package/lib/services/oauth.js +365 -251
  299. package/lib/services/oauth.js.map +1 -1
  300. package/lib/services/operationstransport.d.ts +65 -0
  301. package/lib/services/operationstransport.d.ts.map +1 -0
  302. package/lib/services/operationstransport.js +103 -0
  303. package/lib/services/operationstransport.js.map +1 -0
  304. package/lib/services/{prometheus.d.ts → prometheus.service.d.ts} +13 -11
  305. package/lib/services/prometheus.service.d.ts.map +1 -0
  306. package/lib/services/prometheus.service.js +203 -0
  307. package/lib/services/prometheus.service.js.map +1 -0
  308. package/lib/services/resource.service.d.ts +121 -0
  309. package/lib/services/resource.service.d.ts.map +1 -0
  310. package/lib/services/resource.service.js +301 -0
  311. package/lib/services/resource.service.js.map +1 -0
  312. package/lib/services/service.d.ts +88 -189
  313. package/lib/services/service.d.ts.map +1 -0
  314. package/lib/services/service.js +407 -432
  315. package/lib/services/service.js.map +1 -1
  316. package/lib/services/servicecommands.d.ts +99 -0
  317. package/lib/services/servicecommands.d.ts.map +1 -0
  318. package/lib/services/servicecommands.js +165 -0
  319. package/lib/services/servicecommands.js.map +1 -0
  320. package/lib/services/serviceparameters.d.ts +33 -0
  321. package/lib/services/serviceparameters.d.ts.map +1 -0
  322. package/lib/services/serviceparameters.js +79 -0
  323. package/lib/services/serviceparameters.js.map +1 -0
  324. package/lib/{utils → session}/cookie.d.ts +32 -18
  325. package/lib/session/cookie.d.ts.map +1 -0
  326. package/lib/{utils → session}/cookie.js +76 -23
  327. package/lib/session/cookie.js.map +1 -0
  328. package/lib/session/manager.model.d.ts +71 -0
  329. package/lib/session/manager.model.d.ts.map +1 -0
  330. package/lib/session/manager.model.js +155 -0
  331. package/lib/session/manager.model.js.map +1 -0
  332. package/lib/session/session.d.ts +57 -0
  333. package/lib/session/session.d.ts.map +1 -0
  334. package/lib/session/session.js +126 -0
  335. package/lib/session/session.js.map +1 -0
  336. package/lib/stores/istore.d.ts +99 -0
  337. package/lib/stores/istore.d.ts.map +1 -0
  338. package/lib/stores/istore.js +26 -0
  339. package/lib/stores/istore.js.map +1 -0
  340. package/lib/stores/memory.service.d.ts +114 -0
  341. package/lib/stores/memory.service.d.ts.map +1 -0
  342. package/lib/stores/memory.service.js +343 -0
  343. package/lib/stores/memory.service.js.map +1 -0
  344. package/lib/stores/store.d.ts +127 -768
  345. package/lib/stores/store.d.ts.map +1 -0
  346. package/lib/stores/store.js +258 -1718
  347. package/lib/stores/store.js.map +1 -1
  348. package/lib/templates/templates.d.ts +39 -0
  349. package/lib/templates/templates.d.ts.map +1 -0
  350. package/lib/templates/templates.js +92 -0
  351. package/lib/templates/templates.js.map +1 -0
  352. package/lib/test/application.d.ts +174 -0
  353. package/lib/test/application.d.ts.map +1 -0
  354. package/lib/test/application.js +288 -0
  355. package/lib/test/application.js.map +1 -0
  356. package/lib/test/asyncstorage.d.ts +16 -0
  357. package/lib/test/asyncstorage.d.ts.map +1 -0
  358. package/lib/test/asyncstorage.js +32 -0
  359. package/lib/test/asyncstorage.js.map +1 -0
  360. package/lib/test/core.d.ts +63 -0
  361. package/lib/test/core.d.ts.map +1 -0
  362. package/lib/test/core.js +190 -0
  363. package/lib/test/core.js.map +1 -0
  364. package/lib/test/index.d.ts +7 -0
  365. package/lib/test/index.d.ts.map +1 -0
  366. package/lib/test/index.js +8 -0
  367. package/lib/test/index.js.map +1 -0
  368. package/lib/test/internal.d.ts +34 -0
  369. package/lib/test/internal.d.ts.map +1 -0
  370. package/lib/test/internal.js +156 -0
  371. package/lib/test/internal.js.map +1 -0
  372. package/lib/test/objects.d.ts +318 -0
  373. package/lib/test/objects.d.ts.map +1 -0
  374. package/lib/test/objects.js +443 -0
  375. package/lib/test/objects.js.map +1 -0
  376. package/lib/utils/abstractdeployer.d.ts +5 -2
  377. package/lib/utils/abstractdeployer.d.ts.map +1 -0
  378. package/lib/utils/abstractdeployer.js +3 -0
  379. package/lib/utils/abstractdeployer.js.map +1 -1
  380. package/package.json +85 -56
  381. package/test/cachedapp/webda.config.json +1 -5
  382. package/test/config-cached.json +1 -5
  383. package/test/config.json +6 -99
  384. package/test/data/.env +1 -0
  385. package/test/my-cnf.json +9 -0
  386. package/webda.module.json +3462 -2231
  387. package/lib/application.d.ts +0 -876
  388. package/lib/application.js +0 -741
  389. package/lib/application.js.map +0 -1
  390. package/lib/application.spec.d.ts +0 -1
  391. package/lib/application.spec.js +0 -234
  392. package/lib/application.spec.js.map +0 -1
  393. package/lib/core.d.ts +0 -740
  394. package/lib/core.js +0 -1310
  395. package/lib/core.js.map +0 -1
  396. package/lib/core.spec.d.ts +0 -1
  397. package/lib/core.spec.js +0 -761
  398. package/lib/core.spec.js.map +0 -1
  399. package/lib/errors.d.ts +0 -65
  400. package/lib/errors.js +0 -113
  401. package/lib/errors.js.map +0 -1
  402. package/lib/errors.spec.d.ts +0 -1
  403. package/lib/errors.spec.js +0 -33
  404. package/lib/errors.spec.js.map +0 -1
  405. package/lib/models/aclmodel.spec.d.ts +0 -1
  406. package/lib/models/aclmodel.spec.js +0 -187
  407. package/lib/models/aclmodel.spec.js.map +0 -1
  408. package/lib/models/coremodel.d.ts +0 -887
  409. package/lib/models/coremodel.js +0 -1208
  410. package/lib/models/coremodel.js.map +0 -1
  411. package/lib/models/coremodel.spec.d.ts +0 -1
  412. package/lib/models/coremodel.spec.js +0 -462
  413. package/lib/models/coremodel.spec.js.map +0 -1
  414. package/lib/models/ident.d.ts +0 -53
  415. package/lib/models/ident.js +0 -40
  416. package/lib/models/ident.js.map +0 -1
  417. package/lib/models/ident.spec.d.ts +0 -1
  418. package/lib/models/ident.spec.js +0 -43
  419. package/lib/models/ident.spec.js.map +0 -1
  420. package/lib/models/ownermodel.d.ts +0 -50
  421. package/lib/models/ownermodel.js +0 -65
  422. package/lib/models/ownermodel.js.map +0 -1
  423. package/lib/models/ownermodel.spec.d.ts +0 -1
  424. package/lib/models/ownermodel.spec.js +0 -191
  425. package/lib/models/ownermodel.spec.js.map +0 -1
  426. package/lib/models/relations.d.ts +0 -181
  427. package/lib/models/relations.js +0 -157
  428. package/lib/models/relations.js.map +0 -1
  429. package/lib/models/relations.spec.d.ts +0 -12
  430. package/lib/models/relations.spec.js +0 -224
  431. package/lib/models/relations.spec.js.map +0 -1
  432. package/lib/models/rolemodel.d.ts +0 -10
  433. package/lib/models/rolemodel.js +0 -35
  434. package/lib/models/rolemodel.js.map +0 -1
  435. package/lib/models/rolemodel.spec.d.ts +0 -1
  436. package/lib/models/rolemodel.spec.js +0 -86
  437. package/lib/models/rolemodel.spec.js.map +0 -1
  438. package/lib/models/user.d.ts +0 -100
  439. package/lib/models/user.js +0 -157
  440. package/lib/models/user.js.map +0 -1
  441. package/lib/models/user.spec.d.ts +0 -1
  442. package/lib/models/user.spec.js +0 -88
  443. package/lib/models/user.spec.js.map +0 -1
  444. package/lib/queues/filequeue.d.ts +0 -58
  445. package/lib/queues/filequeue.js +0 -131
  446. package/lib/queues/filequeue.js.map +0 -1
  447. package/lib/queues/filequeue.spec.d.ts +0 -1
  448. package/lib/queues/filequeue.spec.js +0 -78
  449. package/lib/queues/filequeue.spec.js.map +0 -1
  450. package/lib/queues/memoryqueue.d.ts +0 -45
  451. package/lib/queues/memoryqueue.js +0 -81
  452. package/lib/queues/memoryqueue.js.map +0 -1
  453. package/lib/queues/memoryqueue.spec.d.ts +0 -1
  454. package/lib/queues/memoryqueue.spec.js +0 -192
  455. package/lib/queues/memoryqueue.spec.js.map +0 -1
  456. package/lib/queues/queue.spec.d.ts +0 -5
  457. package/lib/queues/queue.spec.js +0 -55
  458. package/lib/queues/queue.spec.js.map +0 -1
  459. package/lib/router.d.ts +0 -172
  460. package/lib/router.js +0 -419
  461. package/lib/router.js.map +0 -1
  462. package/lib/router.spec.d.ts +0 -1
  463. package/lib/router.spec.js +0 -229
  464. package/lib/router.spec.js.map +0 -1
  465. package/lib/services/asyncevents.d.ts +0 -151
  466. package/lib/services/asyncevents.js +0 -217
  467. package/lib/services/asyncevents.js.map +0 -1
  468. package/lib/services/asyncevents.spec.d.ts +0 -1
  469. package/lib/services/asyncevents.spec.js +0 -118
  470. package/lib/services/asyncevents.spec.js.map +0 -1
  471. package/lib/services/authentication.js +0 -772
  472. package/lib/services/authentication.js.map +0 -1
  473. package/lib/services/authentication.spec.d.ts +0 -1
  474. package/lib/services/authentication.spec.js +0 -458
  475. package/lib/services/authentication.spec.js.map +0 -1
  476. package/lib/services/binary.d.ts +0 -549
  477. package/lib/services/binary.js +0 -986
  478. package/lib/services/binary.js.map +0 -1
  479. package/lib/services/binary.spec.d.ts +0 -44
  480. package/lib/services/binary.spec.js +0 -438
  481. package/lib/services/binary.spec.js.map +0 -1
  482. package/lib/services/cloudbinary.spec.d.ts +0 -13
  483. package/lib/services/cloudbinary.spec.js +0 -192
  484. package/lib/services/cloudbinary.spec.js.map +0 -1
  485. package/lib/services/configuration.js +0 -178
  486. package/lib/services/configuration.js.map +0 -1
  487. package/lib/services/configuration.spec.d.ts +0 -1
  488. package/lib/services/configuration.spec.js +0 -87
  489. package/lib/services/configuration.spec.js.map +0 -1
  490. package/lib/services/cron.d.ts +0 -73
  491. package/lib/services/cron.js +0 -141
  492. package/lib/services/cron.js.map +0 -1
  493. package/lib/services/cron.spec.d.ts +0 -1
  494. package/lib/services/cron.spec.js +0 -76
  495. package/lib/services/cron.spec.js.map +0 -1
  496. package/lib/services/cryptoservice.js +0 -434
  497. package/lib/services/cryptoservice.js.map +0 -1
  498. package/lib/services/cryptoservice.spec.d.ts +0 -1
  499. package/lib/services/cryptoservice.spec.js +0 -177
  500. package/lib/services/cryptoservice.spec.js.map +0 -1
  501. package/lib/services/debugmailer.d.ts +0 -36
  502. package/lib/services/debugmailer.js +0 -52
  503. package/lib/services/debugmailer.js.map +0 -1
  504. package/lib/services/debugmailer.spec.d.ts +0 -1
  505. package/lib/services/debugmailer.spec.js +0 -29
  506. package/lib/services/debugmailer.spec.js.map +0 -1
  507. package/lib/services/domainservice.d.ts +0 -152
  508. package/lib/services/domainservice.js +0 -881
  509. package/lib/services/domainservice.js.map +0 -1
  510. package/lib/services/domainservice.spec.d.ts +0 -1
  511. package/lib/services/domainservice.spec.js +0 -401
  512. package/lib/services/domainservice.spec.js.map +0 -1
  513. package/lib/services/filebinary.d.ts +0 -133
  514. package/lib/services/filebinary.js +0 -371
  515. package/lib/services/filebinary.js.map +0 -1
  516. package/lib/services/filebinary.spec.d.ts +0 -21
  517. package/lib/services/filebinary.spec.js +0 -415
  518. package/lib/services/filebinary.spec.js.map +0 -1
  519. package/lib/services/fileconfiguration.d.ts +0 -22
  520. package/lib/services/fileconfiguration.js +0 -48
  521. package/lib/services/fileconfiguration.js.map +0 -1
  522. package/lib/services/fileconfiguration.spec.d.ts +0 -1
  523. package/lib/services/fileconfiguration.spec.js +0 -177
  524. package/lib/services/fileconfiguration.spec.js.map +0 -1
  525. package/lib/services/invitationservice.d.ts +0 -222
  526. package/lib/services/invitationservice.js +0 -526
  527. package/lib/services/invitationservice.js.map +0 -1
  528. package/lib/services/invitationservice.spec.d.ts +0 -1
  529. package/lib/services/invitationservice.spec.js +0 -516
  530. package/lib/services/invitationservice.spec.js.map +0 -1
  531. package/lib/services/kubernetesconfiguration.d.ts +0 -26
  532. package/lib/services/kubernetesconfiguration.js +0 -54
  533. package/lib/services/kubernetesconfiguration.js.map +0 -1
  534. package/lib/services/kubernetesconfiguration.spec.d.ts +0 -1
  535. package/lib/services/kubernetesconfiguration.spec.js +0 -147
  536. package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
  537. package/lib/services/mailer.d.ts +0 -165
  538. package/lib/services/mailer.js +0 -176
  539. package/lib/services/mailer.js.map +0 -1
  540. package/lib/services/mailer.spec.d.ts +0 -1
  541. package/lib/services/mailer.spec.js +0 -144
  542. package/lib/services/mailer.spec.js.map +0 -1
  543. package/lib/services/notificationservice.js.map +0 -1
  544. package/lib/services/notificationservice.spec.d.ts +0 -1
  545. package/lib/services/notificationservice.spec.js +0 -78
  546. package/lib/services/notificationservice.spec.js.map +0 -1
  547. package/lib/services/oauth.spec.d.ts +0 -1
  548. package/lib/services/oauth.spec.js +0 -184
  549. package/lib/services/oauth.spec.js.map +0 -1
  550. package/lib/services/prometheus.js +0 -160
  551. package/lib/services/prometheus.js.map +0 -1
  552. package/lib/services/prometheus.spec.d.ts +0 -1
  553. package/lib/services/prometheus.spec.js +0 -57
  554. package/lib/services/prometheus.spec.js.map +0 -1
  555. package/lib/services/resource.d.ts +0 -87
  556. package/lib/services/resource.js +0 -156
  557. package/lib/services/resource.js.map +0 -1
  558. package/lib/services/resource.spec.d.ts +0 -1
  559. package/lib/services/resource.spec.js +0 -122
  560. package/lib/services/resource.spec.js.map +0 -1
  561. package/lib/services/service.spec.d.ts +0 -1
  562. package/lib/services/service.spec.js +0 -268
  563. package/lib/services/service.spec.js.map +0 -1
  564. package/lib/stores/aggregator.d.ts +0 -41
  565. package/lib/stores/aggregator.js +0 -80
  566. package/lib/stores/aggregator.js.map +0 -1
  567. package/lib/stores/aliasstore.d.ts +0 -108
  568. package/lib/stores/aliasstore.js +0 -168
  569. package/lib/stores/aliasstore.js.map +0 -1
  570. package/lib/stores/aliasstore.spec.d.ts +0 -11
  571. package/lib/stores/aliasstore.spec.js +0 -89
  572. package/lib/stores/aliasstore.spec.js.map +0 -1
  573. package/lib/stores/file.d.ts +0 -107
  574. package/lib/stores/file.js +0 -188
  575. package/lib/stores/file.js.map +0 -1
  576. package/lib/stores/file.spec.d.ts +0 -19
  577. package/lib/stores/file.spec.js +0 -232
  578. package/lib/stores/file.spec.js.map +0 -1
  579. package/lib/stores/mapper.d.ts +0 -149
  580. package/lib/stores/mapper.js +0 -293
  581. package/lib/stores/mapper.js.map +0 -1
  582. package/lib/stores/mapper.spec.d.ts +0 -1
  583. package/lib/stores/mapper.spec.js +0 -160
  584. package/lib/stores/mapper.spec.js.map +0 -1
  585. package/lib/stores/memory.d.ts +0 -151
  586. package/lib/stores/memory.js +0 -371
  587. package/lib/stores/memory.js.map +0 -1
  588. package/lib/stores/memory.spec.d.ts +0 -20
  589. package/lib/stores/memory.spec.js +0 -328
  590. package/lib/stores/memory.spec.js.map +0 -1
  591. package/lib/stores/modelmapper.d.ts +0 -61
  592. package/lib/stores/modelmapper.js +0 -199
  593. package/lib/stores/modelmapper.js.map +0 -1
  594. package/lib/stores/store.spec.d.ts +0 -65
  595. package/lib/stores/store.spec.js +0 -906
  596. package/lib/stores/store.spec.js.map +0 -1
  597. package/lib/test.d.ts +0 -162
  598. package/lib/test.js +0 -399
  599. package/lib/test.js.map +0 -1
  600. package/lib/unpackedapplication.d.ts +0 -76
  601. package/lib/unpackedapplication.js +0 -299
  602. package/lib/unpackedapplication.js.map +0 -1
  603. package/lib/utils/abstractdeployer.spec.d.ts +0 -1
  604. package/lib/utils/abstractdeployer.spec.js +0 -21
  605. package/lib/utils/abstractdeployer.spec.js.map +0 -1
  606. package/lib/utils/case.d.ts +0 -7
  607. package/lib/utils/case.js +0 -43
  608. package/lib/utils/case.js.map +0 -1
  609. package/lib/utils/case.spec.d.ts +0 -1
  610. package/lib/utils/case.spec.js +0 -50
  611. package/lib/utils/case.spec.js.map +0 -1
  612. package/lib/utils/context.d.ts +0 -462
  613. package/lib/utils/context.js +0 -732
  614. package/lib/utils/context.js.map +0 -1
  615. package/lib/utils/context.spec.d.ts +0 -9
  616. package/lib/utils/context.spec.js +0 -372
  617. package/lib/utils/context.spec.js.map +0 -1
  618. package/lib/utils/cookie.js.map +0 -1
  619. package/lib/utils/cookie.spec.d.ts +0 -1
  620. package/lib/utils/cookie.spec.js +0 -78
  621. package/lib/utils/cookie.spec.js.map +0 -1
  622. package/lib/utils/esm.d.ts +0 -13
  623. package/lib/utils/esm.js +0 -19
  624. package/lib/utils/esm.js.map +0 -1
  625. package/lib/utils/httpcontext.js.map +0 -1
  626. package/lib/utils/httpcontext.spec.d.ts +0 -4
  627. package/lib/utils/httpcontext.spec.js +0 -77
  628. package/lib/utils/httpcontext.spec.js.map +0 -1
  629. package/lib/utils/logger.d.ts +0 -91
  630. package/lib/utils/logger.js +0 -121
  631. package/lib/utils/logger.js.map +0 -1
  632. package/lib/utils/logger.spec.d.ts +0 -1
  633. package/lib/utils/logger.spec.js +0 -48
  634. package/lib/utils/logger.spec.js.map +0 -1
  635. package/lib/utils/serializers.d.ts +0 -161
  636. package/lib/utils/serializers.js +0 -420
  637. package/lib/utils/serializers.js.map +0 -1
  638. package/lib/utils/serializers.spec.d.ts +0 -1
  639. package/lib/utils/serializers.spec.js +0 -313
  640. package/lib/utils/serializers.spec.js.map +0 -1
  641. package/lib/utils/session.d.ts +0 -126
  642. package/lib/utils/session.js +0 -166
  643. package/lib/utils/session.js.map +0 -1
  644. package/lib/utils/session.spec.d.ts +0 -1
  645. package/lib/utils/session.spec.js +0 -71
  646. package/lib/utils/session.spec.js.map +0 -1
  647. package/lib/utils/throttler.d.ts +0 -102
  648. package/lib/utils/throttler.js +0 -168
  649. package/lib/utils/throttler.js.map +0 -1
  650. package/lib/utils/throttler.spec.d.ts +0 -1
  651. package/lib/utils/throttler.spec.js +0 -55
  652. package/lib/utils/throttler.spec.js.map +0 -1
  653. package/lib/utils/waiter.d.ts +0 -93
  654. package/lib/utils/waiter.js +0 -148
  655. package/lib/utils/waiter.js.map +0 -1
  656. package/lib/utils/waiter.spec.d.ts +0 -1
  657. package/lib/utils/waiter.spec.js +0 -98
  658. package/lib/utils/waiter.spec.js.map +0 -1
  659. package/test/config-file-missing-file-no-default.json +0 -44
  660. package/test/config-file-missing-file.json +0 -55
  661. package/test/config-file-no-reload.json +0 -69
  662. package/test/config-file-reload.json +0 -68
  663. package/test/config-invitation.json +0 -63
  664. package/test/config-kube-reload.json +0 -68
  665. package/test/config-reload.json +0 -66
  666. package/test/config.old.json +0 -152
  667. package/test/jsonutils/mdocs.yaml +0 -56
  668. package/test/jsonutils/test.json +0 -3
  669. package/test/jsonutils/test.yml +0 -5
  670. package/test/moddas/annotatedservice.js +0 -23
  671. package/test/moddas/debugmailer.js +0 -13
  672. package/test/moddas/fakeservice.js +0 -4
  673. package/test/moddas/voidstore.js +0 -66
  674. package/test/models/ident.js +0 -36
  675. package/test/models/task.js +0 -42
@@ -0,0 +1,792 @@
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 { WorkerOutput } from "@webda/workout";
36
+ import { setLogContext } from "../loggers/hooks.js";
37
+ import { FileUtils, State } from "@webda/utils";
38
+ import { existsSync, lstatSync, readFileSync } from "node:fs";
39
+ import { join, resolve, dirname, isAbsolute } from "node:path";
40
+ import * as WebdaError from "../errors/errors.js";
41
+ import { ServiceParameters } from "../services/serviceparameters.js";
42
+ import { isModelClass } from "@webda/models";
43
+ import { InstanceCache } from "../cache/cache.js";
44
+ /**
45
+ * Define a static member that only belongs to `target`
46
+ *
47
+ * Static members are inherited by subclasses, so a factory installed on a modda would be used
48
+ * by any subclass of it. The accessor returns `value` for `target` and `fallback` for any
49
+ * subclass, and lets a subclass assign its own value.
50
+ * @param target - the class owning the member
51
+ * @param property - the static member name
52
+ * @param value - the value for `target`
53
+ * @param fallback - the value for subclasses of `target`
54
+ */
55
+ function defineOwnStatic(target, property, value, fallback) {
56
+ Object.defineProperty(target, property, {
57
+ configurable: true,
58
+ enumerable: false,
59
+ get() {
60
+ return this === target ? value : fallback;
61
+ },
62
+ set(newValue) {
63
+ Object.defineProperty(this, property, { value: newValue, writable: true, configurable: true, enumerable: true });
64
+ }
65
+ });
66
+ }
67
+ /**
68
+ * Install `filterParameters` and `createConfiguration` on a modda or bean class
69
+ *
70
+ * Both are bound to `target`: a subclass that is not registered itself would otherwise inherit them and
71
+ * have its own parameters filtered out by the parent schema. Such a subclass gets the parent configuration
72
+ * class without filtering.
73
+ * @param target - the modda or bean class
74
+ * @param configurationClass - the parameters class to instantiate
75
+ * @param schema - the parameters JSON schema, used to filter the parameters
76
+ */
77
+ export function installConfigurationFactories(target, configurationClass = ServiceParameters, schema) {
78
+ const filterParameters = (params = {}) => {
79
+ if (!schema?.properties) {
80
+ return params;
81
+ }
82
+ const filteredParams = {};
83
+ for (const field of Object.keys(schema.properties)) {
84
+ if (params[field] !== undefined) {
85
+ filteredParams[field] = params[field];
86
+ }
87
+ }
88
+ return filteredParams;
89
+ };
90
+ defineOwnStatic(target, "filterParameters", filterParameters, (params = {}) => params);
91
+ defineOwnStatic(target, "createConfiguration", (params = {}) => new configurationClass().load(filterParameters(params)), (params = {}) => new configurationClass().load(params));
92
+ }
93
+ // We should not be able to set initial from outside
94
+ const ApplicationState = State;
95
+ /**
96
+ * Map a Webda Application
97
+ *
98
+ * It allows to:
99
+ * - Analyse imported modules
100
+ * - Scan code for Modda and generate the webda.config.json
101
+ * - Compile and Watch
102
+ * - Migrate from old configuration
103
+ * - List deployments
104
+ *
105
+ *
106
+ * @category CoreFeatures
107
+ */
108
+ let Application = (() => {
109
+ let _instanceExtraInitializers = [];
110
+ let _load_decorators;
111
+ return class Application {
112
+ static {
113
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
114
+ _load_decorators = [ApplicationState({ start: "loading", end: "ready" }), InstanceCache()];
115
+ __esDecorate(this, null, _load_decorators, { kind: "method", name: "load", static: false, private: false, access: { has: obj => "load" in obj, get: obj => obj.load }, metadata: _metadata }, null, _instanceExtraInitializers);
116
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
117
+ }
118
+ /**
119
+ * Get Application root path
120
+ */
121
+ applicationPath = __runInitializers(this, _instanceExtraInitializers);
122
+ /**
123
+ * Base configuration loaded from webda.config.json
124
+ */
125
+ baseConfiguration;
126
+ /**
127
+ * Current deployment
128
+ */
129
+ currentDeployment;
130
+ /**
131
+ * Contains definitions of current application
132
+ */
133
+ appModule = {
134
+ moddas: {},
135
+ models: {},
136
+ schemas: {}
137
+ };
138
+ /**
139
+ * Deployers type registry
140
+ */
141
+ deployers = {};
142
+ /**
143
+ * Moddas registry
144
+ */
145
+ moddas = {};
146
+ /**
147
+ * Models type registry
148
+ */
149
+ models = {};
150
+ /**
151
+ * Beans registry
152
+ */
153
+ beans = {};
154
+ /**
155
+ * Behaviors registry
156
+ *
157
+ * Populated by `loadModule` from the top-level `behaviors` map of every
158
+ * loaded `webda.module.json`. Each entry holds the metadata blob emitted by
159
+ * the compiler so downstream consumers (DomainService, REST transport, etc.)
160
+ * can introspect the Behavior's declared actions and shape.
161
+ *
162
+ * The Behavior class itself is NOT loaded at runtime: the per-model
163
+ * `__hydrateBehaviors` method emitted at compile time by
164
+ * `@webda/content-mapper` holds a static import to the class, so the runtime
165
+ * never needs to look it up by identifier.
166
+ */
167
+ behaviors = {};
168
+ /**
169
+ * Class Logger
170
+ */
171
+ logger;
172
+ /**
173
+ * Detect if running as workspace
174
+ */
175
+ workspacesPath = "";
176
+ /**
177
+ * Configuration file
178
+ */
179
+ configurationFile;
180
+ /**
181
+ * Current deployment file
182
+ */
183
+ deploymentFile;
184
+ /**
185
+ * Create a new Application
186
+ * @param file - file path or unpacked configuration to load from
187
+ * @param logger - the logger instance
188
+ */
189
+ constructor(file, logger = undefined) {
190
+ this.logger = logger || new WorkerOutput();
191
+ setLogContext(this.logger);
192
+ // If configuration is a programmatic object (usually for tests)
193
+ if (typeof file !== "string") {
194
+ this.baseConfiguration = { parameters: {}, ...file };
195
+ // Still want to ensure default configuration
196
+ this.applicationPath = process.cwd();
197
+ return;
198
+ }
199
+ if (!existsSync(file)) {
200
+ throw new WebdaError.CodeError("NO_WEBDA_FOLDER", `Not a webda application folder or webda.config.(ya?ml|jsonc?) file: unexisting ${file}`);
201
+ }
202
+ // Check if file is a file or folder
203
+ if (lstatSync(file).isDirectory()) {
204
+ file = FileUtils.getConfigurationFile(join(file, "webda.config"));
205
+ }
206
+ this.configurationFile = file;
207
+ this.applicationPath = resolve(dirname(file));
208
+ }
209
+ /**
210
+ * Run the application
211
+ * @returns the result
212
+ */
213
+ async run() {
214
+ return Application._runner(this);
215
+ }
216
+ /**
217
+ * Pluggable runner — set by runner.ts to avoid circular dependency with Core.
218
+ * @internal
219
+ */
220
+ static _runner;
221
+ /**
222
+ * Import all required modules
223
+ * @returns the result
224
+ */
225
+ async load() {
226
+ await this.loadConfiguration(this.configurationFile);
227
+ await this.loadModule(this.baseConfiguration.cachedModules);
228
+ return this;
229
+ }
230
+ /**
231
+ * Allow subclass to implement migration
232
+ *
233
+ * @param file - the file path
234
+ * @returns the result
235
+ */
236
+ async loadConfiguration(file) {
237
+ // Check if file is a file or folder
238
+ if (file && !existsSync(file)) {
239
+ throw new WebdaError.CodeError("NO_WEBDA_FOLDER", `Not a webda application folder or webda.config.jsonc or webda.config.json file: ${file}`);
240
+ }
241
+ try {
242
+ this.baseConfiguration ??= file ? FileUtils.load(file) : {};
243
+ if (this.baseConfiguration.version !== 4) {
244
+ this.log("ERROR", "Your configuration file should use version 4, see https://docs.webda.io/");
245
+ }
246
+ }
247
+ catch (err) {
248
+ throw new WebdaError.CodeError("INVALID_WEBDA_CONFIG", `Cannot parse JSON of: ${file}`);
249
+ }
250
+ }
251
+ /**
252
+ * Get a schema from a type
253
+ *
254
+ * Schema should be precomputed in the default app
255
+ * @param type - the type to look up
256
+ * @returns the result
257
+ */
258
+ getSchema(type) {
259
+ // "?" suffix means optional input — return the same schema without required fields
260
+ if (type.endsWith("?")) {
261
+ const base = this.getSchema(type.slice(0, -1));
262
+ if (!base)
263
+ return undefined;
264
+ const copy = { ...base };
265
+ delete copy.required;
266
+ return copy;
267
+ }
268
+ const cm = this.baseConfiguration.cachedModules;
269
+ return (cm.schemas[type] || cm.models?.[type]?.Schemas?.Input || cm.moddas?.[type]?.Schema || cm.beans?.[type]?.Schema);
270
+ }
271
+ /**
272
+ * Get schemas
273
+ * @returns the result
274
+ */
275
+ getSchemas() {
276
+ return this.baseConfiguration.cachedModules.schemas;
277
+ }
278
+ /**
279
+ * Check if application has cached modules
280
+ *
281
+ * When deployed the application contains cachedModules in the `webda.config.json`
282
+ * It allows to avoid the search for `webda.module.json` inside node_modules and
283
+ * take the schema from the cached modules also
284
+ * @returns true if the condition is met
285
+ */
286
+ isCached() {
287
+ return true;
288
+ }
289
+ /**
290
+ * Retrieve specific webda conf from package.json
291
+ *
292
+ * In case of workspaces the object is combined
293
+ * @returns the result
294
+ */
295
+ getPackageWebda() {
296
+ return (this.baseConfiguration.cachedModules.project?.webda || {
297
+ namespace: "Webda"
298
+ });
299
+ }
300
+ /**
301
+ * Retrieve content of package.json
302
+ * @returns the result
303
+ */
304
+ getPackageDescription() {
305
+ return this.baseConfiguration.cachedModules?.project?.package || {};
306
+ }
307
+ /**
308
+ * Log information
309
+ *
310
+ * @param level to log for
311
+ * @param args anything to display same as console.log
312
+ */
313
+ log(level, ...args) {
314
+ this.logger?.log(level, ...args);
315
+ }
316
+ /**
317
+ * Get current logger
318
+ * @returns the result
319
+ */
320
+ getWorkerOutput() {
321
+ return this.logger;
322
+ }
323
+ /**
324
+ * Return the current app path
325
+ *
326
+ * @param subpath to append to
327
+ * @returns the result string
328
+ */
329
+ getPath(subpath = undefined) {
330
+ if (subpath && subpath !== "") {
331
+ if (isAbsolute(subpath)) {
332
+ return subpath;
333
+ }
334
+ return join(this.applicationPath, subpath);
335
+ }
336
+ return this.applicationPath;
337
+ }
338
+ /**
339
+ * Add a new service
340
+ *
341
+ * @param name - the name to use
342
+ * @param service - the service instance
343
+ * @returns this for chaining
344
+ */
345
+ addModda(name, service) {
346
+ this.log("TRACE", "Registering service", name);
347
+ this.moddas[name] = service;
348
+ return this;
349
+ }
350
+ /**
351
+ *
352
+ * @param section - the section name
353
+ * @param name - the name to use
354
+ * @param caseSensitive - whether matching is case sensitive
355
+ * @returns true if the condition is met
356
+ */
357
+ hasWebdaObject(section, name) {
358
+ let objectName = this.completeNamespace(name);
359
+ this.log("TRACE", `Search for ${section} ${objectName}`);
360
+ if (!this[section][objectName] && name.indexOf("/") === -1) {
361
+ objectName = `Webda/${name}`;
362
+ }
363
+ return this[section][objectName] !== undefined;
364
+ }
365
+ /**
366
+ * Return true if `model` is the one that wins when consumers look up the
367
+ * short name in the current namespace. Used by transports (REST, GraphQL,
368
+ * gRPC) so only one model gets exposed at a given URL / type when the app
369
+ * overrides a framework-provided class — e.g. WebdaSample/User shadowing
370
+ * Webda/User at `/users`.
371
+ *
372
+ * A model is "final" when either:
373
+ * - it is the one resolved by `completeNamespace(shortName)`, or
374
+ * - no other model exists with the same short name in the current namespace.
375
+ * @param model - the fully-qualified model identifier (e.g. "Webda/User")
376
+ * @returns true when `model` should be treated as the canonical version
377
+ */
378
+ isFinalModel(model) {
379
+ if (!this.models[model]) {
380
+ return false;
381
+ }
382
+ const name = model.split("/").pop();
383
+ const resolved = this.completeNamespace(name);
384
+ // Only a model that the current namespace resolves to is exposed. If the
385
+ // app defines its own version (e.g. WebdaSample/User shadowing Webda/User)
386
+ // just that one wins; otherwise the framework-provided model stays internal.
387
+ return resolved === model;
388
+ }
389
+ /**
390
+ *
391
+ * @param section - the section name
392
+ * @param name - the name to use
393
+ * @returns the result
394
+ */
395
+ getWebdaObject(section, name) {
396
+ let objectName = this.completeNamespace(name);
397
+ this.log("TRACE", `Search for ${section} ${objectName}`);
398
+ if (!this[section][objectName] && name.indexOf("/") === -1) {
399
+ const namespaced = this.completeNamespace(name);
400
+ objectName = this[section][namespaced] ? `${namespaced}/${name}` : `Webda/${name}`;
401
+ }
402
+ if (!this[section][objectName]) {
403
+ if (Object.keys(this[section]).includes(objectName)) {
404
+ throw Error(`Null ${section.substring(0, section.length - 1)} ${objectName}`);
405
+ }
406
+ throw Error(`Undefined ${section.substring(0, section.length - 1)} ${objectName} (${Object.keys(this[section]).join(", ")})`);
407
+ }
408
+ return this[section][objectName];
409
+ }
410
+ /**
411
+ * Get a service based on name
412
+ *
413
+ * @param name - the name to use
414
+ * @returns the result
415
+ */
416
+ getModda(name) {
417
+ return this.getWebdaObject("moddas", name);
418
+ }
419
+ /**
420
+ * Return all services of the application
421
+ * @returns the result
422
+ */
423
+ getModdas() {
424
+ return this.moddas;
425
+ }
426
+ /**
427
+ * Retrieve the model implementation
428
+ *
429
+ * @param name model to retrieve
430
+ * @returns the result
431
+ */
432
+ getModel(name) {
433
+ return this.getWebdaObject("models", name);
434
+ }
435
+ /**
436
+ * Get all models definitions
437
+ * @returns the result
438
+ */
439
+ getModels() {
440
+ return this.models;
441
+ }
442
+ /**
443
+ * Return the metadata blob (Identifier, Actions, etc.) for a Behavior
444
+ * loaded from `webda.module.json`.
445
+ *
446
+ * @param identifier - fully qualified Behavior id (e.g. `Webda/MFA`)
447
+ * @returns the metadata, or undefined if no Behavior with that id is registered
448
+ */
449
+ getBehaviorMetadata(identifier) {
450
+ return this.behaviors[identifier]?.metadata;
451
+ }
452
+ /**
453
+ * Return all loaded Behaviors keyed by identifier.
454
+ *
455
+ * Each entry exposes the original metadata blob emitted by the compiler.
456
+ * @returns the result
457
+ */
458
+ getBehaviors() {
459
+ return this.behaviors;
460
+ }
461
+ /**
462
+ * Return the model name for a object
463
+ * @param object - the target object
464
+ * @returns the result
465
+ */
466
+ getModelFromInstance(object) {
467
+ return Object.keys(this.models).find(k => this.models[k] === object.constructor);
468
+ }
469
+ /**
470
+ * Return the model name for a object
471
+ * @param object - the target object
472
+ * @param model - the model to use
473
+ * @returns the result
474
+ */
475
+ getModelFromConstructor(model) {
476
+ // @ts-ignore
477
+ return Object.keys(this.models).find(k => this.models[k] === model);
478
+ }
479
+ /**
480
+ * Get the model name from a model or a constructor
481
+ *
482
+ * @param model - the model to use
483
+ * @paramn full if true always include the namespace, default is false e.g Webda/
484
+ * @returns longId for a model
485
+ */
486
+ getModelId(model) {
487
+ if (isModelClass(model)) {
488
+ return this.getModelFromConstructor(model);
489
+ }
490
+ return this.getModelFromInstance(model);
491
+ }
492
+ /**
493
+ * Return all deployers
494
+ * @returns the result
495
+ */
496
+ getDeployers() {
497
+ return this.deployers;
498
+ }
499
+ /**
500
+ * Add a new model
501
+ *
502
+ * @param name - the name to use
503
+ * @param model - the model to use
504
+ * @param dynamic class is dynamic so recompute the hierarchy
505
+ * @param metadata - the model metadata
506
+ * @returns this for chaining
507
+ */
508
+ addModel(name, model, metadata = {
509
+ Identifier: name,
510
+ Ancestors: [],
511
+ Subclasses: [],
512
+ Relations: {},
513
+ PrimaryKey: ["id"],
514
+ Events: [],
515
+ Schemas: {},
516
+ Actions: {},
517
+ Import: "",
518
+ Plural: name + "s",
519
+ Reflection: {}
520
+ }) {
521
+ name = this.completeNamespace(name);
522
+ this.log("TRACE", "Registering model", name);
523
+ if (!model) {
524
+ this.log("ERROR", "Model is undefined", name);
525
+ return this;
526
+ }
527
+ this.models[name] = model;
528
+ if (metadata) {
529
+ // Get ancestor?
530
+ const superClass = Object.getPrototypeOf(model);
531
+ model.Metadata = Object.freeze(metadata);
532
+ }
533
+ return this;
534
+ }
535
+ /* SERIALIZATION */
536
+ /**
537
+ *
538
+ * @param this - the constructor
539
+ * @param json - the JSON data
540
+ * @returns the result
541
+ */
542
+ static deserialize(json) {
543
+ const instance = new this();
544
+ instance.baseConfiguration = json.baseConfiguration;
545
+ instance.currentDeployment = json.currentDeployment;
546
+ instance.appModule = json.appModule;
547
+ return instance;
548
+ }
549
+ /**
550
+ * Serialize the application state to a plain object
551
+ * @returns the result
552
+ */
553
+ toJSON() {
554
+ return {
555
+ baseConfiguration: this.baseConfiguration,
556
+ currentDeployment: this.currentDeployment,
557
+ appModule: this.appModule
558
+ };
559
+ }
560
+ /**
561
+ * Return webda current version
562
+ *
563
+ * @returns package version
564
+ * @since 0.4.0
565
+ */
566
+ getWebdaVersion() {
567
+ return JSON.parse(readFileSync(__dirname + "/../../package.json").toString()).version;
568
+ }
569
+ /**
570
+ * Retrieve Git Repository information
571
+ *
572
+ * {@link GitInformation} for more details on how the information is gathered
573
+ * @return the git information
574
+ * @param _packageName - the package name
575
+ * @param _version - the version string
576
+ * @returns the result
577
+ */
578
+ getGitInformation(_packageName, _version) {
579
+ return this.baseConfiguration.cachedModules.project?.git;
580
+ }
581
+ /**
582
+ * Retrieve the project information
583
+ * @returns the result
584
+ */
585
+ getProjectInfo() {
586
+ return this.baseConfiguration.cachedModules.project;
587
+ }
588
+ /**
589
+ * Get current deployment name
590
+ * @returns the result string
591
+ */
592
+ getCurrentDeployment() {
593
+ return this.baseConfiguration.cachedModules.project.deployment.name;
594
+ }
595
+ /**
596
+ * Return all application modules merged as one
597
+ *
598
+ * Used when deployed
599
+ * @returns the result
600
+ */
601
+ getModules() {
602
+ return this.baseConfiguration.cachedModules;
603
+ }
604
+ /**
605
+ * Get application configuration
606
+ * @param _deployment - the deployment name
607
+ * @returns the result
608
+ */
609
+ getConfiguration(_deployment = undefined) {
610
+ return this.baseConfiguration;
611
+ }
612
+ /**
613
+ * Return current Configuration of the Application
614
+ *
615
+ * Same as calling
616
+ *
617
+ * ```js
618
+ * getConfiguration(this.currentDeployment);
619
+ * ```
620
+ * @returns the result
621
+ */
622
+ getCurrentConfiguration() {
623
+ return this.getConfiguration();
624
+ }
625
+ /**
626
+ * Import a file
627
+ *
628
+ * If the `default` is set take this or use old format
629
+ *
630
+ * @param info - the information object
631
+ * @param withExport - whether to include exports
632
+ * @returns the result
633
+ */
634
+ async importFile(info, withExport = true) {
635
+ if (info.startsWith(".")) {
636
+ info = this.getPath(info);
637
+ }
638
+ try {
639
+ this.log("TRACE", "Load file", info);
640
+ // eslint-disable-next-line prefer-const
641
+ let [importFilename, importName = "default"] = info.split(":");
642
+ if (!importFilename.endsWith(".js") && !importFilename.endsWith(".ts")) {
643
+ importFilename += ".js";
644
+ }
645
+ const importedFile = await import(importFilename);
646
+ if (!withExport) {
647
+ return;
648
+ }
649
+ const importObject = importedFile[importName];
650
+ if (!importObject) {
651
+ this.log("WARN", `Module ${importFilename} does not have export named ${importName}`);
652
+ }
653
+ return importObject;
654
+ }
655
+ catch (err) {
656
+ this.log("ERROR", "Cannot resolve require", info, err.message);
657
+ }
658
+ }
659
+ /**
660
+ * Load local module
661
+ */
662
+ async loadLocalModule() {
663
+ const moduleFile = join(process.cwd(), "webda.module.json");
664
+ if (existsSync(moduleFile)) {
665
+ await this.loadModule(FileUtils.load(moduleFile), process.cwd());
666
+ }
667
+ }
668
+ /**
669
+ * Get implementations of a class
670
+ * @param object - the target object
671
+ * @returns the result
672
+ */
673
+ getImplementations(object) {
674
+ const res = {};
675
+ for (const key in this.moddas) {
676
+ if (this.moddas[key] && object instanceof this.moddas[key]) {
677
+ res[key] = this.moddas[key];
678
+ }
679
+ }
680
+ return res;
681
+ }
682
+ /**
683
+ * Load the module,
684
+ *
685
+ * @protected
686
+ * @ignore Useless for documentation
687
+ */
688
+ async loadModule(module, parent = this.applicationPath) {
689
+ if (!module) {
690
+ return;
691
+ }
692
+ const info = module;
693
+ const sectionLoader = async (section) => {
694
+ for (const key in info[section]) {
695
+ this[section][key] ??= await this.importFile(join(parent, info[section][key].Import));
696
+ if (!this[section][key]) {
697
+ this.log("ERROR", `Cannot load ${section.substring(0, section.length - 1)} ${key} from ${join(parent, info[section][key].Import)}`);
698
+ continue;
699
+ }
700
+ if (section === "beans" || section === "moddas") {
701
+ // Load the parameters automatically
702
+ const configurationClass = info[section][key].Configuration
703
+ ? await this.importFile(join(parent, info[section][key].Configuration))
704
+ : ServiceParameters;
705
+ if (!configurationClass) {
706
+ this.log("ERROR", `Cannot load configuration for ${section.substring(0, section.length - 1)} ${key} from ${join(parent, info[section][key].Configuration)}`);
707
+ continue;
708
+ }
709
+ installConfigurationFactories(this[section][key], configurationClass, info[section][key].Schema);
710
+ }
711
+ }
712
+ };
713
+ // Filter beans based on ignoreBeans configuration
714
+ if (info.beans) {
715
+ const ignoreBeans = this.baseConfiguration?.parameters?.ignoreBeans;
716
+ for (const f of Object.keys(info.beans)) {
717
+ if (ignoreBeans === true)
718
+ continue;
719
+ if (Array.isArray(ignoreBeans) && ignoreBeans.includes(f))
720
+ continue;
721
+ this.baseConfiguration.cachedModules.beans[f] = info.beans[f];
722
+ }
723
+ }
724
+ // Behaviors are registered by metadata only — the runtime never imports
725
+ // the Behavior class. The per-model `__hydrateBehaviors(rawData)` method
726
+ // emitted at compile time by `@webda/content-mapper` holds the static
727
+ // imports needed to coerce raw values into Behavior instances, so the
728
+ // application registry just needs to retain the metadata blob (action
729
+ // shapes, identifier, etc.) for `DomainService` operation registration
730
+ // and the REST transport routing.
731
+ if (info.behaviors) {
732
+ for (const id in info.behaviors) {
733
+ this.behaviors[id] ??= { metadata: info.behaviors[id] };
734
+ }
735
+ }
736
+ // TODO Merging tree from different modules
737
+ await Promise.all([sectionLoader("moddas"), sectionLoader("models"), sectionLoader("beans")]);
738
+ // Set metadata on models - need to be done after all models are loaded
739
+ this.setModelMetadata(info.models);
740
+ }
741
+ /**
742
+ * Set object Metadata
743
+ * Need to be done after all models are loaded to resolve Ancestors and Subclasses
744
+ * @param info - the information object
745
+ */
746
+ setModelMetadata(info) {
747
+ // Might want to move this to specific methods
748
+ for (const m in this.models) {
749
+ if (!this.models[m]) {
750
+ continue;
751
+ }
752
+ // Register serializer under the full model identifier so app-specific
753
+ // classes (e.g. WebdaSample/User) don't collide with framework ones that
754
+ // share the same JS constructor name (Webda/User).
755
+ this.models[m].registerSerializer(true, m);
756
+ this.models[m].Metadata = Object.freeze({
757
+ ...info[m],
758
+ // Runtime: resolve strings to model classes for backward compat
759
+ // ModelMetadata types these as string[] but core resolves them to classes
760
+ Ancestors: info[m].Ancestors.map(s => this.models[s]),
761
+ Subclasses: info[m].Subclasses.map(s => this.models[s])
762
+ });
763
+ }
764
+ }
765
+ /**
766
+ * Return the full name including namespace
767
+ *
768
+ * In Webda the ServiceType include namespace `Webda/Store` or `Webda/Test`
769
+ * This method will make sure the namespace is present, adding it if no '/'
770
+ * is found in the name
771
+ *
772
+ * @param name - the name to use
773
+ * @returns the result string
774
+ */
775
+ completeNamespace(name = "") {
776
+ // Do not add a namespace if already present
777
+ if (name.includes("/")) {
778
+ return name;
779
+ }
780
+ return `${this.getNamespace()}/${name}`;
781
+ }
782
+ /**
783
+ * Return current namespace
784
+ * @returns the result string
785
+ */
786
+ getNamespace() {
787
+ return this.baseConfiguration?.cachedModules?.project?.webda?.namespace || "Webda";
788
+ }
789
+ };
790
+ })();
791
+ export { Application };
792
+ //# sourceMappingURL=application.js.map