@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,492 @@
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 { deepmerge } from "deepmerge-ts";
36
+ import * as fs from "fs";
37
+ import { Application } from "./application.js";
38
+ import { SectionEnum } from "./iconfiguration.js";
39
+ import { FileUtils } from "@webda/utils";
40
+ import { getMachineId } from "../core/hooks.js";
41
+ import { join, resolve, relative, dirname } from "path";
42
+ import { ProcessCache } from "../cache/cache.js";
43
+ /**
44
+ * Empty git information
45
+ */
46
+ export const EmptyGitInformation = {
47
+ branch: "",
48
+ commit: "",
49
+ short: "",
50
+ tag: "",
51
+ tags: [],
52
+ version: ""
53
+ };
54
+ /**
55
+ * An unpacked application load dynamically all webda.module.json
56
+ * And load also all the package description
57
+ *
58
+ * The normal Application is designed to load all this information from
59
+ * the cachedModule to avoid any unecessary action within a production environment
60
+ */
61
+ let UnpackedApplication = (() => {
62
+ let _classSuper = Application;
63
+ let _staticExtraInitializers = [];
64
+ let _static_findModulesFiles_decorators;
65
+ return class UnpackedApplication extends _classSuper {
66
+ static {
67
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
68
+ _static_findModulesFiles_decorators = [ProcessCache()];
69
+ __esDecorate(this, null, _static_findModulesFiles_decorators, { kind: "method", name: "findModulesFiles", static: true, private: false, access: { has: obj => "findModulesFiles" in obj, get: obj => obj.findModulesFiles }, metadata: _metadata }, null, _staticExtraInitializers);
70
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
71
+ __runInitializers(this, _staticExtraInitializers);
72
+ }
73
+ /** Create a new UnpackedApplication
74
+ * @param file - file path or partial configuration
75
+ * @param logger - the logger instance
76
+ */
77
+ constructor(file, logger) {
78
+ super(typeof file === "string"
79
+ ? file
80
+ : {
81
+ version: 4,
82
+ application: {},
83
+ services: {},
84
+ parameters: {},
85
+ ...file
86
+ }, logger);
87
+ if (typeof file !== "string") {
88
+ this.baseConfiguration = this.completeConfiguration(this.baseConfiguration);
89
+ }
90
+ }
91
+ /**
92
+ * Ensure default configuration after load
93
+ * @returns the result
94
+ */
95
+ async load() {
96
+ await super.load();
97
+ // Ensuring default configuration after loadModule as we do auto-type guess and needs the Modda
98
+ // We only do it in UnpackedApplication as Application should be optimized for startup
99
+ // Application should have a webda.config.json optimized by the builder
100
+ // webda config > webda.config.json
101
+ this.ensureDefaultConfiguration(this.baseConfiguration);
102
+ return this;
103
+ }
104
+ /**
105
+ * Ensure default parameters are set on our application
106
+ * Creating the default services if they do not exist
107
+ *
108
+ * Might want to have only this in unpackaged application as Application should
109
+ * have a perfectly valid configuration
110
+ * @param configuration - the configuration
111
+ */
112
+ ensureDefaultConfiguration(configuration) {
113
+ configuration.services ??= {};
114
+ configuration.parameters ??= {};
115
+ configuration.parameters.apiUrl ??= "http://localhost:18080";
116
+ configuration.parameters.metrics ??= {};
117
+ if (configuration.parameters.metrics) {
118
+ configuration.parameters.metrics.labels ??= {};
119
+ configuration.parameters.metrics.config ??= {};
120
+ configuration.parameters.metrics.prefix ??= "";
121
+ }
122
+ configuration.parameters.configurationService ??= "Configuration";
123
+ configuration.parameters.defaultStore ??= "Registry";
124
+ const autoRegistry = configuration.services["Registry"] === undefined;
125
+ configuration.services["Router"] ??= {
126
+ type: "Webda/Router"
127
+ };
128
+ // Registry by default
129
+ configuration.services["Registry"] ??= {
130
+ type: "Webda/MemoryStore",
131
+ persistence: {
132
+ path: ".registry",
133
+ key: getMachineId()
134
+ }
135
+ };
136
+ // CryptoService by default
137
+ configuration.services["CryptoService"] ??= {
138
+ type: "Webda/CryptoService",
139
+ autoRotate: autoRegistry ? 30 : undefined,
140
+ autoCreate: true
141
+ };
142
+ // By default use CookieSessionManager
143
+ // TODO Should not be added here as it is only for HTTP
144
+ configuration.services["SessionManager"] ??= {
145
+ type: "Webda/CookieSessionManager"
146
+ };
147
+ // Ensure type is set to default
148
+ for (const serviceName in configuration.services) {
149
+ if (configuration.services[serviceName].type !== undefined) {
150
+ continue;
151
+ }
152
+ if (this.moddas[this.completeNamespace(serviceName)]) {
153
+ configuration.services[serviceName].type = this.completeNamespace(serviceName);
154
+ continue;
155
+ }
156
+ if (!serviceName.includes("/") && this.moddas[`Webda/${serviceName}`]) {
157
+ configuration.services[serviceName].type = `Webda/${serviceName}`;
158
+ }
159
+ }
160
+ }
161
+ /**
162
+ * Load full configuration
163
+ *
164
+ * webda.config.json and complete the cachedModule
165
+ *
166
+ * @param file - the file path
167
+ * @returns the result
168
+ */
169
+ async loadConfiguration(file) {
170
+ if (!file && this.baseConfiguration) {
171
+ this.baseConfiguration = this.completeConfiguration({ version: 4, ...this.baseConfiguration });
172
+ }
173
+ else if (!fs.existsSync(file)) {
174
+ this.baseConfiguration = this.completeConfiguration({ version: 4, parameters: {} });
175
+ }
176
+ else {
177
+ this.baseConfiguration = this.completeConfiguration(FileUtils.load(file));
178
+ }
179
+ // If cachedModules is defined we do not recompute
180
+ if (!this.baseConfiguration.cachedModules) {
181
+ this.baseConfiguration.cachedModules = {
182
+ project: this.loadProjectInformation(),
183
+ beans: {},
184
+ deployers: {},
185
+ models: {},
186
+ schemas: {},
187
+ moddas: {}
188
+ };
189
+ this.log("DEBUG", "Merging modules into configuration");
190
+ await this.mergeModules(this.baseConfiguration);
191
+ }
192
+ }
193
+ /**
194
+ * Add Moddas, Models and Deployers definitions
195
+ * It also add the project metadata
196
+ *
197
+ * @param configuration - the configuration
198
+ * @returns the result
199
+ */
200
+ completeConfiguration(configuration) {
201
+ // Only one level of includes is permitted
202
+ const imports = configuration.$import || [];
203
+ const effectiveImports = [];
204
+ for (const importFile of imports) {
205
+ if (!fs.existsSync(this.getPath(importFile))) {
206
+ this.log("WARN", `Cannot import configuration '${importFile}'`);
207
+ continue;
208
+ }
209
+ effectiveImports.push(importFile);
210
+ const includeConfiguration = FileUtils.load(this.getPath(importFile));
211
+ if (includeConfiguration.imports?.length) {
212
+ this.log("WARN", `Imported configuration '${importFile}' has nested imports that will be skipped`);
213
+ }
214
+ configuration = deepmerge(includeConfiguration, configuration);
215
+ }
216
+ configuration.$import = effectiveImports;
217
+ // Ensure default values
218
+ return configuration;
219
+ }
220
+ /**
221
+ * @param _name - the name to use
222
+ * @param _version - the version string
223
+ * @returns empty git information
224
+ */
225
+ getGitInformation(_name, _version) {
226
+ return {
227
+ branch: "",
228
+ commit: "",
229
+ short: "",
230
+ tag: "",
231
+ tags: [],
232
+ version: ""
233
+ };
234
+ }
235
+ /** Upgrade a v3 configuration to v4 format */
236
+ upgradeConfigToV4() {
237
+ /*
238
+ // Move to router
239
+
240
+ trustedProxies
241
+ csrfOrigins
242
+ website
243
+ static
244
+ apiUrl
245
+ requestLimit
246
+ requestTimeout
247
+ defaultHeaders
248
+
249
+ // Move to Core
250
+ configurationService
251
+ defaultStore
252
+ ignoreBeans
253
+
254
+ // metrics??
255
+ */
256
+ }
257
+ /**
258
+ * Check package.json
259
+ * @returns the result
260
+ */
261
+ loadProjectInformation() {
262
+ const info = {
263
+ deployment: {
264
+ name: ""
265
+ },
266
+ package: {
267
+ name: "",
268
+ version: ""
269
+ },
270
+ git: EmptyGitInformation,
271
+ webda: {}
272
+ };
273
+ let packageJson = join(this.applicationPath, "package.json");
274
+ if (fs.existsSync(packageJson)) {
275
+ info.package = FileUtils.load(packageJson);
276
+ }
277
+ info.git = this.getGitInformation(info.package?.name, info.package?.version);
278
+ info.webda = info.package.webda || {};
279
+ let parent = join(this.applicationPath, "..");
280
+ do {
281
+ packageJson = join(parent, "package.json");
282
+ if (fs.existsSync(packageJson)) {
283
+ const currentInfo = FileUtils.load(packageJson);
284
+ if (currentInfo.workspaces) {
285
+ this.log("DEBUG", "Application is running within a workspace");
286
+ // Replace any relative path by absolute one
287
+ for (const i in currentInfo.webda) {
288
+ if (currentInfo.webda[i].startsWith("./")) {
289
+ currentInfo.webda[i] = join(resolve(parent), currentInfo.webda[i].substr(2));
290
+ }
291
+ }
292
+ info.webda = deepmerge(currentInfo.webda || {}, info.webda);
293
+ info.webda.workspaces = {
294
+ packages: currentInfo.workspaces,
295
+ parent: currentInfo,
296
+ path: resolve(parent)
297
+ };
298
+ break;
299
+ }
300
+ }
301
+ parent = resolve(join(parent, ".."));
302
+ } while (parent !== resolve(join(parent, "..")));
303
+ // Check modules
304
+ return info;
305
+ }
306
+ /**
307
+ * Search the node_modules structure for webda.module.json files
308
+ *
309
+ * @param path - the path
310
+ * @returns the result
311
+ */
312
+ static async findModulesFiles(path) {
313
+ if (!path.endsWith("node_modules") || !fs.existsSync(path)) {
314
+ return [];
315
+ }
316
+ // Track visited directories (by realpath) to prevent infinite loops
317
+ // caused by pnpm's symlink structure where workspace packages
318
+ // reference each other through nested node_modules
319
+ const visited = new Set();
320
+ const scanNodeModules = async (nmPath) => {
321
+ const realNmPath = await fs.promises.realpath(nmPath).catch(() => nmPath);
322
+ if (visited.has(realNmPath)) {
323
+ return [];
324
+ }
325
+ visited.add(realNmPath);
326
+ if (!fs.existsSync(nmPath)) {
327
+ return [];
328
+ }
329
+ const files = new Set();
330
+ const checkFolder = async (filepath) => {
331
+ if (fs.existsSync(join(filepath, "webda.module.json"))) {
332
+ files.add(join(filepath, "webda.module.json"));
333
+ }
334
+ if (fs.existsSync(join(filepath, "node_modules"))) {
335
+ (await scanNodeModules(join(filepath, "node_modules"))).forEach(f => files.add(f));
336
+ }
337
+ };
338
+ const recursiveSearch = async (dirpath, depth = 0) => {
339
+ await Promise.all((await fs.promises.readdir(dirpath, { withFileTypes: true })).map(async (file) => {
340
+ if (file.name.startsWith(".")) {
341
+ return;
342
+ }
343
+ const filepath = join(dirpath, file.name);
344
+ if (file.isDirectory() && file.name.startsWith("@") && depth === 0) {
345
+ // One recursion
346
+ await recursiveSearch(filepath, depth + 1);
347
+ }
348
+ else if (file.isDirectory()) {
349
+ await checkFolder(filepath);
350
+ }
351
+ else if (file.isSymbolicLink()) {
352
+ // We want to follow symbolic links w/o increasing depth
353
+ let realPath;
354
+ try {
355
+ // realpathSync will throw if the symlink is broken
356
+ realPath = await fs.promises.realpath(filepath);
357
+ }
358
+ catch (err) {
359
+ return;
360
+ }
361
+ await checkFolder(realPath);
362
+ }
363
+ }));
364
+ };
365
+ await recursiveSearch(nmPath, 0);
366
+ return [...files];
367
+ };
368
+ return scanNodeModules(path);
369
+ }
370
+ /**
371
+ * Load all imported modules and current module
372
+ * It will compile module
373
+ * Generate the current module file
374
+ * Load any imported webda.module.json
375
+ * @param module - the module to load
376
+ * @returns the list of results
377
+ */
378
+ async findModules(module) {
379
+ const appPath = this.getPath();
380
+ // Modules should be cached on deploy
381
+ const files = [];
382
+ const currentModule = this.getPath("webda.module.json");
383
+ if (fs.existsSync(currentModule)) {
384
+ files.push(currentModule);
385
+ }
386
+ this.log("TRACE", "Searching for modules in", this.getPath("node_modules"));
387
+ files.push(...(await UnpackedApplication.findModulesFiles(this.getPath("node_modules"))));
388
+ // Search workspace for webda.module.json
389
+ if (module.project.webda.workspaces && module.project.webda.workspaces.path !== "") {
390
+ this.log("TRACE", "Searching for modules in", join(module.project.webda.workspaces.path, "node_modules"));
391
+ files.push(...(await UnpackedApplication.findModulesFiles(join(module.project.webda.workspaces.path, "node_modules"))));
392
+ }
393
+ // Ensure we are not adding many times the same modules
394
+ // App's own module always included, filterModule only applies to dependencies
395
+ const currentModuleReal = fs.existsSync(currentModule) ? fs.realpathSync(currentModule) : undefined;
396
+ const moduleInfo = Array.from(new Set(files.map(n => fs.realpathSync(n)))).filter(f => f === currentModuleReal || this.filterModule(f));
397
+ this.log("TRACE", "Found modules", moduleInfo, "for", appPath);
398
+ return moduleInfo;
399
+ }
400
+ /**
401
+ * Only allow local and core module and sample-app
402
+ * @param _filename - the filename
403
+ * @returns true if the condition is met
404
+ */
405
+ filterModule(_filename) {
406
+ return true;
407
+ }
408
+ /**
409
+ * Load a webda.module.json file
410
+ * Resolve the linked file to current application
411
+ *
412
+ * @param moduleFile to load
413
+ * @returns the result
414
+ */
415
+ loadWebdaModule(moduleFile) {
416
+ const module = FileUtils.load(moduleFile);
417
+ if (!module.$schema?.endsWith("/webda.module.v4.json")) {
418
+ this.log("WARN", `Module '${moduleFile}' is not a v4 format, skipping module`);
419
+ return {
420
+ models: {},
421
+ schemas: {},
422
+ beans: {},
423
+ deployers: {},
424
+ moddas: {},
425
+ project: undefined
426
+ };
427
+ }
428
+ Object.keys(SectionEnum)
429
+ .filter(k => Number.isNaN(+k))
430
+ .forEach(p => {
431
+ // Do not keep Beans from other modules
432
+ if (this.getPath("webda.module.json") !== moduleFile && SectionEnum[p] === "beans") {
433
+ delete module[SectionEnum[p]];
434
+ return;
435
+ }
436
+ for (const key in module[SectionEnum[p]]) {
437
+ const relBase = relative(this.getPath(), dirname(moduleFile));
438
+ module[SectionEnum[p]][key].Import = join(relBase, module[SectionEnum[p]][key].Import);
439
+ if (module[SectionEnum[p]][key].Configuration) {
440
+ module[SectionEnum[p]][key].Configuration = join(relBase, module[SectionEnum[p]][key].Configuration);
441
+ }
442
+ }
443
+ });
444
+ return module;
445
+ }
446
+ /**
447
+ * Merge all modules into one cached module
448
+ *
449
+ * @param module - the module to load
450
+ * @param configuration - the configuration
451
+ * @returns the result
452
+ */
453
+ async mergeModules(configuration) {
454
+ const module = configuration.cachedModules;
455
+ const appModule = this.getPath("webda.module.json");
456
+ const files = await this.findModules(module);
457
+ const value = files
458
+ .map(f => {
459
+ const currentModule = this.loadWebdaModule(f);
460
+ // We only take the Beans from current application
461
+ if (appModule !== f) {
462
+ this.log("DEBUG", `Load module without beans '${f}'`);
463
+ delete currentModule.beans;
464
+ }
465
+ else {
466
+ this.log("DEBUG", `Load module with beans '${f}'`);
467
+ }
468
+ return currentModule;
469
+ })
470
+ .reduce((prev, val) => {
471
+ return deepmerge(prev, val);
472
+ }, module);
473
+ Object.keys(SectionEnum)
474
+ .filter(k => Number.isNaN(+k))
475
+ .forEach(p => {
476
+ module[SectionEnum[p]] = value[SectionEnum[p]];
477
+ });
478
+ // Copying schemas, capabilities, and behaviors. `behaviors` lives outside
479
+ // SectionEnum because Behavior classes are intentionally not models /
480
+ // moddas / beans / deployers — but the merged value must still flow
481
+ // through to the runtime so DomainService.addBehaviorOperations sees them.
482
+ module.schemas = value.schemas;
483
+ module.capabilities = value.capabilities;
484
+ module.behaviors = value.behaviors;
485
+ this.log("DEBUG", "Merged modules", module);
486
+ await this.loadModule(module);
487
+ return module;
488
+ }
489
+ };
490
+ })();
491
+ export { UnpackedApplication };
492
+ //# sourceMappingURL=unpackedapplication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpackedapplication.js","sourceRoot":"","sources":["../../src/application/unpackedapplication.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { Core } from "../core/core.js";
2
+ import type { ServiceCommandInfo } from "../services/servicecommands.js";
3
+ /**
4
+ * Decide which Core lifecycle phase a CLI command should run at, based on the
5
+ * phases declared by every service that provides the command.
6
+ *
7
+ * Rule:
8
+ * - All declared phases `"resolved"` → run `Core.resolve()` only (no service.init()).
9
+ * - All `undefined` or `"initialized"` → run `Core.init()` (full initialization).
10
+ * - Mixed → throw with an error naming the command and conflicting phases.
11
+ * - Empty array → `"initialized"` (no providers = safest fallback).
12
+ *
13
+ * `undefined` in the input is treated as `"initialized"` (a service declaring no
14
+ * phase means "no opinion — use the default, full init").
15
+ * @param phases - per-provider phase declarations collected by `collectServiceCommands`.
16
+ * @param cmdName - name of the command, included in the mixed-phase error for diagnosability.
17
+ * @returns the lifecycle phase Core should run at for this command.
18
+ */
19
+ export declare function selectPhase(phases: Array<"resolved" | "initialized" | undefined>, cmdName?: string): "resolved" | "initialized";
20
+ /**
21
+ * Boot a Core instance up to the phase required by the given command. Shared
22
+ * entry point for every cli.ts site that dispatches a `@Command`.
23
+ * @param core - a freshly-constructed `Core` instance (not yet resolved or initialized).
24
+ * @param cmdName - name of the command being dispatched.
25
+ * @param cmdInfo - merged command info from `collectServiceCommands`.
26
+ */
27
+ export declare function bootCoreForCommand(core: Core, cmdName: string, cmdInfo: ServiceCommandInfo): Promise<void>;
28
+ //# sourceMappingURL=cli-phase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-phase.d.ts","sourceRoot":"","sources":["../../src/bin/cli-phase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,KAAK,CAAC,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC,EACrD,OAAO,GAAE,MAAoB,GAC5B,UAAU,GAAG,aAAa,CAW5B;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAOf"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Decide which Core lifecycle phase a CLI command should run at, based on the
3
+ * phases declared by every service that provides the command.
4
+ *
5
+ * Rule:
6
+ * - All declared phases `"resolved"` → run `Core.resolve()` only (no service.init()).
7
+ * - All `undefined` or `"initialized"` → run `Core.init()` (full initialization).
8
+ * - Mixed → throw with an error naming the command and conflicting phases.
9
+ * - Empty array → `"initialized"` (no providers = safest fallback).
10
+ *
11
+ * `undefined` in the input is treated as `"initialized"` (a service declaring no
12
+ * phase means "no opinion — use the default, full init").
13
+ * @param phases - per-provider phase declarations collected by `collectServiceCommands`.
14
+ * @param cmdName - name of the command, included in the mixed-phase error for diagnosability.
15
+ * @returns the lifecycle phase Core should run at for this command.
16
+ */
17
+ export function selectPhase(phases, cmdName = "<unknown>") {
18
+ if (phases.length === 0)
19
+ return "initialized";
20
+ const normalized = phases.map(p => p ?? "initialized");
21
+ const unique = new Set(normalized);
22
+ if (unique.size === 1) {
23
+ return normalized[0];
24
+ }
25
+ throw new Error(`Command '${cmdName}' has inconsistent phases across services: ${[...unique].join(", ")}. ` +
26
+ `All services declaring a command must agree on phase.`);
27
+ }
28
+ /**
29
+ * Boot a Core instance up to the phase required by the given command. Shared
30
+ * entry point for every cli.ts site that dispatches a `@Command`.
31
+ * @param core - a freshly-constructed `Core` instance (not yet resolved or initialized).
32
+ * @param cmdName - name of the command being dispatched.
33
+ * @param cmdInfo - merged command info from `collectServiceCommands`.
34
+ */
35
+ export async function bootCoreForCommand(core, cmdName, cmdInfo) {
36
+ const phase = selectPhase(cmdInfo.phases, cmdName);
37
+ if (phase === "resolved") {
38
+ await core.resolve();
39
+ }
40
+ else {
41
+ await core.init();
42
+ }
43
+ }
44
+ //# sourceMappingURL=cli-phase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-phase.js","sourceRoot":"","sources":["../../src/bin/cli-phase.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CACzB,MAAqD,EACrD,OAAO,GAAW,WAAW;IAE7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,KAAK,CACb,YAAY,OAAO,8CAA8C,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACzF,uDAAuD,CAC1D,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAU,EACV,OAAe,EACf,OAA2B;IAE3B,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}