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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/README.md +252 -0
  2. package/lib/application/application.d.ts +437 -0
  3. package/lib/application/application.d.ts.map +1 -0
  4. package/lib/application/application.js +792 -0
  5. package/lib/application/application.js.map +1 -0
  6. package/lib/application/hooks.d.ts +34 -0
  7. package/lib/application/hooks.d.ts.map +1 -0
  8. package/lib/application/hooks.js +57 -0
  9. package/lib/application/hooks.js.map +1 -0
  10. package/lib/application/iapplication.d.ts +43 -0
  11. package/lib/application/iapplication.d.ts.map +1 -0
  12. package/lib/application/iapplication.js +2 -0
  13. package/lib/application/iapplication.js.map +1 -0
  14. package/lib/application/iconfiguration.d.ts +176 -0
  15. package/lib/application/iconfiguration.d.ts.map +1 -0
  16. package/lib/application/iconfiguration.js +8 -0
  17. package/lib/application/iconfiguration.js.map +1 -0
  18. package/lib/application/runner.d.ts +8 -0
  19. package/lib/application/runner.d.ts.map +1 -0
  20. package/lib/application/runner.js +26 -0
  21. package/lib/application/runner.js.map +1 -0
  22. package/lib/application/unpackedapplication.d.ts +104 -0
  23. package/lib/application/unpackedapplication.d.ts.map +1 -0
  24. package/lib/application/unpackedapplication.js +492 -0
  25. package/lib/application/unpackedapplication.js.map +1 -0
  26. package/lib/bin/cli-phase.d.ts +28 -0
  27. package/lib/bin/cli-phase.d.ts.map +1 -0
  28. package/lib/bin/cli-phase.js +44 -0
  29. package/lib/bin/cli-phase.js.map +1 -0
  30. package/lib/bin/cli.d.ts +161 -0
  31. package/lib/bin/cli.d.ts.map +1 -0
  32. package/lib/bin/cli.js +828 -0
  33. package/lib/bin/cli.js.map +1 -0
  34. package/lib/bin/launcher.d.ts +3 -0
  35. package/lib/bin/launcher.d.ts.map +1 -0
  36. package/lib/bin/launcher.js +50 -0
  37. package/lib/bin/launcher.js.map +1 -0
  38. package/lib/cache/cache.d.ts +33 -0
  39. package/lib/cache/cache.d.ts.map +1 -0
  40. package/lib/cache/cache.js +8 -0
  41. package/lib/cache/cache.js.map +1 -0
  42. package/lib/{services/configuration.d.ts → configurations/configuration.service.d.ts} +58 -49
  43. package/lib/configurations/configuration.service.d.ts.map +1 -0
  44. package/lib/configurations/configuration.service.js +248 -0
  45. package/lib/configurations/configuration.service.js.map +1 -0
  46. package/lib/configurations/fileconfiguration.service.d.ts +30 -0
  47. package/lib/configurations/fileconfiguration.service.d.ts.map +1 -0
  48. package/lib/configurations/fileconfiguration.service.js +65 -0
  49. package/lib/configurations/fileconfiguration.service.js.map +1 -0
  50. package/lib/configurations/kubernetesconfiguration.service.d.ts +43 -0
  51. package/lib/configurations/kubernetesconfiguration.service.d.ts.map +1 -0
  52. package/lib/configurations/kubernetesconfiguration.service.js +83 -0
  53. package/lib/configurations/kubernetesconfiguration.service.js.map +1 -0
  54. package/lib/contexts/execution.d.ts +33 -0
  55. package/lib/contexts/execution.d.ts.map +1 -0
  56. package/lib/contexts/execution.js +73 -0
  57. package/lib/contexts/execution.js.map +1 -0
  58. package/lib/contexts/globalcontext.d.ts +29 -0
  59. package/lib/contexts/globalcontext.d.ts.map +1 -0
  60. package/lib/contexts/globalcontext.js +38 -0
  61. package/lib/contexts/globalcontext.js.map +1 -0
  62. package/lib/{utils → contexts}/httpcontext.d.ts +45 -19
  63. package/lib/contexts/httpcontext.d.ts.map +1 -0
  64. package/lib/{utils → contexts}/httpcontext.js +102 -34
  65. package/lib/contexts/httpcontext.js.map +1 -0
  66. package/lib/contexts/icontext.d.ts +236 -0
  67. package/lib/contexts/icontext.d.ts.map +1 -0
  68. package/lib/contexts/icontext.js +230 -0
  69. package/lib/contexts/icontext.js.map +1 -0
  70. package/lib/contexts/operationcontext.d.ts +179 -0
  71. package/lib/contexts/operationcontext.d.ts.map +1 -0
  72. package/lib/contexts/operationcontext.js +358 -0
  73. package/lib/contexts/operationcontext.js.map +1 -0
  74. package/lib/contexts/simplecontext.d.ts +31 -0
  75. package/lib/contexts/simplecontext.d.ts.map +1 -0
  76. package/lib/contexts/simplecontext.js +45 -0
  77. package/lib/contexts/simplecontext.js.map +1 -0
  78. package/lib/contexts/webcontext.d.ts +218 -0
  79. package/lib/contexts/webcontext.d.ts.map +1 -0
  80. package/lib/contexts/webcontext.js +389 -0
  81. package/lib/contexts/webcontext.js.map +1 -0
  82. package/lib/core/authorizer.d.ts +23 -0
  83. package/lib/core/authorizer.d.ts.map +1 -0
  84. package/lib/core/authorizer.js +17 -0
  85. package/lib/core/authorizer.js.map +1 -0
  86. package/lib/core/core.d.ts +225 -0
  87. package/lib/core/core.d.ts.map +1 -0
  88. package/lib/core/core.js +576 -0
  89. package/lib/core/core.js.map +1 -0
  90. package/lib/core/hooks.d.ts +72 -0
  91. package/lib/core/hooks.d.ts.map +1 -0
  92. package/lib/core/hooks.js +73 -0
  93. package/lib/core/hooks.js.map +1 -0
  94. package/lib/core/icore.d.ts +249 -0
  95. package/lib/core/icore.d.ts.map +1 -0
  96. package/lib/core/icore.js +15 -0
  97. package/lib/core/icore.js.map +1 -0
  98. package/lib/core/instancestorage.d.ts +61 -0
  99. package/lib/core/instancestorage.d.ts.map +1 -0
  100. package/lib/core/instancestorage.js +75 -0
  101. package/lib/core/instancestorage.js.map +1 -0
  102. package/lib/core/operations.d.ts +181 -0
  103. package/lib/core/operations.d.ts.map +1 -0
  104. package/lib/core/operations.js +559 -0
  105. package/lib/core/operations.js.map +1 -0
  106. package/lib/errors/errors.d.ts +126 -0
  107. package/lib/errors/errors.d.ts.map +1 -0
  108. package/lib/errors/errors.js +165 -0
  109. package/lib/errors/errors.js.map +1 -0
  110. package/lib/events/asynceventemitter.d.ts +159 -0
  111. package/lib/events/asynceventemitter.d.ts.map +1 -0
  112. package/lib/events/asynceventemitter.js +152 -0
  113. package/lib/events/asynceventemitter.js.map +1 -0
  114. package/lib/events/events.d.ts +112 -0
  115. package/lib/events/events.d.ts.map +1 -0
  116. package/lib/events/events.js +45 -0
  117. package/lib/events/events.js.map +1 -0
  118. package/lib/index.d.ts +84 -51
  119. package/lib/index.d.ts.map +1 -0
  120. package/lib/index.js +82 -59
  121. package/lib/index.js.map +1 -1
  122. package/lib/loggers/console.service.d.ts +24 -0
  123. package/lib/loggers/console.service.d.ts.map +1 -0
  124. package/lib/loggers/console.service.js +30 -0
  125. package/lib/loggers/console.service.js.map +1 -0
  126. package/lib/loggers/file.service.d.ts +25 -0
  127. package/lib/loggers/file.service.d.ts.map +1 -0
  128. package/lib/loggers/file.service.js +33 -0
  129. package/lib/loggers/file.service.js.map +1 -0
  130. package/lib/loggers/hooks.d.ts +20 -0
  131. package/lib/loggers/hooks.d.ts.map +1 -0
  132. package/lib/loggers/hooks.js +40 -0
  133. package/lib/loggers/hooks.js.map +1 -0
  134. package/lib/loggers/ilogger.d.ts +76 -0
  135. package/lib/loggers/ilogger.d.ts.map +1 -0
  136. package/lib/loggers/ilogger.js +108 -0
  137. package/lib/loggers/ilogger.js.map +1 -0
  138. package/lib/loggers/logger.d.ts +13 -0
  139. package/lib/loggers/logger.d.ts.map +1 -0
  140. package/lib/loggers/logger.js +18 -0
  141. package/lib/loggers/logger.js.map +1 -0
  142. package/lib/loggers/memory.service.d.ts +18 -0
  143. package/lib/loggers/memory.service.d.ts.map +1 -0
  144. package/lib/loggers/memory.service.js +21 -0
  145. package/lib/loggers/memory.service.js.map +1 -0
  146. package/lib/loggers/params.d.ts +47 -0
  147. package/lib/loggers/params.d.ts.map +1 -0
  148. package/lib/loggers/params.js +56 -0
  149. package/lib/loggers/params.js.map +1 -0
  150. package/lib/metrics/metrics.d.ts +25 -0
  151. package/lib/metrics/metrics.d.ts.map +1 -0
  152. package/lib/metrics/metrics.js +51 -0
  153. package/lib/metrics/metrics.js.map +1 -0
  154. package/lib/models/aclmodel.d.ts +21 -77
  155. package/lib/models/aclmodel.d.ts.map +1 -0
  156. package/lib/models/aclmodel.js +27 -204
  157. package/lib/models/aclmodel.js.map +1 -1
  158. package/lib/models/coremodel.model.d.ts +5 -0
  159. package/lib/models/coremodel.model.d.ts.map +1 -0
  160. package/lib/models/coremodel.model.js +5 -0
  161. package/lib/models/coremodel.model.js.map +1 -0
  162. package/lib/models/decorator.d.ts +63 -0
  163. package/lib/models/decorator.d.ts.map +1 -0
  164. package/lib/models/decorator.js +63 -0
  165. package/lib/models/decorator.js.map +1 -0
  166. package/lib/models/deployment.d.ts +2 -1
  167. package/lib/models/deployment.d.ts.map +1 -0
  168. package/lib/models/ident.model.d.ts +89 -0
  169. package/lib/models/ident.model.d.ts.map +1 -0
  170. package/lib/models/ident.model.js +115 -0
  171. package/lib/models/ident.model.js.map +1 -0
  172. package/lib/models/ownermodel.model.d.ts +68 -0
  173. package/lib/models/ownermodel.model.d.ts.map +1 -0
  174. package/lib/models/ownermodel.model.js +112 -0
  175. package/lib/models/ownermodel.model.js.map +1 -0
  176. package/lib/models/registry.model.d.ts +76 -0
  177. package/lib/models/registry.model.d.ts.map +1 -0
  178. package/lib/models/registry.model.js +104 -0
  179. package/lib/models/registry.model.js.map +1 -0
  180. package/lib/models/rolemodel.model.d.ts +28 -0
  181. package/lib/models/rolemodel.model.d.ts.map +1 -0
  182. package/lib/models/rolemodel.model.js +53 -0
  183. package/lib/models/rolemodel.model.js.map +1 -0
  184. package/lib/models/simpleuser.model.d.ts +78 -0
  185. package/lib/models/simpleuser.model.d.ts.map +1 -0
  186. package/lib/models/simpleuser.model.js +123 -0
  187. package/lib/models/simpleuser.model.js.map +1 -0
  188. package/lib/models/types.d.ts +113 -0
  189. package/lib/models/types.d.ts.map +1 -0
  190. package/lib/models/types.js +2 -0
  191. package/lib/models/types.js.map +1 -0
  192. package/lib/models/user.model.d.ts +103 -0
  193. package/lib/models/user.model.d.ts.map +1 -0
  194. package/lib/models/user.model.js +125 -0
  195. package/lib/models/user.model.js.map +1 -0
  196. package/lib/queues/memoryqueue.service.d.ts +72 -0
  197. package/lib/queues/memoryqueue.service.d.ts.map +1 -0
  198. package/lib/queues/memoryqueue.service.js +136 -0
  199. package/lib/queues/memoryqueue.service.js.map +1 -0
  200. package/lib/queues/pubsubservice.d.ts +9 -6
  201. package/lib/queues/pubsubservice.d.ts.map +1 -0
  202. package/lib/queues/pubsubservice.js +5 -4
  203. package/lib/queues/pubsubservice.js.map +1 -1
  204. package/lib/queues/queueservice.d.ts +10 -11
  205. package/lib/queues/queueservice.d.ts.map +1 -0
  206. package/lib/queues/queueservice.js +48 -20
  207. package/lib/queues/queueservice.js.map +1 -1
  208. package/lib/rest/hooks.d.ts +8 -0
  209. package/lib/rest/hooks.d.ts.map +1 -0
  210. package/lib/rest/hooks.js +10 -0
  211. package/lib/rest/hooks.js.map +1 -0
  212. package/lib/rest/irest.d.ts +212 -0
  213. package/lib/rest/irest.d.ts.map +1 -0
  214. package/lib/rest/irest.js +39 -0
  215. package/lib/rest/irest.js.map +1 -0
  216. package/lib/rest/originfilter.d.ts +38 -0
  217. package/lib/rest/originfilter.d.ts.map +1 -0
  218. package/lib/rest/originfilter.js +61 -0
  219. package/lib/rest/originfilter.js.map +1 -0
  220. package/lib/rest/restoperationstransport.service.d.ts +193 -0
  221. package/lib/rest/restoperationstransport.service.d.ts.map +1 -0
  222. package/lib/rest/restoperationstransport.service.js +780 -0
  223. package/lib/rest/restoperationstransport.service.js.map +1 -0
  224. package/lib/rest/router.service.d.ts +244 -0
  225. package/lib/rest/router.service.d.ts.map +1 -0
  226. package/lib/rest/router.service.js +843 -0
  227. package/lib/rest/router.service.js.map +1 -0
  228. package/lib/schemas/hooks.d.ts +48 -0
  229. package/lib/schemas/hooks.d.ts.map +1 -0
  230. package/lib/schemas/hooks.js +152 -0
  231. package/lib/schemas/hooks.js.map +1 -0
  232. package/lib/services/audit.model.d.ts +208 -0
  233. package/lib/services/audit.model.d.ts.map +1 -0
  234. package/lib/services/audit.model.js +431 -0
  235. package/lib/services/audit.model.js.map +1 -0
  236. package/lib/services/{authentication.d.ts → authentication.service.d.ts} +140 -58
  237. package/lib/services/authentication.service.d.ts.map +1 -0
  238. package/lib/services/authentication.service.js +932 -0
  239. package/lib/services/authentication.service.js.map +1 -0
  240. package/lib/services/binary.service.d.ts +808 -0
  241. package/lib/services/binary.service.d.ts.map +1 -0
  242. package/lib/services/binary.service.js +1365 -0
  243. package/lib/services/binary.service.js.map +1 -0
  244. package/lib/services/cloudbinary.d.ts +19 -13
  245. package/lib/services/cloudbinary.d.ts.map +1 -0
  246. package/lib/services/cloudbinary.js +24 -18
  247. package/lib/services/cloudbinary.js.map +1 -1
  248. package/lib/services/command.d.ts +118 -0
  249. package/lib/services/command.d.ts.map +1 -0
  250. package/lib/services/command.js +97 -0
  251. package/lib/services/command.js.map +1 -0
  252. package/lib/services/cron.service.d.ts +142 -0
  253. package/lib/services/cron.service.d.ts.map +1 -0
  254. package/lib/services/cron.service.js +291 -0
  255. package/lib/services/cron.service.js.map +1 -0
  256. package/lib/services/{cryptoservice.d.ts → cryptoservice.service.d.ts} +77 -142
  257. package/lib/services/cryptoservice.service.d.ts.map +1 -0
  258. package/lib/services/cryptoservice.service.js +527 -0
  259. package/lib/services/cryptoservice.service.js.map +1 -0
  260. package/lib/services/debugmailer.service.d.ts +49 -0
  261. package/lib/services/debugmailer.service.d.ts.map +1 -0
  262. package/lib/services/debugmailer.service.js +66 -0
  263. package/lib/services/debugmailer.service.js.map +1 -0
  264. package/lib/services/domainservice.service.d.ts +203 -0
  265. package/lib/services/domainservice.service.d.ts.map +1 -0
  266. package/lib/services/domainservice.service.js +600 -0
  267. package/lib/services/domainservice.service.js.map +1 -0
  268. package/lib/services/httpserver.service.d.ts +248 -0
  269. package/lib/services/httpserver.service.d.ts.map +1 -0
  270. package/lib/services/httpserver.service.js +673 -0
  271. package/lib/services/httpserver.service.js.map +1 -0
  272. package/lib/services/iauthentication.d.ts +9 -0
  273. package/lib/services/iauthentication.d.ts.map +1 -0
  274. package/lib/services/iauthentication.js +2 -0
  275. package/lib/services/iauthentication.js.map +1 -0
  276. package/lib/services/icryptoservice.d.ts +127 -0
  277. package/lib/services/icryptoservice.d.ts.map +1 -0
  278. package/lib/services/icryptoservice.js +68 -0
  279. package/lib/services/icryptoservice.js.map +1 -0
  280. package/lib/services/imailer.d.ts +17 -0
  281. package/lib/services/imailer.d.ts.map +1 -0
  282. package/lib/services/imailer.js +2 -0
  283. package/lib/services/imailer.js.map +1 -0
  284. package/lib/services/iservice.d.ts +104 -0
  285. package/lib/services/iservice.d.ts.map +1 -0
  286. package/lib/services/iservice.js +63 -0
  287. package/lib/services/iservice.js.map +1 -0
  288. package/lib/services/mailer.service.d.ts +220 -0
  289. package/lib/services/mailer.service.d.ts.map +1 -0
  290. package/lib/services/mailer.service.js +251 -0
  291. package/lib/services/mailer.service.js.map +1 -0
  292. package/lib/services/{notificationservice.d.ts → notificationservice.service.d.ts} +10 -10
  293. package/lib/services/notificationservice.service.d.ts.map +1 -0
  294. package/lib/services/{notificationservice.js → notificationservice.service.js} +24 -12
  295. package/lib/services/notificationservice.service.js.map +1 -0
  296. package/lib/services/oauth.d.ts +58 -31
  297. package/lib/services/oauth.d.ts.map +1 -0
  298. package/lib/services/oauth.js +365 -251
  299. package/lib/services/oauth.js.map +1 -1
  300. package/lib/services/operationstransport.d.ts +65 -0
  301. package/lib/services/operationstransport.d.ts.map +1 -0
  302. package/lib/services/operationstransport.js +103 -0
  303. package/lib/services/operationstransport.js.map +1 -0
  304. package/lib/services/{prometheus.d.ts → prometheus.service.d.ts} +13 -11
  305. package/lib/services/prometheus.service.d.ts.map +1 -0
  306. package/lib/services/prometheus.service.js +203 -0
  307. package/lib/services/prometheus.service.js.map +1 -0
  308. package/lib/services/resource.service.d.ts +121 -0
  309. package/lib/services/resource.service.d.ts.map +1 -0
  310. package/lib/services/resource.service.js +301 -0
  311. package/lib/services/resource.service.js.map +1 -0
  312. package/lib/services/service.d.ts +88 -189
  313. package/lib/services/service.d.ts.map +1 -0
  314. package/lib/services/service.js +407 -432
  315. package/lib/services/service.js.map +1 -1
  316. package/lib/services/servicecommands.d.ts +99 -0
  317. package/lib/services/servicecommands.d.ts.map +1 -0
  318. package/lib/services/servicecommands.js +165 -0
  319. package/lib/services/servicecommands.js.map +1 -0
  320. package/lib/services/serviceparameters.d.ts +33 -0
  321. package/lib/services/serviceparameters.d.ts.map +1 -0
  322. package/lib/services/serviceparameters.js +79 -0
  323. package/lib/services/serviceparameters.js.map +1 -0
  324. package/lib/{utils → session}/cookie.d.ts +32 -18
  325. package/lib/session/cookie.d.ts.map +1 -0
  326. package/lib/{utils → session}/cookie.js +76 -23
  327. package/lib/session/cookie.js.map +1 -0
  328. package/lib/session/manager.model.d.ts +71 -0
  329. package/lib/session/manager.model.d.ts.map +1 -0
  330. package/lib/session/manager.model.js +155 -0
  331. package/lib/session/manager.model.js.map +1 -0
  332. package/lib/session/session.d.ts +57 -0
  333. package/lib/session/session.d.ts.map +1 -0
  334. package/lib/session/session.js +126 -0
  335. package/lib/session/session.js.map +1 -0
  336. package/lib/stores/istore.d.ts +99 -0
  337. package/lib/stores/istore.d.ts.map +1 -0
  338. package/lib/stores/istore.js +26 -0
  339. package/lib/stores/istore.js.map +1 -0
  340. package/lib/stores/memory.service.d.ts +114 -0
  341. package/lib/stores/memory.service.d.ts.map +1 -0
  342. package/lib/stores/memory.service.js +343 -0
  343. package/lib/stores/memory.service.js.map +1 -0
  344. package/lib/stores/store.d.ts +127 -768
  345. package/lib/stores/store.d.ts.map +1 -0
  346. package/lib/stores/store.js +258 -1718
  347. package/lib/stores/store.js.map +1 -1
  348. package/lib/templates/templates.d.ts +39 -0
  349. package/lib/templates/templates.d.ts.map +1 -0
  350. package/lib/templates/templates.js +92 -0
  351. package/lib/templates/templates.js.map +1 -0
  352. package/lib/test/application.d.ts +174 -0
  353. package/lib/test/application.d.ts.map +1 -0
  354. package/lib/test/application.js +288 -0
  355. package/lib/test/application.js.map +1 -0
  356. package/lib/test/asyncstorage.d.ts +16 -0
  357. package/lib/test/asyncstorage.d.ts.map +1 -0
  358. package/lib/test/asyncstorage.js +32 -0
  359. package/lib/test/asyncstorage.js.map +1 -0
  360. package/lib/test/core.d.ts +63 -0
  361. package/lib/test/core.d.ts.map +1 -0
  362. package/lib/test/core.js +190 -0
  363. package/lib/test/core.js.map +1 -0
  364. package/lib/test/index.d.ts +7 -0
  365. package/lib/test/index.d.ts.map +1 -0
  366. package/lib/test/index.js +8 -0
  367. package/lib/test/index.js.map +1 -0
  368. package/lib/test/internal.d.ts +34 -0
  369. package/lib/test/internal.d.ts.map +1 -0
  370. package/lib/test/internal.js +156 -0
  371. package/lib/test/internal.js.map +1 -0
  372. package/lib/test/objects.d.ts +318 -0
  373. package/lib/test/objects.d.ts.map +1 -0
  374. package/lib/test/objects.js +443 -0
  375. package/lib/test/objects.js.map +1 -0
  376. package/lib/utils/abstractdeployer.d.ts +5 -2
  377. package/lib/utils/abstractdeployer.d.ts.map +1 -0
  378. package/lib/utils/abstractdeployer.js +3 -0
  379. package/lib/utils/abstractdeployer.js.map +1 -1
  380. package/package.json +85 -56
  381. package/test/cachedapp/webda.config.json +1 -5
  382. package/test/config-cached.json +1 -5
  383. package/test/config.json +6 -99
  384. package/test/data/.env +1 -0
  385. package/test/my-cnf.json +9 -0
  386. package/webda.module.json +3462 -2231
  387. package/lib/application.d.ts +0 -876
  388. package/lib/application.js +0 -741
  389. package/lib/application.js.map +0 -1
  390. package/lib/application.spec.d.ts +0 -1
  391. package/lib/application.spec.js +0 -234
  392. package/lib/application.spec.js.map +0 -1
  393. package/lib/core.d.ts +0 -740
  394. package/lib/core.js +0 -1310
  395. package/lib/core.js.map +0 -1
  396. package/lib/core.spec.d.ts +0 -1
  397. package/lib/core.spec.js +0 -761
  398. package/lib/core.spec.js.map +0 -1
  399. package/lib/errors.d.ts +0 -65
  400. package/lib/errors.js +0 -113
  401. package/lib/errors.js.map +0 -1
  402. package/lib/errors.spec.d.ts +0 -1
  403. package/lib/errors.spec.js +0 -33
  404. package/lib/errors.spec.js.map +0 -1
  405. package/lib/models/aclmodel.spec.d.ts +0 -1
  406. package/lib/models/aclmodel.spec.js +0 -187
  407. package/lib/models/aclmodel.spec.js.map +0 -1
  408. package/lib/models/coremodel.d.ts +0 -887
  409. package/lib/models/coremodel.js +0 -1208
  410. package/lib/models/coremodel.js.map +0 -1
  411. package/lib/models/coremodel.spec.d.ts +0 -1
  412. package/lib/models/coremodel.spec.js +0 -462
  413. package/lib/models/coremodel.spec.js.map +0 -1
  414. package/lib/models/ident.d.ts +0 -53
  415. package/lib/models/ident.js +0 -40
  416. package/lib/models/ident.js.map +0 -1
  417. package/lib/models/ident.spec.d.ts +0 -1
  418. package/lib/models/ident.spec.js +0 -43
  419. package/lib/models/ident.spec.js.map +0 -1
  420. package/lib/models/ownermodel.d.ts +0 -50
  421. package/lib/models/ownermodel.js +0 -65
  422. package/lib/models/ownermodel.js.map +0 -1
  423. package/lib/models/ownermodel.spec.d.ts +0 -1
  424. package/lib/models/ownermodel.spec.js +0 -191
  425. package/lib/models/ownermodel.spec.js.map +0 -1
  426. package/lib/models/relations.d.ts +0 -181
  427. package/lib/models/relations.js +0 -157
  428. package/lib/models/relations.js.map +0 -1
  429. package/lib/models/relations.spec.d.ts +0 -12
  430. package/lib/models/relations.spec.js +0 -224
  431. package/lib/models/relations.spec.js.map +0 -1
  432. package/lib/models/rolemodel.d.ts +0 -10
  433. package/lib/models/rolemodel.js +0 -35
  434. package/lib/models/rolemodel.js.map +0 -1
  435. package/lib/models/rolemodel.spec.d.ts +0 -1
  436. package/lib/models/rolemodel.spec.js +0 -86
  437. package/lib/models/rolemodel.spec.js.map +0 -1
  438. package/lib/models/user.d.ts +0 -100
  439. package/lib/models/user.js +0 -157
  440. package/lib/models/user.js.map +0 -1
  441. package/lib/models/user.spec.d.ts +0 -1
  442. package/lib/models/user.spec.js +0 -88
  443. package/lib/models/user.spec.js.map +0 -1
  444. package/lib/queues/filequeue.d.ts +0 -58
  445. package/lib/queues/filequeue.js +0 -131
  446. package/lib/queues/filequeue.js.map +0 -1
  447. package/lib/queues/filequeue.spec.d.ts +0 -1
  448. package/lib/queues/filequeue.spec.js +0 -78
  449. package/lib/queues/filequeue.spec.js.map +0 -1
  450. package/lib/queues/memoryqueue.d.ts +0 -45
  451. package/lib/queues/memoryqueue.js +0 -81
  452. package/lib/queues/memoryqueue.js.map +0 -1
  453. package/lib/queues/memoryqueue.spec.d.ts +0 -1
  454. package/lib/queues/memoryqueue.spec.js +0 -192
  455. package/lib/queues/memoryqueue.spec.js.map +0 -1
  456. package/lib/queues/queue.spec.d.ts +0 -5
  457. package/lib/queues/queue.spec.js +0 -55
  458. package/lib/queues/queue.spec.js.map +0 -1
  459. package/lib/router.d.ts +0 -172
  460. package/lib/router.js +0 -419
  461. package/lib/router.js.map +0 -1
  462. package/lib/router.spec.d.ts +0 -1
  463. package/lib/router.spec.js +0 -229
  464. package/lib/router.spec.js.map +0 -1
  465. package/lib/services/asyncevents.d.ts +0 -151
  466. package/lib/services/asyncevents.js +0 -217
  467. package/lib/services/asyncevents.js.map +0 -1
  468. package/lib/services/asyncevents.spec.d.ts +0 -1
  469. package/lib/services/asyncevents.spec.js +0 -118
  470. package/lib/services/asyncevents.spec.js.map +0 -1
  471. package/lib/services/authentication.js +0 -772
  472. package/lib/services/authentication.js.map +0 -1
  473. package/lib/services/authentication.spec.d.ts +0 -1
  474. package/lib/services/authentication.spec.js +0 -458
  475. package/lib/services/authentication.spec.js.map +0 -1
  476. package/lib/services/binary.d.ts +0 -549
  477. package/lib/services/binary.js +0 -986
  478. package/lib/services/binary.js.map +0 -1
  479. package/lib/services/binary.spec.d.ts +0 -44
  480. package/lib/services/binary.spec.js +0 -438
  481. package/lib/services/binary.spec.js.map +0 -1
  482. package/lib/services/cloudbinary.spec.d.ts +0 -13
  483. package/lib/services/cloudbinary.spec.js +0 -192
  484. package/lib/services/cloudbinary.spec.js.map +0 -1
  485. package/lib/services/configuration.js +0 -178
  486. package/lib/services/configuration.js.map +0 -1
  487. package/lib/services/configuration.spec.d.ts +0 -1
  488. package/lib/services/configuration.spec.js +0 -87
  489. package/lib/services/configuration.spec.js.map +0 -1
  490. package/lib/services/cron.d.ts +0 -73
  491. package/lib/services/cron.js +0 -141
  492. package/lib/services/cron.js.map +0 -1
  493. package/lib/services/cron.spec.d.ts +0 -1
  494. package/lib/services/cron.spec.js +0 -76
  495. package/lib/services/cron.spec.js.map +0 -1
  496. package/lib/services/cryptoservice.js +0 -434
  497. package/lib/services/cryptoservice.js.map +0 -1
  498. package/lib/services/cryptoservice.spec.d.ts +0 -1
  499. package/lib/services/cryptoservice.spec.js +0 -177
  500. package/lib/services/cryptoservice.spec.js.map +0 -1
  501. package/lib/services/debugmailer.d.ts +0 -36
  502. package/lib/services/debugmailer.js +0 -52
  503. package/lib/services/debugmailer.js.map +0 -1
  504. package/lib/services/debugmailer.spec.d.ts +0 -1
  505. package/lib/services/debugmailer.spec.js +0 -29
  506. package/lib/services/debugmailer.spec.js.map +0 -1
  507. package/lib/services/domainservice.d.ts +0 -152
  508. package/lib/services/domainservice.js +0 -881
  509. package/lib/services/domainservice.js.map +0 -1
  510. package/lib/services/domainservice.spec.d.ts +0 -1
  511. package/lib/services/domainservice.spec.js +0 -401
  512. package/lib/services/domainservice.spec.js.map +0 -1
  513. package/lib/services/filebinary.d.ts +0 -133
  514. package/lib/services/filebinary.js +0 -371
  515. package/lib/services/filebinary.js.map +0 -1
  516. package/lib/services/filebinary.spec.d.ts +0 -21
  517. package/lib/services/filebinary.spec.js +0 -415
  518. package/lib/services/filebinary.spec.js.map +0 -1
  519. package/lib/services/fileconfiguration.d.ts +0 -22
  520. package/lib/services/fileconfiguration.js +0 -48
  521. package/lib/services/fileconfiguration.js.map +0 -1
  522. package/lib/services/fileconfiguration.spec.d.ts +0 -1
  523. package/lib/services/fileconfiguration.spec.js +0 -177
  524. package/lib/services/fileconfiguration.spec.js.map +0 -1
  525. package/lib/services/invitationservice.d.ts +0 -222
  526. package/lib/services/invitationservice.js +0 -526
  527. package/lib/services/invitationservice.js.map +0 -1
  528. package/lib/services/invitationservice.spec.d.ts +0 -1
  529. package/lib/services/invitationservice.spec.js +0 -516
  530. package/lib/services/invitationservice.spec.js.map +0 -1
  531. package/lib/services/kubernetesconfiguration.d.ts +0 -26
  532. package/lib/services/kubernetesconfiguration.js +0 -54
  533. package/lib/services/kubernetesconfiguration.js.map +0 -1
  534. package/lib/services/kubernetesconfiguration.spec.d.ts +0 -1
  535. package/lib/services/kubernetesconfiguration.spec.js +0 -147
  536. package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
  537. package/lib/services/mailer.d.ts +0 -165
  538. package/lib/services/mailer.js +0 -176
  539. package/lib/services/mailer.js.map +0 -1
  540. package/lib/services/mailer.spec.d.ts +0 -1
  541. package/lib/services/mailer.spec.js +0 -144
  542. package/lib/services/mailer.spec.js.map +0 -1
  543. package/lib/services/notificationservice.js.map +0 -1
  544. package/lib/services/notificationservice.spec.d.ts +0 -1
  545. package/lib/services/notificationservice.spec.js +0 -78
  546. package/lib/services/notificationservice.spec.js.map +0 -1
  547. package/lib/services/oauth.spec.d.ts +0 -1
  548. package/lib/services/oauth.spec.js +0 -184
  549. package/lib/services/oauth.spec.js.map +0 -1
  550. package/lib/services/prometheus.js +0 -160
  551. package/lib/services/prometheus.js.map +0 -1
  552. package/lib/services/prometheus.spec.d.ts +0 -1
  553. package/lib/services/prometheus.spec.js +0 -57
  554. package/lib/services/prometheus.spec.js.map +0 -1
  555. package/lib/services/resource.d.ts +0 -87
  556. package/lib/services/resource.js +0 -156
  557. package/lib/services/resource.js.map +0 -1
  558. package/lib/services/resource.spec.d.ts +0 -1
  559. package/lib/services/resource.spec.js +0 -122
  560. package/lib/services/resource.spec.js.map +0 -1
  561. package/lib/services/service.spec.d.ts +0 -1
  562. package/lib/services/service.spec.js +0 -268
  563. package/lib/services/service.spec.js.map +0 -1
  564. package/lib/stores/aggregator.d.ts +0 -41
  565. package/lib/stores/aggregator.js +0 -80
  566. package/lib/stores/aggregator.js.map +0 -1
  567. package/lib/stores/aliasstore.d.ts +0 -108
  568. package/lib/stores/aliasstore.js +0 -168
  569. package/lib/stores/aliasstore.js.map +0 -1
  570. package/lib/stores/aliasstore.spec.d.ts +0 -11
  571. package/lib/stores/aliasstore.spec.js +0 -89
  572. package/lib/stores/aliasstore.spec.js.map +0 -1
  573. package/lib/stores/file.d.ts +0 -107
  574. package/lib/stores/file.js +0 -188
  575. package/lib/stores/file.js.map +0 -1
  576. package/lib/stores/file.spec.d.ts +0 -19
  577. package/lib/stores/file.spec.js +0 -232
  578. package/lib/stores/file.spec.js.map +0 -1
  579. package/lib/stores/mapper.d.ts +0 -149
  580. package/lib/stores/mapper.js +0 -293
  581. package/lib/stores/mapper.js.map +0 -1
  582. package/lib/stores/mapper.spec.d.ts +0 -1
  583. package/lib/stores/mapper.spec.js +0 -160
  584. package/lib/stores/mapper.spec.js.map +0 -1
  585. package/lib/stores/memory.d.ts +0 -151
  586. package/lib/stores/memory.js +0 -371
  587. package/lib/stores/memory.js.map +0 -1
  588. package/lib/stores/memory.spec.d.ts +0 -20
  589. package/lib/stores/memory.spec.js +0 -328
  590. package/lib/stores/memory.spec.js.map +0 -1
  591. package/lib/stores/modelmapper.d.ts +0 -61
  592. package/lib/stores/modelmapper.js +0 -199
  593. package/lib/stores/modelmapper.js.map +0 -1
  594. package/lib/stores/store.spec.d.ts +0 -65
  595. package/lib/stores/store.spec.js +0 -906
  596. package/lib/stores/store.spec.js.map +0 -1
  597. package/lib/test.d.ts +0 -162
  598. package/lib/test.js +0 -399
  599. package/lib/test.js.map +0 -1
  600. package/lib/unpackedapplication.d.ts +0 -76
  601. package/lib/unpackedapplication.js +0 -299
  602. package/lib/unpackedapplication.js.map +0 -1
  603. package/lib/utils/abstractdeployer.spec.d.ts +0 -1
  604. package/lib/utils/abstractdeployer.spec.js +0 -21
  605. package/lib/utils/abstractdeployer.spec.js.map +0 -1
  606. package/lib/utils/case.d.ts +0 -7
  607. package/lib/utils/case.js +0 -43
  608. package/lib/utils/case.js.map +0 -1
  609. package/lib/utils/case.spec.d.ts +0 -1
  610. package/lib/utils/case.spec.js +0 -50
  611. package/lib/utils/case.spec.js.map +0 -1
  612. package/lib/utils/context.d.ts +0 -462
  613. package/lib/utils/context.js +0 -732
  614. package/lib/utils/context.js.map +0 -1
  615. package/lib/utils/context.spec.d.ts +0 -9
  616. package/lib/utils/context.spec.js +0 -372
  617. package/lib/utils/context.spec.js.map +0 -1
  618. package/lib/utils/cookie.js.map +0 -1
  619. package/lib/utils/cookie.spec.d.ts +0 -1
  620. package/lib/utils/cookie.spec.js +0 -78
  621. package/lib/utils/cookie.spec.js.map +0 -1
  622. package/lib/utils/esm.d.ts +0 -13
  623. package/lib/utils/esm.js +0 -19
  624. package/lib/utils/esm.js.map +0 -1
  625. package/lib/utils/httpcontext.js.map +0 -1
  626. package/lib/utils/httpcontext.spec.d.ts +0 -4
  627. package/lib/utils/httpcontext.spec.js +0 -77
  628. package/lib/utils/httpcontext.spec.js.map +0 -1
  629. package/lib/utils/logger.d.ts +0 -91
  630. package/lib/utils/logger.js +0 -121
  631. package/lib/utils/logger.js.map +0 -1
  632. package/lib/utils/logger.spec.d.ts +0 -1
  633. package/lib/utils/logger.spec.js +0 -48
  634. package/lib/utils/logger.spec.js.map +0 -1
  635. package/lib/utils/serializers.d.ts +0 -161
  636. package/lib/utils/serializers.js +0 -420
  637. package/lib/utils/serializers.js.map +0 -1
  638. package/lib/utils/serializers.spec.d.ts +0 -1
  639. package/lib/utils/serializers.spec.js +0 -313
  640. package/lib/utils/serializers.spec.js.map +0 -1
  641. package/lib/utils/session.d.ts +0 -126
  642. package/lib/utils/session.js +0 -166
  643. package/lib/utils/session.js.map +0 -1
  644. package/lib/utils/session.spec.d.ts +0 -1
  645. package/lib/utils/session.spec.js +0 -71
  646. package/lib/utils/session.spec.js.map +0 -1
  647. package/lib/utils/throttler.d.ts +0 -102
  648. package/lib/utils/throttler.js +0 -168
  649. package/lib/utils/throttler.js.map +0 -1
  650. package/lib/utils/throttler.spec.d.ts +0 -1
  651. package/lib/utils/throttler.spec.js +0 -55
  652. package/lib/utils/throttler.spec.js.map +0 -1
  653. package/lib/utils/waiter.d.ts +0 -93
  654. package/lib/utils/waiter.js +0 -148
  655. package/lib/utils/waiter.js.map +0 -1
  656. package/lib/utils/waiter.spec.d.ts +0 -1
  657. package/lib/utils/waiter.spec.js +0 -98
  658. package/lib/utils/waiter.spec.js.map +0 -1
  659. package/test/config-file-missing-file-no-default.json +0 -44
  660. package/test/config-file-missing-file.json +0 -55
  661. package/test/config-file-no-reload.json +0 -69
  662. package/test/config-file-reload.json +0 -68
  663. package/test/config-invitation.json +0 -63
  664. package/test/config-kube-reload.json +0 -68
  665. package/test/config-reload.json +0 -66
  666. package/test/config.old.json +0 -152
  667. package/test/jsonutils/mdocs.yaml +0 -56
  668. package/test/jsonutils/test.json +0 -3
  669. package/test/jsonutils/test.yml +0 -5
  670. package/test/moddas/annotatedservice.js +0 -23
  671. package/test/moddas/debugmailer.js +0 -13
  672. package/test/moddas/fakeservice.js +0 -4
  673. package/test/moddas/voidstore.js +0 -66
  674. package/test/models/ident.js +0 -36
  675. package/test/models/task.js +0 -42
@@ -1,881 +0,0 @@
1
- import { Core, JSONUtils, Service, ServiceParameters } from "../index.js";
2
- import { TransformCase } from "../utils/case.js";
3
- /**
4
- * @WebdaModda
5
- */
6
- export class ModelsOperationsService extends Service {
7
- /**
8
- * Add operations for all exposed models
9
- * @returns
10
- */
11
- initOperations() {
12
- super.initOperations();
13
- const app = this.getWebda().getApplication();
14
- // Add default schemas
15
- if (!app.hasSchema("uuidRequest")) {
16
- app.registerSchema("uuidRequest", {
17
- type: "object",
18
- properties: {
19
- uuid: {
20
- type: "string"
21
- }
22
- },
23
- required: ["uuid"]
24
- });
25
- }
26
- if (!app.hasSchema("searchRequest")) {
27
- app.registerSchema("searchRequest", {
28
- type: "object",
29
- properties: {
30
- query: {
31
- type: "string"
32
- }
33
- }
34
- });
35
- }
36
- const getSchema = (id, input, params) => {
37
- const schema = {
38
- type: "object",
39
- properties: {},
40
- required: []
41
- };
42
- if (input && app.hasSchema(input)) {
43
- schema.properties["input"] = app.getSchema(input);
44
- schema.required.push("input");
45
- }
46
- if (params) {
47
- schema.properties["params"] = app.getSchema(params);
48
- schema.required.push("params");
49
- }
50
- app.registerSchema(id, schema);
51
- return id;
52
- };
53
- const models = app.getModels();
54
- for (let modelKey in models) {
55
- const model = models[modelKey];
56
- const expose = model.Expose;
57
- if (!expose) {
58
- continue;
59
- }
60
- const prefix = modelKey.split("/").pop();
61
- const modelSchema = modelKey;
62
- ["create", "update"]
63
- .filter(k => !expose.restrict[k])
64
- .forEach(k => {
65
- k = k.substring(0, 1).toUpperCase() + k.substring(1);
66
- const id = `${prefix}.${k}`;
67
- this.getWebda().registerOperation(id, {
68
- service: this.getName(),
69
- method: k === "Create" ? "httpCreate" : "operationUpdate",
70
- id,
71
- input: getSchema(id, modelSchema, k === "Update" ? "uuidRequest" : undefined),
72
- output: modelSchema
73
- });
74
- });
75
- ["delete", "get"]
76
- .filter(k => !expose.restrict[k])
77
- .forEach(k => {
78
- k = k.substring(0, 1).toUpperCase() + k.substring(1);
79
- const id = `${prefix}.${k}`;
80
- const info = {
81
- service: this.getName(),
82
- method: `http${k}`,
83
- id,
84
- input: getSchema(id, undefined, "uuidRequest")
85
- };
86
- if (k === "Get") {
87
- info.output = modelSchema;
88
- }
89
- this.getWebda().registerOperation(id, info);
90
- });
91
- if (!expose.restrict.query) {
92
- const id = `${prefix}.Query`;
93
- this.getWebda().registerOperation(id, {
94
- service: this.getName(),
95
- method: "httpQuery",
96
- id,
97
- input: getSchema(id, undefined, "searchRequest")
98
- });
99
- }
100
- // Add patch
101
- if (!expose.restrict.update) {
102
- const id = `${prefix}.Patch`;
103
- this.getWebda().registerOperation(id, {
104
- service: this.getName(),
105
- method: "operationPatch",
106
- id,
107
- input: getSchema(id, modelSchema + "?", "uuidRequest")
108
- });
109
- }
110
- // Add all operations for Actions
111
- let actions = model.getActions();
112
- Object.keys(actions).forEach(name => {
113
- const id = `${prefix}.${name.substring(0, 1).toUpperCase() + name.substring(1)}`;
114
- const info = {
115
- service: this.getName(),
116
- method: `action${name}`,
117
- id
118
- };
119
- info.input = getSchema(id, `${modelKey}.${name}.input`, "uuidRequest");
120
- info.output = `${modelKey}.${name}.output`;
121
- this.getWebda().registerOperation(id, info);
122
- });
123
- }
124
- }
125
- }
126
- export class DomainServiceParameters extends ServiceParameters {
127
- constructor(params) {
128
- super(params);
129
- // Init default here
130
- this.operations ?? (this.operations = true);
131
- this.nameTransfomer ?? (this.nameTransfomer = "camelCase");
132
- this.queryMethod ?? (this.queryMethod = "PUT");
133
- this.models ?? (this.models = ["*"]);
134
- this.excludedModels = this.models.filter(i => i.startsWith("!")).map(i => i.substring(1));
135
- // Only contains excluded models so a wildcard is implied
136
- if (this.models.length === this.excludedModels.length) {
137
- this.models = ["*"];
138
- }
139
- }
140
- /**
141
- * Is a model is included in the service
142
- * @param model
143
- * @returns
144
- */
145
- isIncluded(model) {
146
- return !this.isExcluded(model) && (this.models.includes("*") || this.models.includes(model));
147
- }
148
- /**
149
- * Is a model excluded from the service
150
- * @param model
151
- * @returns
152
- */
153
- isExcluded(model) {
154
- return this.excludedModels.includes(model);
155
- }
156
- }
157
- /**
158
- * Swagger static html
159
- */
160
- const swagger = `
161
- <html>
162
- <head>
163
- <meta charset="UTF-8">
164
- <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.19.5/swagger-ui.css" >
165
- <style>
166
- .topbar {
167
- display: none;
168
- }
169
- </style>
170
- </head>
171
-
172
- <body>
173
- <div id="swagger-ui"></div>
174
- <script src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.19.5/swagger-ui-bundle.js"> </script>
175
- <script src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.19.5/swagger-ui-standalone-preset.js"> </script>
176
- <script>
177
- const spec = {{OPENAPI}};
178
- window.onload = function() {
179
- const ui = SwaggerUIBundle({
180
- spec: spec,
181
- dom_id: '#swagger-ui',
182
- deepLinking: true,
183
- presets: [
184
- SwaggerUIBundle.presets.apis,
185
- SwaggerUIStandalonePreset
186
- ],
187
- plugins: [
188
- SwaggerUIBundle.plugins.DownloadUrl
189
- ],
190
- layout: "StandaloneLayout"
191
- })
192
-
193
- window.ui = ui
194
- }
195
- </script>
196
- </body>
197
- </html>
198
- `;
199
- /**
200
- * Domain Service expose all the models as Route and Operations
201
- *
202
- * Model are exposed if they have a Expose decorator
203
- *
204
- * Children models Exposed should be under the first ModelRelated targetting them or the segment endpoint of Expose
205
- *
206
- * Other relations (ModelLinks, ModelParent) should only display their information but not be exposed
207
- * ModelRelated should be ignored
208
- */
209
- export class DomainService extends Service {
210
- /**
211
- * Return the model name for this service
212
- * @param name
213
- * @returns
214
- *
215
- * @see https://blog.boot.dev/clean-code/casings-in-coding/#:~:text=%F0%9F%94%97%20Camel%20Case,Go
216
- */
217
- transformName(name) {
218
- return TransformCase(name, this.parameters.nameTransfomer);
219
- }
220
- /**
221
- * Explore the models
222
- * @param model
223
- * @param name
224
- * @param depth
225
- * @param modelContext
226
- * @returns
227
- */
228
- walkModel(model, name, depth = 0, modelContext = {}) {
229
- // If not expose or not in the list of models
230
- if (!model.Expose || (model.getIdentifier && !this.parameters.isIncluded(model.getIdentifier()))) {
231
- return;
232
- }
233
- const context = JSONUtils.duplicate(modelContext);
234
- context.depth = depth;
235
- if (!this.handleModel(model, name, context)) {
236
- return;
237
- }
238
- const queries = this.app.getRelations(model).queries || [];
239
- // Get the children now
240
- (this.app.getRelations(model).children || []).forEach(name => {
241
- const childModel = this.app.getModel(name);
242
- const parentAttribute = this.app.getRelations(childModel)?.parent?.attribute;
243
- const segment = queries.find(q => q.model === name && q.targetAttribute === parentAttribute)?.attribute ||
244
- this.app.getModelPlural(name);
245
- this.walkModel(childModel, segment, depth + 1, context);
246
- });
247
- }
248
- /**
249
- * Your service is now created as all the other services
250
- */
251
- resolve() {
252
- super.resolve();
253
- this.app = this.getWebda().getApplication();
254
- // Add all routes per model
255
- this.app.getRootExposedModels().forEach(name => {
256
- const model = this.app.getModel(name);
257
- this.walkModel(model, this.app.getModelPlural(name));
258
- });
259
- return this;
260
- }
261
- }
262
- /**
263
- *
264
- */
265
- export class RESTDomainServiceParameters extends DomainServiceParameters {
266
- /**
267
- * Set default url to /
268
- * @param params
269
- */
270
- constructor(params) {
271
- super(params);
272
- this.url ?? (this.url = "/");
273
- }
274
- }
275
- /**
276
- * Expose all models via a REST API
277
- * @WebdaModda
278
- */
279
- export class RESTDomainService extends DomainService {
280
- /**
281
- * Override to fallback on isDebug for exposeOpenAPI
282
- * @returns
283
- */
284
- resolve() {
285
- var _a;
286
- (_a = this.parameters).exposeOpenAPI ?? (_a.exposeOpenAPI = this.getWebda().isDebug());
287
- super.resolve();
288
- if (this.parameters.exposeOpenAPI) {
289
- this.addRoute(".", ["GET"], this.openapi, { hidden: true });
290
- }
291
- return this;
292
- }
293
- /**
294
- * @override
295
- */
296
- loadParameters(params) {
297
- return new RESTDomainServiceParameters(params);
298
- }
299
- /**
300
- * Handle one model and expose it based on the service
301
- * @param model
302
- * @param name
303
- * @param context
304
- * @returns
305
- */
306
- handleModel(model, name, context) {
307
- const depth = context.depth || 0;
308
- const relations = model.getRelations();
309
- const injectAttribute = relations?.parent?.attribute;
310
- const app = this.getWebda().getApplication();
311
- const injector = (service, method, type, ...args) => {
312
- return async (context) => {
313
- let parentId = `pid.${depth - 1}`;
314
- if (type === "SET" && injectAttribute && depth > 0) {
315
- (await context.getInput())[injectAttribute] = context.getPathParameters()[parentId];
316
- }
317
- else if (type === "QUERY") {
318
- let input = await context.getInput({ defaultValue: { q: "" } });
319
- let q;
320
- if (context.getHttpContext().getMethod() === "GET") {
321
- q = context.getParameters().q;
322
- }
323
- else {
324
- q = input.q;
325
- }
326
- let query = q ? ` AND (${q})` : "";
327
- if (injectAttribute) {
328
- query = ` AND ${injectAttribute} = "${context.getPathParameters()[parentId]}"` + query;
329
- }
330
- if (args[0] !== 0) {
331
- query = `__types CONTAINS "${model.getIdentifier()}"` + query;
332
- }
333
- else if (query.startsWith(" AND ")) {
334
- query = query.substring(5);
335
- }
336
- if (context.getHttpContext().getMethod() === "GET") {
337
- context.getParameters().q = query;
338
- }
339
- else {
340
- input.q = query;
341
- }
342
- this.log("TRACE", `Query modified to '${query}' from '${q}' ${args[0]}`);
343
- }
344
- // Complete the uuid if needed
345
- if (context.getParameters().uuid) {
346
- context.getParameters().uuid = model.completeUid(context.getParameters().uuid);
347
- }
348
- await service[method](context, ...args);
349
- };
350
- };
351
- // Update prefix
352
- const prefix = (context.prefix || (this.parameters.url.endsWith("/") ? this.parameters.url : this.parameters.url + "/")) +
353
- this.transformName(name);
354
- context.prefix = prefix + `/{pid.${depth}}/`;
355
- // Register the model url
356
- this.getWebda().getRouter().registerModelUrl(app.getModelName(model), prefix);
357
- let openapi = {
358
- [this.parameters.queryMethod.toLowerCase()]: {
359
- tags: [name],
360
- summary: `Query ${name}`,
361
- operationId: `query${name}`,
362
- requestBody: this.parameters.queryMethod === "GET"
363
- ? undefined
364
- : {
365
- content: {
366
- "application/json": {
367
- schema: {
368
- properties: {
369
- q: {
370
- type: "string"
371
- }
372
- }
373
- }
374
- }
375
- }
376
- },
377
- parameters: this.parameters.queryMethod === "GET"
378
- ? [
379
- {
380
- name: "q",
381
- in: "query",
382
- description: "Query to execute",
383
- schema: {
384
- type: "string"
385
- }
386
- }
387
- ]
388
- : [],
389
- responses: {
390
- "200": {
391
- description: "Operation success",
392
- content: {
393
- "application/json": {
394
- schema: {
395
- properties: {
396
- continuationToken: {
397
- type: "string"
398
- },
399
- results: {
400
- type: "array",
401
- items: {
402
- $ref: `#/components/schemas/${model.getIdentifier()}`
403
- }
404
- }
405
- }
406
- }
407
- }
408
- }
409
- },
410
- "400": {
411
- description: "Query is invalid"
412
- },
413
- "403": {
414
- description: "You don't have permissions"
415
- }
416
- }
417
- }
418
- };
419
- model.Expose.restrict.query ||
420
- this.addRoute(`${prefix}${this.parameters.queryMethod === "GET" ? "{?q?}" : ""}`, [this.parameters.queryMethod], injector(model.store(), "httpQuery", "QUERY", model.store().handleModel(model)), openapi);
421
- openapi = {
422
- post: {
423
- tags: [name],
424
- summary: `Create ${name}`,
425
- operationId: `create${name}`,
426
- requestBody: {
427
- content: {
428
- "application/json": {
429
- schema: {
430
- $ref: `#/components/schemas/${model.getIdentifier()}`
431
- }
432
- }
433
- }
434
- },
435
- responses: {
436
- "200": {
437
- description: "Operation success",
438
- content: {
439
- "application/json": {
440
- schema: {
441
- $ref: `#/components/schemas/${model.getIdentifier()}`
442
- }
443
- }
444
- }
445
- },
446
- "400": {
447
- description: "Invalid input"
448
- },
449
- "403": {
450
- description: "You don't have permissions"
451
- },
452
- "409": {
453
- description: "Object already exists"
454
- }
455
- }
456
- }
457
- };
458
- model.Expose.restrict.create ||
459
- this.addRoute(`${prefix}`, ["POST"], injector(model.store(), "operationCreate", "SET", model.getIdentifier()), openapi);
460
- openapi = {
461
- delete: {
462
- tags: [name],
463
- operationId: `delete${name}`,
464
- description: `Delete ${name} if the permissions allow`,
465
- summary: `Delete a ${name}`,
466
- responses: {
467
- "204": {
468
- description: "Operation success"
469
- },
470
- "403": {
471
- description: "You don't have permissions"
472
- },
473
- "404": {
474
- description: "Unknown object"
475
- }
476
- }
477
- }
478
- };
479
- model.Expose.restrict.delete ||
480
- this.addRoute(`${prefix}/{uuid}`, ["DELETE"], injector(model.store(), "httpDelete", "DELETE"), openapi);
481
- let openapiInfo = {
482
- tags: [name],
483
- operationId: `update${name}`,
484
- description: `Update ${name} if the permissions allow`,
485
- summary: `Update a ${name}`,
486
- requestBody: {
487
- content: {
488
- "application/json": {
489
- schema: {
490
- $ref: `#/components/schemas/${model.getIdentifier()}`
491
- }
492
- }
493
- }
494
- },
495
- responses: {
496
- "204": {
497
- description: "Operation success"
498
- },
499
- "400": {
500
- description: "Invalid input"
501
- },
502
- "403": {
503
- description: "You don't have permissions"
504
- },
505
- "404": {
506
- description: "Unknown object"
507
- }
508
- }
509
- };
510
- openapi = {
511
- put: openapiInfo,
512
- patch: openapiInfo
513
- };
514
- model.Expose.restrict.update ||
515
- this.addRoute(`${prefix}/{uuid}`, ["PUT", "PATCH"], injector(model.store(), "httpUpdate", "SET"), openapi);
516
- openapi = {
517
- get: {
518
- tags: [name],
519
- description: `Retrieve ${name} model if permissions allow`,
520
- summary: `Retrieve a ${name}`,
521
- operationId: `get${name}`,
522
- responses: {
523
- "200": {
524
- content: {
525
- "application/json": {
526
- schema: {
527
- $ref: `#/components/schemas/${model.getIdentifier()}`
528
- }
529
- }
530
- }
531
- },
532
- "400": {
533
- description: "Object is invalid"
534
- },
535
- "403": {
536
- description: "You don't have permissions"
537
- },
538
- "404": {
539
- description: "Unknown object"
540
- }
541
- }
542
- }
543
- };
544
- model.Expose.restrict.get ||
545
- this.addRoute(`${prefix}/{uuid}`, ["GET"], injector(model.store(), "httpGet", "GET"), openapi);
546
- // Add all actions
547
- // Actions cannot be restricted as its purpose is to be exposed
548
- let actions = model.getActions();
549
- Object.keys(actions).forEach(actionName => {
550
- let action = actions[actionName];
551
- openapi = {
552
- ...action.openapi
553
- };
554
- (action.methods || ["PUT"]).forEach(method => {
555
- openapi[method.toLowerCase()] = {
556
- tags: [name],
557
- ...(action.openapi?.[method.toLowerCase()] ?? {})
558
- };
559
- });
560
- if (app.hasSchema(`${model.getIdentifier(false)}.${actionName}.input`)) {
561
- Object.keys(openapi)
562
- .filter(k => ["get", "post", "put", "patch", "delete"].includes(k))
563
- .forEach(k => {
564
- openapi[k].requestBody = {
565
- content: {
566
- "application/json": {
567
- schema: {
568
- $ref: `#/components/schemas/${model.getIdentifier(false)}.${actionName}.input`
569
- }
570
- }
571
- }
572
- };
573
- });
574
- }
575
- if (app.hasSchema(`${model.getIdentifier(false)}.${actionName}.output`)) {
576
- Object.keys(openapi)
577
- .filter(k => ["get", "post", "put", "patch", "delete"].includes(k))
578
- .forEach(k => {
579
- var _a, _b;
580
- (_a = openapi[k]).responses ?? (_a.responses = {});
581
- (_b = openapi[k].responses)["200"] ?? (_b["200"] = {});
582
- openapi[k].responses["200"].content = {
583
- "application/json": {
584
- schema: {
585
- $ref: `#/components/schemas/${model.getIdentifier(false)}.${actionName}.output`
586
- }
587
- }
588
- };
589
- });
590
- }
591
- this.addRoute(action.global ? `${prefix}/${actionName}` : `${prefix}/{uuid}/${actionName}`, action.methods || ["PUT"], async (ctx) => {
592
- if (action.global) {
593
- return model.store().httpGlobalAction(ctx, model);
594
- }
595
- else {
596
- ctx.getParameters().uuid = model.completeUid(ctx.getParameters().uuid);
597
- return model.store().httpAction(ctx, action.method);
598
- }
599
- }, openapi);
600
- });
601
- /*
602
- Binaries should expose several methods
603
- If cardinality is ONE
604
- GET to download the binary
605
- POST to upload a binary directly
606
- PUT to upload a binary with challenge
607
- DELETE /{hash} to delete a binary
608
- PUT /{hash} to update metadata
609
- GET /url to get a signed url
610
-
611
- If cardinality is MANY
612
- GET /{index} to download the binary
613
- GET /{index}/url to get a signed url
614
- POST to upload a binary directly
615
- PUT to upload a binary with challenge
616
- DELETE /{index}/{hash} to delete a binary
617
- PUT /{index}/{hash} to update metadata
618
- */
619
- (relations.binaries || []).forEach(binary => {
620
- const store = Core.get().getBinaryStore(model, binary.attribute);
621
- const modelInjector = async (ctx) => {
622
- ctx.getParameters().model = model.getIdentifier();
623
- ctx.getParameters().property = binary.attribute;
624
- await store.httpRoute(ctx);
625
- };
626
- const modelInjectorChallenge = async (ctx) => {
627
- ctx.getParameters().model = model.getIdentifier();
628
- ctx.getParameters().property = binary.attribute;
629
- await store.httpChallenge(ctx);
630
- };
631
- const modelInjectorGet = async (ctx) => {
632
- ctx.getParameters().model = model.getIdentifier();
633
- ctx.getParameters().property = binary.attribute;
634
- await store.httpGet(ctx);
635
- };
636
- openapi = {
637
- put: {
638
- tags: [name],
639
- summary: `Upload ${binary.attribute} of ${name} after challenge`,
640
- description: `You will need to call the challenge method first to get a signed url to upload the content\nIf the data is already known then done is returned`,
641
- operationId: `upload${name}${binary.attribute}`,
642
- requestBody: {
643
- content: {
644
- "application/octet-stream": {
645
- schema: {
646
- type: "object",
647
- required: ["hash", "challenge"],
648
- properties: {
649
- hash: {
650
- type: "string",
651
- description: "md5(data)"
652
- },
653
- challenge: {
654
- type: "string",
655
- description: "md5('Webda' + data)"
656
- },
657
- size: {
658
- type: "number",
659
- description: "Size of the data"
660
- },
661
- name: {
662
- type: "string",
663
- description: "Name of the file"
664
- },
665
- mimetype: {
666
- type: "string",
667
- description: "Mimetype of the file"
668
- },
669
- metadata: {
670
- type: "object",
671
- description: "Metadata to add to the binary"
672
- }
673
- }
674
- }
675
- }
676
- }
677
- },
678
- responses: {
679
- "200": {
680
- description: "Operation success",
681
- content: {
682
- "application/octet-stream": {
683
- schema: {
684
- type: "object",
685
- properties: {
686
- done: {
687
- type: "boolean"
688
- },
689
- url: {
690
- type: "string"
691
- },
692
- method: {
693
- type: "string"
694
- },
695
- md5: {
696
- type: "string",
697
- description: "base64 md5 of the data\nThe next request requires Content-MD5 to be added with this one along with Content-Type: 'application/octet-stream'"
698
- }
699
- }
700
- }
701
- }
702
- }
703
- },
704
- "403": {
705
- description: "You don't have permissions"
706
- },
707
- "404": {
708
- description: "Unknown object"
709
- }
710
- }
711
- }
712
- };
713
- this.addRoute(`${prefix}/{uuid}/${binary.attribute}`, ["PUT"], modelInjectorChallenge, openapi);
714
- openapi = {
715
- post: {
716
- tags: [name],
717
- summary: `Upload ${binary.attribute} of ${name} directly`,
718
- description: `You can upload the content directly to the server\nThis is not the recommended way as it wont be able to optimize network traffic`,
719
- operationId: `upload${name}${binary.attribute}`,
720
- requestBody: {
721
- content: {
722
- "application/octet-stream": {
723
- schema: {
724
- type: "string",
725
- format: "binary"
726
- }
727
- }
728
- }
729
- },
730
- responses: {
731
- "204": {
732
- description: ""
733
- },
734
- "403": {
735
- description: "You don't have permissions"
736
- },
737
- "404": {
738
- description: "Object does not exist or attachment does not exist"
739
- }
740
- }
741
- }
742
- };
743
- this.addRoute(`${prefix}/{uuid}/${binary.attribute}`, ["POST"], modelInjector, openapi);
744
- let rootUrl = `${prefix}/{uuid}/${binary.attribute}`;
745
- if (binary.cardinality === "MANY") {
746
- rootUrl += "/{index}";
747
- }
748
- openapi = {
749
- get: {
750
- tags: [name],
751
- summary: `Download ${binary.attribute} of ${name}`,
752
- operationId: `download${name}${binary.attribute}`,
753
- responses: {
754
- "200": {
755
- description: "Operation success",
756
- content: {
757
- "application/octet-stream": {
758
- schema: {
759
- type: "string",
760
- format: "binary"
761
- }
762
- }
763
- }
764
- },
765
- "302": {
766
- description: "Redirect to the binary"
767
- },
768
- "403": {
769
- description: "You don't have permissions"
770
- },
771
- "404": {
772
- description: "Unknown object"
773
- }
774
- }
775
- }
776
- };
777
- this.addRoute(`${rootUrl}`, ["GET"], modelInjectorGet, openapi);
778
- openapi = {
779
- delete: {
780
- tags: [name],
781
- summary: `Delete ${binary.attribute} of ${name}`,
782
- responses: {
783
- "204": {
784
- description: ""
785
- },
786
- "403": {
787
- description: "You don't have permissions"
788
- },
789
- "404": {
790
- description: "Object does not exist or attachment does not exist"
791
- },
792
- "412": {
793
- description: "Provided hash does not match"
794
- }
795
- }
796
- }
797
- };
798
- this.addRoute(`${rootUrl}/{hash}`, ["DELETE"], modelInjector, openapi);
799
- openapi = {
800
- put: {
801
- tags: [name],
802
- summary: `Update metadata of ${binary.attribute} of ${name}`,
803
- operationId: `update${name}${binary.attribute}`,
804
- requestBody: {
805
- content: {
806
- "application/json": {
807
- schema: {
808
- type: "object",
809
- description: "Metadata to add to the binary",
810
- additionalProperties: true
811
- }
812
- }
813
- }
814
- },
815
- responses: {
816
- "204": {
817
- description: ""
818
- },
819
- "400": {
820
- description: "Invalid input: metadata are limited to 4kb"
821
- },
822
- "403": {
823
- description: "You don't have permissions"
824
- },
825
- "404": {
826
- description: "Object does not exist or attachment does not exist"
827
- },
828
- "412": {
829
- description: "Provided hash does not match"
830
- }
831
- }
832
- }
833
- };
834
- this.addRoute(`${rootUrl}/{hash}`, ["PUT"], modelInjector, openapi);
835
- openapi = {
836
- get: {
837
- tags: [name],
838
- summary: `Get a signed url to download ${binary.attribute} of ${name} with a limited lifetime`,
839
- responses: {
840
- "200": {
841
- description: "Operation success",
842
- content: {
843
- "application/json": {
844
- schema: {
845
- type: "object",
846
- properties: {
847
- Location: {
848
- type: "string",
849
- description: "Signed url to download the binary"
850
- },
851
- Map: {
852
- $ref: "#/components/schemas/BinaryMap"
853
- }
854
- }
855
- }
856
- }
857
- }
858
- },
859
- "403": {
860
- description: "You don't have permissions"
861
- },
862
- "404": {
863
- description: "Object does not exist or attachment does not exist"
864
- }
865
- }
866
- }
867
- };
868
- this.addRoute(`${rootUrl}/url`, ["GET"], modelInjectorGet, openapi);
869
- });
870
- return true;
871
- }
872
- /**
873
- * Serve the openapi with the swagger-ui
874
- * @param ctx
875
- */
876
- async openapi(ctx) {
877
- this.openapiContent ?? (this.openapiContent = swagger.replace("{{OPENAPI}}", JSON.stringify(this.getWebda().exportOpenAPI(true))));
878
- ctx.write(this.openapiContent);
879
- }
880
- }
881
- //# sourceMappingURL=domainservice.js.map