@webda/core 4.0.0-beta.2 → 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 (756) 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/{unpackedapplication.d.ts → application/unpackedapplication.d.ts} +43 -23
  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 -58
  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 +44 -19
  63. package/lib/contexts/httpcontext.d.ts.map +1 -0
  64. package/lib/{utils → contexts}/httpcontext.js +95 -27
  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 +82 -53
  119. package/lib/index.d.ts.map +1 -1
  120. package/lib/index.js +81 -62
  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 +20 -76
  155. package/lib/models/aclmodel.d.ts.map +1 -1
  156. package/lib/models/aclmodel.js +27 -203
  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 +1 -1
  167. package/lib/models/deployment.d.ts.map +1 -1
  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.js → rolemodel.model.js} +23 -5
  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.d.ts → memoryqueue.service.d.ts} +26 -13
  197. package/lib/queues/memoryqueue.service.d.ts.map +1 -0
  198. package/lib/queues/{memoryqueue.js → memoryqueue.service.js} +55 -31
  199. package/lib/queues/memoryqueue.service.js.map +1 -0
  200. package/lib/queues/pubsubservice.d.ts +8 -6
  201. package/lib/queues/pubsubservice.d.ts.map +1 -1
  202. package/lib/queues/pubsubservice.js +5 -4
  203. package/lib/queues/pubsubservice.js.map +1 -1
  204. package/lib/queues/queueservice.d.ts +9 -11
  205. package/lib/queues/queueservice.d.ts.map +1 -1
  206. package/lib/queues/queueservice.js +41 -13
  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 -59
  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 +17 -12
  245. package/lib/services/cloudbinary.d.ts.map +1 -1
  246. package/lib/services/cloudbinary.js +23 -17
  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} +75 -141
  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.js → debugmailer.service.js} +25 -10
  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 -11
  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 +52 -28
  297. package/lib/services/oauth.d.ts.map +1 -1
  298. package/lib/services/oauth.js +365 -254
  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 -12
  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.d.ts → resource.service.d.ts} +34 -15
  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 +87 -188
  313. package/lib/services/service.d.ts.map +1 -1
  314. package/lib/services/service.js +407 -422
  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 -19
  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 +126 -626
  345. package/lib/stores/store.d.ts.map +1 -1
  346. package/lib/stores/store.js +257 -1117
  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 +4 -2
  377. package/lib/utils/abstractdeployer.d.ts.map +1 -1
  378. package/lib/utils/abstractdeployer.js +3 -0
  379. package/lib/utils/abstractdeployer.js.map +1 -1
  380. package/package.json +85 -60
  381. package/test/cachedapp/webda.config.json +1 -5
  382. package/test/config-cached.json +1 -5
  383. package/test/config.json +0 -9
  384. package/test/my-cnf.json +9 -0
  385. package/webda.module.json +3463 -2482
  386. package/lib/application.d.ts +0 -888
  387. package/lib/application.d.ts.map +0 -1
  388. package/lib/application.js +0 -768
  389. package/lib/application.js.map +0 -1
  390. package/lib/application.spec.d.ts +0 -2
  391. package/lib/application.spec.d.ts.map +0 -1
  392. package/lib/application.spec.js +0 -248
  393. package/lib/application.spec.js.map +0 -1
  394. package/lib/core.d.ts +0 -743
  395. package/lib/core.d.ts.map +0 -1
  396. package/lib/core.js +0 -1334
  397. package/lib/core.js.map +0 -1
  398. package/lib/core.spec.d.ts +0 -2
  399. package/lib/core.spec.d.ts.map +0 -1
  400. package/lib/core.spec.js +0 -790
  401. package/lib/core.spec.js.map +0 -1
  402. package/lib/errors.d.ts +0 -64
  403. package/lib/errors.d.ts.map +0 -1
  404. package/lib/errors.js +0 -97
  405. package/lib/errors.js.map +0 -1
  406. package/lib/errors.spec.d.ts +0 -2
  407. package/lib/errors.spec.d.ts.map +0 -1
  408. package/lib/errors.spec.js +0 -33
  409. package/lib/errors.spec.js.map +0 -1
  410. package/lib/models/aclmodel.spec.d.ts +0 -2
  411. package/lib/models/aclmodel.spec.d.ts.map +0 -1
  412. package/lib/models/aclmodel.spec.js +0 -187
  413. package/lib/models/aclmodel.spec.js.map +0 -1
  414. package/lib/models/coremodel.d.ts +0 -896
  415. package/lib/models/coremodel.d.ts.map +0 -1
  416. package/lib/models/coremodel.js +0 -1214
  417. package/lib/models/coremodel.js.map +0 -1
  418. package/lib/models/coremodel.spec.d.ts +0 -2
  419. package/lib/models/coremodel.spec.d.ts.map +0 -1
  420. package/lib/models/coremodel.spec.js +0 -464
  421. package/lib/models/coremodel.spec.js.map +0 -1
  422. package/lib/models/ident.d.ts +0 -68
  423. package/lib/models/ident.d.ts.map +0 -1
  424. package/lib/models/ident.js +0 -26
  425. package/lib/models/ident.js.map +0 -1
  426. package/lib/models/ident.spec.d.ts +0 -2
  427. package/lib/models/ident.spec.d.ts.map +0 -1
  428. package/lib/models/ident.spec.js +0 -24
  429. package/lib/models/ident.spec.js.map +0 -1
  430. package/lib/models/ownermodel.d.ts +0 -51
  431. package/lib/models/ownermodel.d.ts.map +0 -1
  432. package/lib/models/ownermodel.js +0 -65
  433. package/lib/models/ownermodel.js.map +0 -1
  434. package/lib/models/ownermodel.spec.d.ts +0 -2
  435. package/lib/models/ownermodel.spec.d.ts.map +0 -1
  436. package/lib/models/ownermodel.spec.js +0 -215
  437. package/lib/models/ownermodel.spec.js.map +0 -1
  438. package/lib/models/relations.d.ts +0 -182
  439. package/lib/models/relations.d.ts.map +0 -1
  440. package/lib/models/relations.js +0 -157
  441. package/lib/models/relations.js.map +0 -1
  442. package/lib/models/relations.spec.d.ts +0 -14
  443. package/lib/models/relations.spec.d.ts.map +0 -1
  444. package/lib/models/relations.spec.js +0 -217
  445. package/lib/models/relations.spec.js.map +0 -1
  446. package/lib/models/rolemodel.d.ts +0 -11
  447. package/lib/models/rolemodel.d.ts.map +0 -1
  448. package/lib/models/rolemodel.js.map +0 -1
  449. package/lib/models/rolemodel.spec.d.ts +0 -2
  450. package/lib/models/rolemodel.spec.d.ts.map +0 -1
  451. package/lib/models/rolemodel.spec.js +0 -90
  452. package/lib/models/rolemodel.spec.js.map +0 -1
  453. package/lib/models/simpleuser.d.ts +0 -47
  454. package/lib/models/simpleuser.d.ts.map +0 -1
  455. package/lib/models/simpleuser.js +0 -84
  456. package/lib/models/simpleuser.js.map +0 -1
  457. package/lib/models/test.d.ts +0 -11
  458. package/lib/models/test.d.ts.map +0 -1
  459. package/lib/models/test.js +0 -7
  460. package/lib/models/test.js.map +0 -1
  461. package/lib/models/user.d.ts +0 -67
  462. package/lib/models/user.d.ts.map +0 -1
  463. package/lib/models/user.js +0 -86
  464. package/lib/models/user.js.map +0 -1
  465. package/lib/models/user.spec.d.ts +0 -2
  466. package/lib/models/user.spec.d.ts.map +0 -1
  467. package/lib/models/user.spec.js +0 -89
  468. package/lib/models/user.spec.js.map +0 -1
  469. package/lib/queues/filequeue.d.ts +0 -59
  470. package/lib/queues/filequeue.d.ts.map +0 -1
  471. package/lib/queues/filequeue.js +0 -131
  472. package/lib/queues/filequeue.js.map +0 -1
  473. package/lib/queues/filequeue.spec.d.ts +0 -2
  474. package/lib/queues/filequeue.spec.d.ts.map +0 -1
  475. package/lib/queues/filequeue.spec.js +0 -84
  476. package/lib/queues/filequeue.spec.js.map +0 -1
  477. package/lib/queues/memoryqueue.d.ts.map +0 -1
  478. package/lib/queues/memoryqueue.js.map +0 -1
  479. package/lib/queues/memoryqueue.spec.d.ts +0 -2
  480. package/lib/queues/memoryqueue.spec.d.ts.map +0 -1
  481. package/lib/queues/memoryqueue.spec.js +0 -203
  482. package/lib/queues/memoryqueue.spec.js.map +0 -1
  483. package/lib/queues/queue.spec.d.ts +0 -6
  484. package/lib/queues/queue.spec.d.ts.map +0 -1
  485. package/lib/queues/queue.spec.js +0 -55
  486. package/lib/queues/queue.spec.js.map +0 -1
  487. package/lib/rest/restdomainservice.d.ts +0 -63
  488. package/lib/rest/restdomainservice.d.ts.map +0 -1
  489. package/lib/rest/restdomainservice.js +0 -687
  490. package/lib/rest/restdomainservice.js.map +0 -1
  491. package/lib/rest/restdomainservice.spec.d.ts +0 -2
  492. package/lib/rest/restdomainservice.spec.d.ts.map +0 -1
  493. package/lib/rest/restdomainservice.spec.js +0 -124
  494. package/lib/rest/restdomainservice.spec.js.map +0 -1
  495. package/lib/rest/router.d.ts +0 -174
  496. package/lib/rest/router.d.ts.map +0 -1
  497. package/lib/rest/router.js +0 -429
  498. package/lib/rest/router.js.map +0 -1
  499. package/lib/rest/router.spec.d.ts +0 -2
  500. package/lib/rest/router.spec.d.ts.map +0 -1
  501. package/lib/rest/router.spec.js +0 -255
  502. package/lib/rest/router.spec.js.map +0 -1
  503. package/lib/services/asyncevents.d.ts +0 -152
  504. package/lib/services/asyncevents.d.ts.map +0 -1
  505. package/lib/services/asyncevents.js +0 -217
  506. package/lib/services/asyncevents.js.map +0 -1
  507. package/lib/services/asyncevents.spec.d.ts +0 -2
  508. package/lib/services/asyncevents.spec.d.ts.map +0 -1
  509. package/lib/services/asyncevents.spec.js +0 -118
  510. package/lib/services/asyncevents.spec.js.map +0 -1
  511. package/lib/services/authentication.d.ts.map +0 -1
  512. package/lib/services/authentication.js +0 -773
  513. package/lib/services/authentication.js.map +0 -1
  514. package/lib/services/authentication.spec.d.ts +0 -2
  515. package/lib/services/authentication.spec.d.ts.map +0 -1
  516. package/lib/services/authentication.spec.js +0 -458
  517. package/lib/services/authentication.spec.js.map +0 -1
  518. package/lib/services/binary.d.ts +0 -477
  519. package/lib/services/binary.d.ts.map +0 -1
  520. package/lib/services/binary.js +0 -617
  521. package/lib/services/binary.js.map +0 -1
  522. package/lib/services/binary.spec.d.ts +0 -41
  523. package/lib/services/binary.spec.d.ts.map +0 -1
  524. package/lib/services/binary.spec.js +0 -151
  525. package/lib/services/binary.spec.js.map +0 -1
  526. package/lib/services/cloudbinary.spec.d.ts +0 -6
  527. package/lib/services/cloudbinary.spec.d.ts.map +0 -1
  528. package/lib/services/cloudbinary.spec.js +0 -66
  529. package/lib/services/cloudbinary.spec.js.map +0 -1
  530. package/lib/services/configuration.d.ts.map +0 -1
  531. package/lib/services/configuration.js +0 -193
  532. package/lib/services/configuration.js.map +0 -1
  533. package/lib/services/configuration.spec.d.ts +0 -2
  534. package/lib/services/configuration.spec.d.ts.map +0 -1
  535. package/lib/services/configuration.spec.js +0 -130
  536. package/lib/services/configuration.spec.js.map +0 -1
  537. package/lib/services/cron.d.ts +0 -74
  538. package/lib/services/cron.d.ts.map +0 -1
  539. package/lib/services/cron.js +0 -141
  540. package/lib/services/cron.js.map +0 -1
  541. package/lib/services/cron.spec.d.ts +0 -2
  542. package/lib/services/cron.spec.d.ts.map +0 -1
  543. package/lib/services/cron.spec.js +0 -76
  544. package/lib/services/cron.spec.js.map +0 -1
  545. package/lib/services/cryptoservice.d.ts.map +0 -1
  546. package/lib/services/cryptoservice.js +0 -433
  547. package/lib/services/cryptoservice.js.map +0 -1
  548. package/lib/services/cryptoservice.spec.d.ts +0 -2
  549. package/lib/services/cryptoservice.spec.d.ts.map +0 -1
  550. package/lib/services/cryptoservice.spec.js +0 -177
  551. package/lib/services/cryptoservice.spec.js.map +0 -1
  552. package/lib/services/debugmailer.d.ts +0 -36
  553. package/lib/services/debugmailer.d.ts.map +0 -1
  554. package/lib/services/debugmailer.js.map +0 -1
  555. package/lib/services/debugmailer.spec.d.ts +0 -2
  556. package/lib/services/debugmailer.spec.d.ts.map +0 -1
  557. package/lib/services/debugmailer.spec.js +0 -32
  558. package/lib/services/debugmailer.spec.js.map +0 -1
  559. package/lib/services/domainservice.d.ts +0 -272
  560. package/lib/services/domainservice.d.ts.map +0 -1
  561. package/lib/services/domainservice.js +0 -651
  562. package/lib/services/domainservice.js.map +0 -1
  563. package/lib/services/domainservice.spec.d.ts +0 -2
  564. package/lib/services/domainservice.spec.d.ts.map +0 -1
  565. package/lib/services/domainservice.spec.js +0 -592
  566. package/lib/services/domainservice.spec.js.map +0 -1
  567. package/lib/services/filebinary.d.ts +0 -136
  568. package/lib/services/filebinary.d.ts.map +0 -1
  569. package/lib/services/filebinary.js +0 -373
  570. package/lib/services/filebinary.js.map +0 -1
  571. package/lib/services/filebinary.spec.d.ts +0 -25
  572. package/lib/services/filebinary.spec.d.ts.map +0 -1
  573. package/lib/services/filebinary.spec.js +0 -428
  574. package/lib/services/filebinary.spec.js.map +0 -1
  575. package/lib/services/fileconfiguration.d.ts +0 -23
  576. package/lib/services/fileconfiguration.d.ts.map +0 -1
  577. package/lib/services/fileconfiguration.js +0 -48
  578. package/lib/services/fileconfiguration.js.map +0 -1
  579. package/lib/services/fileconfiguration.spec.d.ts +0 -2
  580. package/lib/services/fileconfiguration.spec.d.ts.map +0 -1
  581. package/lib/services/fileconfiguration.spec.js +0 -215
  582. package/lib/services/fileconfiguration.spec.js.map +0 -1
  583. package/lib/services/invitationservice.d.ts +0 -223
  584. package/lib/services/invitationservice.d.ts.map +0 -1
  585. package/lib/services/invitationservice.js +0 -529
  586. package/lib/services/invitationservice.js.map +0 -1
  587. package/lib/services/invitationservice.spec.d.ts +0 -2
  588. package/lib/services/invitationservice.spec.d.ts.map +0 -1
  589. package/lib/services/invitationservice.spec.js +0 -567
  590. package/lib/services/invitationservice.spec.js.map +0 -1
  591. package/lib/services/kubernetesconfiguration.d.ts +0 -27
  592. package/lib/services/kubernetesconfiguration.d.ts.map +0 -1
  593. package/lib/services/kubernetesconfiguration.js +0 -52
  594. package/lib/services/kubernetesconfiguration.js.map +0 -1
  595. package/lib/services/kubernetesconfiguration.spec.d.ts +0 -2
  596. package/lib/services/kubernetesconfiguration.spec.d.ts.map +0 -1
  597. package/lib/services/kubernetesconfiguration.spec.js +0 -206
  598. package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
  599. package/lib/services/mailer.d.ts +0 -166
  600. package/lib/services/mailer.d.ts.map +0 -1
  601. package/lib/services/mailer.js +0 -176
  602. package/lib/services/mailer.js.map +0 -1
  603. package/lib/services/mailer.spec.d.ts +0 -2
  604. package/lib/services/mailer.spec.d.ts.map +0 -1
  605. package/lib/services/mailer.spec.js +0 -158
  606. package/lib/services/mailer.spec.js.map +0 -1
  607. package/lib/services/notificationservice.d.ts.map +0 -1
  608. package/lib/services/notificationservice.js.map +0 -1
  609. package/lib/services/notificationservice.spec.d.ts +0 -2
  610. package/lib/services/notificationservice.spec.d.ts.map +0 -1
  611. package/lib/services/notificationservice.spec.js +0 -83
  612. package/lib/services/notificationservice.spec.js.map +0 -1
  613. package/lib/services/oauth.spec.d.ts +0 -2
  614. package/lib/services/oauth.spec.d.ts.map +0 -1
  615. package/lib/services/oauth.spec.js +0 -208
  616. package/lib/services/oauth.spec.js.map +0 -1
  617. package/lib/services/prometheus.d.ts.map +0 -1
  618. package/lib/services/prometheus.js +0 -160
  619. package/lib/services/prometheus.js.map +0 -1
  620. package/lib/services/prometheus.spec.d.ts +0 -2
  621. package/lib/services/prometheus.spec.d.ts.map +0 -1
  622. package/lib/services/prometheus.spec.js +0 -76
  623. package/lib/services/prometheus.spec.js.map +0 -1
  624. package/lib/services/resource.d.ts.map +0 -1
  625. package/lib/services/resource.js +0 -170
  626. package/lib/services/resource.js.map +0 -1
  627. package/lib/services/resource.spec.d.ts +0 -2
  628. package/lib/services/resource.spec.d.ts.map +0 -1
  629. package/lib/services/resource.spec.js +0 -140
  630. package/lib/services/resource.spec.js.map +0 -1
  631. package/lib/services/service.spec.d.ts +0 -2
  632. package/lib/services/service.spec.d.ts.map +0 -1
  633. package/lib/services/service.spec.js +0 -286
  634. package/lib/services/service.spec.js.map +0 -1
  635. package/lib/stores/aggregator.d.ts +0 -48
  636. package/lib/stores/aggregator.d.ts.map +0 -1
  637. package/lib/stores/aggregator.js +0 -80
  638. package/lib/stores/aggregator.js.map +0 -1
  639. package/lib/stores/file.d.ts +0 -108
  640. package/lib/stores/file.d.ts.map +0 -1
  641. package/lib/stores/file.js +0 -188
  642. package/lib/stores/file.js.map +0 -1
  643. package/lib/stores/file.spec.d.ts +0 -13
  644. package/lib/stores/file.spec.d.ts.map +0 -1
  645. package/lib/stores/file.spec.js +0 -138
  646. package/lib/stores/file.spec.js.map +0 -1
  647. package/lib/stores/mapper.d.ts +0 -150
  648. package/lib/stores/mapper.d.ts.map +0 -1
  649. package/lib/stores/mapper.js +0 -293
  650. package/lib/stores/mapper.js.map +0 -1
  651. package/lib/stores/mapper.spec.d.ts +0 -2
  652. package/lib/stores/mapper.spec.d.ts.map +0 -1
  653. package/lib/stores/mapper.spec.js +0 -167
  654. package/lib/stores/mapper.spec.js.map +0 -1
  655. package/lib/stores/memory.d.ts +0 -152
  656. package/lib/stores/memory.d.ts.map +0 -1
  657. package/lib/stores/memory.js +0 -371
  658. package/lib/stores/memory.js.map +0 -1
  659. package/lib/stores/memory.spec.d.ts +0 -14
  660. package/lib/stores/memory.spec.d.ts.map +0 -1
  661. package/lib/stores/memory.spec.js +0 -263
  662. package/lib/stores/memory.spec.js.map +0 -1
  663. package/lib/stores/modelmapper.d.ts +0 -62
  664. package/lib/stores/modelmapper.d.ts.map +0 -1
  665. package/lib/stores/modelmapper.js +0 -197
  666. package/lib/stores/modelmapper.js.map +0 -1
  667. package/lib/stores/store.spec.d.ts +0 -57
  668. package/lib/stores/store.spec.d.ts.map +0 -1
  669. package/lib/stores/store.spec.js +0 -737
  670. package/lib/stores/store.spec.js.map +0 -1
  671. package/lib/test.d.ts +0 -265
  672. package/lib/test.d.ts.map +0 -1
  673. package/lib/test.js +0 -622
  674. package/lib/test.js.map +0 -1
  675. package/lib/unpackedapplication.d.ts.map +0 -1
  676. package/lib/unpackedapplication.js +0 -350
  677. package/lib/unpackedapplication.js.map +0 -1
  678. package/lib/utils/abstractdeployer.spec.d.ts +0 -2
  679. package/lib/utils/abstractdeployer.spec.d.ts.map +0 -1
  680. package/lib/utils/abstractdeployer.spec.js +0 -21
  681. package/lib/utils/abstractdeployer.spec.js.map +0 -1
  682. package/lib/utils/case.d.ts +0 -8
  683. package/lib/utils/case.d.ts.map +0 -1
  684. package/lib/utils/case.js +0 -43
  685. package/lib/utils/case.js.map +0 -1
  686. package/lib/utils/case.spec.d.ts +0 -2
  687. package/lib/utils/case.spec.d.ts.map +0 -1
  688. package/lib/utils/case.spec.js +0 -50
  689. package/lib/utils/case.spec.js.map +0 -1
  690. package/lib/utils/context.d.ts +0 -482
  691. package/lib/utils/context.d.ts.map +0 -1
  692. package/lib/utils/context.js +0 -739
  693. package/lib/utils/context.js.map +0 -1
  694. package/lib/utils/context.spec.d.ts +0 -10
  695. package/lib/utils/context.spec.d.ts.map +0 -1
  696. package/lib/utils/context.spec.js +0 -383
  697. package/lib/utils/context.spec.js.map +0 -1
  698. package/lib/utils/cookie.d.ts.map +0 -1
  699. package/lib/utils/cookie.js.map +0 -1
  700. package/lib/utils/cookie.spec.d.ts +0 -2
  701. package/lib/utils/cookie.spec.d.ts.map +0 -1
  702. package/lib/utils/cookie.spec.js +0 -88
  703. package/lib/utils/cookie.spec.js.map +0 -1
  704. package/lib/utils/esm.d.ts +0 -14
  705. package/lib/utils/esm.d.ts.map +0 -1
  706. package/lib/utils/esm.js +0 -19
  707. package/lib/utils/esm.js.map +0 -1
  708. package/lib/utils/httpcontext.d.ts.map +0 -1
  709. package/lib/utils/httpcontext.js.map +0 -1
  710. package/lib/utils/httpcontext.spec.d.ts +0 -5
  711. package/lib/utils/httpcontext.spec.d.ts.map +0 -1
  712. package/lib/utils/httpcontext.spec.js +0 -77
  713. package/lib/utils/httpcontext.spec.js.map +0 -1
  714. package/lib/utils/logger.d.ts +0 -92
  715. package/lib/utils/logger.d.ts.map +0 -1
  716. package/lib/utils/logger.js +0 -121
  717. package/lib/utils/logger.js.map +0 -1
  718. package/lib/utils/logger.spec.d.ts +0 -2
  719. package/lib/utils/logger.spec.d.ts.map +0 -1
  720. package/lib/utils/logger.spec.js +0 -48
  721. package/lib/utils/logger.spec.js.map +0 -1
  722. package/lib/utils/serializers.d.ts +0 -162
  723. package/lib/utils/serializers.d.ts.map +0 -1
  724. package/lib/utils/serializers.js +0 -420
  725. package/lib/utils/serializers.js.map +0 -1
  726. package/lib/utils/serializers.spec.d.ts +0 -2
  727. package/lib/utils/serializers.spec.d.ts.map +0 -1
  728. package/lib/utils/serializers.spec.js +0 -311
  729. package/lib/utils/serializers.spec.js.map +0 -1
  730. package/lib/utils/session.d.ts +0 -123
  731. package/lib/utils/session.d.ts.map +0 -1
  732. package/lib/utils/session.js +0 -156
  733. package/lib/utils/session.js.map +0 -1
  734. package/lib/utils/session.spec.d.ts +0 -2
  735. package/lib/utils/session.spec.d.ts.map +0 -1
  736. package/lib/utils/session.spec.js +0 -81
  737. package/lib/utils/session.spec.js.map +0 -1
  738. package/lib/utils/throttler.d.ts +0 -99
  739. package/lib/utils/throttler.d.ts.map +0 -1
  740. package/lib/utils/throttler.js +0 -160
  741. package/lib/utils/throttler.js.map +0 -1
  742. package/lib/utils/throttler.spec.d.ts +0 -2
  743. package/lib/utils/throttler.spec.d.ts.map +0 -1
  744. package/lib/utils/throttler.spec.js +0 -53
  745. package/lib/utils/throttler.spec.js.map +0 -1
  746. package/lib/utils/waiter.d.ts +0 -94
  747. package/lib/utils/waiter.d.ts.map +0 -1
  748. package/lib/utils/waiter.js +0 -148
  749. package/lib/utils/waiter.js.map +0 -1
  750. package/lib/utils/waiter.spec.d.ts +0 -2
  751. package/lib/utils/waiter.spec.d.ts.map +0 -1
  752. package/lib/utils/waiter.spec.js +0 -98
  753. package/lib/utils/waiter.spec.js.map +0 -1
  754. package/test/jsonutils/mdocs.yaml +0 -56
  755. package/test/jsonutils/test.json +0 -3
  756. package/test/jsonutils/test.yml +0 -5
@@ -1,1214 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { EventEmitter } from "events";
8
- import util from "util";
9
- import { Core, EventEmitterUtils } from "../core.js";
10
- import * as WebdaError from "../errors.js";
11
- import { BinariesImpl, Binary } from "../services/binary.js";
12
- import * as WebdaQL from "@webda/ql";
13
- import { Throttler } from "../utils/throttler.js";
14
- import { ModelLinksArray, ModelLinksSimpleArray, ModelMapLoaderImplementation, createModelLinksMap } from "./relations.js";
15
- /**
16
- * Expose the model through API or GraphQL if it exists
17
- * The model will be exposed using its class name + 's'
18
- * If you need to have a specific plural, use the annotation WebdaPlural
19
- * to define the plural name
20
- *
21
- * @returns
22
- */
23
- export function Expose(params = {}) {
24
- return (target) => {
25
- params.restrict ?? (params.restrict = {});
26
- target.Expose = params;
27
- };
28
- }
29
- /**
30
- *
31
- */
32
- export class CoreModelQuery {
33
- constructor(type, model, attribute) {
34
- this.attribute = attribute;
35
- this.type = type;
36
- this.model = model;
37
- }
38
- /**
39
- * Retrieve target model definition
40
- * @returns
41
- */
42
- getTargetModel() {
43
- this.targetModel ?? (this.targetModel = Core.get().getModel(this.type));
44
- return this.targetModel;
45
- }
46
- /**
47
- * Query the object
48
- * @param query
49
- * @returns
50
- */
51
- query(query, context) {
52
- return this.getTargetModel().query(this.completeQuery(query), true, context);
53
- }
54
- /**
55
- * Complete the query with condition
56
- * @param query
57
- * @returns
58
- */
59
- completeQuery(query) {
60
- return WebdaQL.PrependCondition(query, `${this.attribute} = '${this.model.getUuid()}'`);
61
- }
62
- /**
63
- *
64
- * @param callback
65
- * @param context
66
- */
67
- async forEach(callback, query, context, parallelism = 3) {
68
- const throttler = new Throttler();
69
- throttler.setConcurrency(parallelism);
70
- for await (const model of this.iterate(query, context)) {
71
- throttler.execute(() => callback(model));
72
- }
73
- return throttler.wait();
74
- }
75
- /**
76
- * Iterate through all
77
- * @param context
78
- * @returns
79
- */
80
- iterate(query, context) {
81
- return Core.get().getModelStore(this.getTargetModel()).iterate(this.completeQuery(query), context);
82
- }
83
- /**
84
- * Get all the objects
85
- * @returns
86
- */
87
- async getAll(context) {
88
- const res = [];
89
- for await (const item of this.iterate(this.completeQuery(), context)) {
90
- res.push(item);
91
- }
92
- return res;
93
- }
94
- }
95
- __decorate([
96
- NotEnumerable
97
- ], CoreModelQuery.prototype, "type", void 0);
98
- __decorate([
99
- NotEnumerable
100
- ], CoreModelQuery.prototype, "model", void 0);
101
- __decorate([
102
- NotEnumerable
103
- ], CoreModelQuery.prototype, "attribute", void 0);
104
- __decorate([
105
- NotEnumerable
106
- ], CoreModelQuery.prototype, "targetModel", void 0);
107
- /**
108
- * Make a property hidden from json and schema
109
- *
110
- * This property will not be saved in the store
111
- * Nor it will be exposed in the API
112
- *
113
- * @param target
114
- * @param propertyKey
115
- */
116
- export function NotEnumerable(target, propertyKey) {
117
- Object.defineProperty(target, propertyKey, {
118
- set(value) {
119
- Object.defineProperty(this, propertyKey, {
120
- value,
121
- writable: true,
122
- configurable: true
123
- });
124
- },
125
- configurable: true
126
- });
127
- }
128
- const ActionsAnnotated = new Map();
129
- /**
130
- * Define an object method as an action
131
- * @param target
132
- * @param propertyKey
133
- */
134
- export function Action(options = {}) {
135
- return (target, propertyKey) => {
136
- let custom = target;
137
- const global = typeof target === "function";
138
- if (!global) {
139
- custom = target.constructor;
140
- }
141
- if (!ActionsAnnotated.has(custom)) {
142
- ActionsAnnotated.set(custom, {});
143
- }
144
- const actions = ActionsAnnotated.get(custom);
145
- actions[options.name || propertyKey] = {
146
- ...options,
147
- global,
148
- method: propertyKey
149
- };
150
- };
151
- }
152
- export class ModelRef {
153
- constructor(uuid, model, parent) {
154
- this.uuid = uuid;
155
- this.model = model;
156
- this.uuid = uuid === "" ? undefined : model.completeUid(uuid);
157
- this.store = Core.get().getModelStore(model);
158
- }
159
- async get(context) {
160
- return (await this.store.get(this.uuid))?.setContext(context || this.parent?.getContext());
161
- }
162
- set(id) {
163
- this.uuid = id instanceof CoreModel ? id.getUuid() : id;
164
- this.parent?.__dirty.add(Object.keys(this.parent).find(k => this.parent[k] === this));
165
- }
166
- toString() {
167
- return this.uuid;
168
- }
169
- toJSON() {
170
- return this.uuid;
171
- }
172
- getUuid() {
173
- return this.uuid;
174
- }
175
- async deleteItemFromCollection(prop, index, itemWriteCondition, itemWriteConditionField) {
176
- const updateDate = await this.store.deleteItemFromCollection(this.uuid, prop, index, itemWriteCondition, itemWriteConditionField);
177
- await this.model.emitSync("Store.PartialUpdated", {
178
- object_id: this.uuid,
179
- store: this.store,
180
- updateDate,
181
- partial_update: {
182
- deleteItem: {
183
- property: prop,
184
- index: index
185
- }
186
- }
187
- });
188
- return this;
189
- }
190
- async upsertItemToCollection(prop, item, index, itemWriteCondition, itemWriteConditionField) {
191
- const updateDate = await this.store.upsertItemToCollection(this.uuid, prop, item, index, itemWriteCondition, itemWriteConditionField);
192
- await this.model.emitSync("Store.PartialUpdated", {
193
- object_id: this.uuid,
194
- store: this.store,
195
- updateDate,
196
- partial_update: {
197
- addItem: {
198
- value: item,
199
- property: prop,
200
- index: index
201
- }
202
- }
203
- });
204
- return this;
205
- }
206
- exists() {
207
- return this.store.exists(this.uuid);
208
- }
209
- delete() {
210
- return this.store.delete(this.uuid);
211
- }
212
- conditionalPatch(updates, conditionField, condition) {
213
- return this.store.conditionalPatch(this.uuid, updates, conditionField, condition);
214
- }
215
- patch(updates) {
216
- return this.store.conditionalPatch(this.uuid, updates, null, undefined);
217
- }
218
- async setAttribute(attribute, value) {
219
- await this.store.setAttribute(this.uuid, attribute, value);
220
- return this;
221
- }
222
- async removeAttribute(attribute, itemWriteCondition, itemWriteConditionField) {
223
- await this.store.removeAttribute(this.uuid, attribute, itemWriteCondition, itemWriteConditionField);
224
- await this.model?.emitSync("Store.PartialUpdated", {
225
- object_id: this.uuid,
226
- store: this.store,
227
- partial_update: {
228
- deleteAttribute: attribute
229
- }
230
- });
231
- return this;
232
- }
233
- async incrementAttributes(info) {
234
- const updateDate = await this.store.incrementAttributes(this.uuid, info);
235
- await this.model.emitSync("Store.PartialUpdated", {
236
- object_id: this.uuid,
237
- store: this.store,
238
- updateDate,
239
- partial_update: {
240
- increments: info
241
- }
242
- });
243
- return this;
244
- }
245
- }
246
- __decorate([
247
- NotEnumerable
248
- ], ModelRef.prototype, "store", void 0);
249
- __decorate([
250
- NotEnumerable
251
- ], ModelRef.prototype, "model", void 0);
252
- __decorate([
253
- NotEnumerable
254
- ], ModelRef.prototype, "parent", void 0);
255
- export class ModelRefWithCreate extends ModelRef {
256
- /**
257
- * Allow to create a model
258
- * @param defaultValue
259
- * @param context
260
- * @param withSave
261
- * @returns
262
- */
263
- async create(defaultValue, context, withSave = true) {
264
- const result = new this.model().setContext(context).load(defaultValue, true).setUuid(this.uuid);
265
- if (withSave) {
266
- await result.save();
267
- }
268
- return result;
269
- }
270
- /**
271
- * Load a model from the known store
272
- *
273
- * @param this the class from which the static is called
274
- * @param id of the object to load
275
- * @param defaultValue if object not found return a default object
276
- * @param context to set on the object
277
- * @returns
278
- */
279
- async getOrCreate(defaultValue, context, withSave = true) {
280
- return (await this.get()) || this.create(defaultValue, context, withSave);
281
- }
282
- }
283
- export class ModelRefCustom extends ModelRef {
284
- constructor(uuid, model, data, parent) {
285
- super(uuid, model, parent);
286
- this.uuid = uuid;
287
- Object.assign(this, data);
288
- }
289
- toJSON() {
290
- return this;
291
- }
292
- getUuid() {
293
- return this.uuid;
294
- }
295
- }
296
- export const Emitters = new WeakMap();
297
- /**
298
- * Basic Object in Webda
299
- *
300
- * It is used to define a data stored
301
- * Any variable starting with _ can only be set by the server
302
- * Any variable starting with __ won't be exported outside of the server
303
- *
304
- * @class
305
- * @WebdaModel
306
- */
307
- class CoreModel {
308
- constructor() {
309
- this.__dirty = new Set();
310
- this.__class = new.target;
311
- // Get the store automatically now
312
- this.__store = Core.get()?.getModelStore(new.target);
313
- // Get the type automatically now
314
- this.__type = Core.get()?.getApplication().getShortId(Core.get()?.getApplication().getModelFromInstance(this));
315
- }
316
- /**
317
- * Listen to events on the model
318
- * @param event
319
- * @param listener
320
- * @param async
321
- */
322
- static on(event, listener, async = false) {
323
- if (!Emitters.has(this)) {
324
- Emitters.set(this, new EventEmitter());
325
- }
326
- // TODO Manage async
327
- if (async) {
328
- Core.get()
329
- .getService("AsyncEvents")
330
- .bindAsyncListener(this, event, listener);
331
- }
332
- else {
333
- Emitters.get(this).on(event, listener);
334
- }
335
- return this;
336
- }
337
- /**
338
- * Emit an event for this class
339
- * @param this
340
- * @param event
341
- * @param evt
342
- */
343
- static emit(event, evt) {
344
- // eslint-disable-next-line @typescript-eslint/no-this-alias
345
- let clazz = this;
346
- // @ts-ignore
347
- while (clazz) {
348
- // Emit for all parent class
349
- if (Emitters.has(clazz)) {
350
- EventEmitterUtils.emit(Emitters.get(clazz), event, evt);
351
- }
352
- // @ts-ignore
353
- if (clazz === CoreModel) {
354
- break;
355
- }
356
- clazz = Object.getPrototypeOf(clazz);
357
- }
358
- }
359
- /**
360
- * Emit an event for this class and wait for all listeners to finish
361
- * @param this
362
- * @param event
363
- * @param evt
364
- */
365
- static async emitSync(event, evt) {
366
- // eslint-disable-next-line @typescript-eslint/no-this-alias
367
- let clazz = this;
368
- const p = [];
369
- // @ts-ignore
370
- while (clazz) {
371
- // Emit for all parent class
372
- if (Emitters.has(clazz)) {
373
- p.push(EventEmitterUtils.emitSync(Emitters.get(clazz), event, evt));
374
- }
375
- // @ts-ignore
376
- if (clazz === CoreModel) {
377
- break;
378
- }
379
- clazz = Object.getPrototypeOf(clazz);
380
- }
381
- await Promise.all(p);
382
- }
383
- /**
384
- * Listen to events on the model asynchronously
385
- * @param event
386
- * @param listener
387
- */
388
- static onAsync(event, listener, queue) {
389
- return this.on(event, listener, true);
390
- }
391
- /**
392
- *
393
- * @param event
394
- * @param listener
395
- * @returns
396
- */
397
- static addListener(event, listener) {
398
- return this.on(event, listener);
399
- }
400
- static emitter(method, ...args) {
401
- if (!Emitters.has(this)) {
402
- Emitters.set(this, new EventEmitter());
403
- }
404
- // @ts-ignore
405
- return Emitters.get(this)[method](...args);
406
- }
407
- static removeListener(...args) {
408
- return this.emitter("removeListener", ...args);
409
- }
410
- static off(...args) {
411
- return this.emitter("off", ...args);
412
- }
413
- static once(...args) {
414
- return this.emitter("once", ...args);
415
- }
416
- static removeAllListeners(...args) {
417
- return this.emitter("removeAllListeners", ...args);
418
- }
419
- static setMaxListeners(...args) {
420
- return this.emitter("setMaxListeners", ...args);
421
- }
422
- static getMaxListeners(...args) {
423
- return this.emitter("getMaxListeners", ...args);
424
- }
425
- static listeners(...args) {
426
- return this.emitter("listeners", ...args);
427
- }
428
- static rawListeners(...args) {
429
- return this.emitter("rawListeners", ...args);
430
- }
431
- static listenerCount(...args) {
432
- return this.emitter("listenerCount", ...args);
433
- }
434
- static prependListener(...args) {
435
- return this.emitter("prependListener", ...args);
436
- }
437
- static prependOnceListener(...args) {
438
- return this.emitter("prependOnceListener", ...args);
439
- }
440
- static eventNames(...args) {
441
- return this.emitter("eventNames", ...args);
442
- }
443
- /**
444
- *
445
- * @returns
446
- */
447
- static getRelations() {
448
- return Core.get()?.getApplication().getRelations(this);
449
- }
450
- /**
451
- * Do not declare any public events by default
452
- * @returns
453
- */
454
- static getClientEvents() {
455
- return [];
456
- }
457
- /**
458
- * Does not allow any event by default
459
- * @param _event
460
- * @param _context
461
- * @returns
462
- */
463
- static authorizeClientEvent(_event, _context, _model) {
464
- return false;
465
- }
466
- /**
467
- * Get Store for this model
468
- * @param this
469
- * @returns
470
- */
471
- static store() {
472
- if (!Core.get()) {
473
- throw new Error("Webda not initialized");
474
- }
475
- return Core.get().getModelStore(this);
476
- }
477
- /**
478
- * Complete the uid with prefix if any
479
- *
480
- * Useful when object are stored with a prefix for full uuid
481
- * @param uid
482
- * @returns
483
- */
484
- static completeUid(uid) {
485
- return uid;
486
- }
487
- /**
488
- * Return the known schema
489
- * @returns
490
- */
491
- static getSchema() {
492
- const app = Core.get()?.getApplication();
493
- return app?.getSchema(app.getModelFromConstructor(this));
494
- }
495
- /**
496
- * Get a reference to a model
497
- * @param this
498
- * @param uid
499
- * @returns
500
- */
501
- static ref(uid) {
502
- return new ModelRefWithCreate(uid, this);
503
- }
504
- /**
505
- * Get a reference to a model
506
- * @param this
507
- * @param uid
508
- * @returns
509
- */
510
- static create(data) {
511
- return new this().load(data, true).save();
512
- }
513
- /**
514
- * Get identifier for this model
515
- * @returns
516
- */
517
- static getIdentifier(short = true) {
518
- const res = Core.get().getApplication().getModelName(this);
519
- if (short) {
520
- return Core.get().getApplication().getShortId(res);
521
- }
522
- else {
523
- return res;
524
- }
525
- }
526
- /**
527
- * By default allow a field
528
- * @returns
529
- */
530
- isDeleted() {
531
- return this.__deleted;
532
- }
533
- /**
534
- * Get the model hierarchy
535
- *
536
- * Ancestors will contain every model it inherits from
537
- * Children will contain every model that inherits from this model in a tree structure
538
- */
539
- static getHierarchy() {
540
- return Core.get().getApplication().getModelHierarchy(this);
541
- }
542
- /**
543
- * Unflat an object
544
- * @param data
545
- * @param split
546
- * @returns
547
- */
548
- static unflat(data, split = "#") {
549
- const res = {};
550
- for (const i in data) {
551
- const attrs = i.split(split);
552
- let attr = attrs.shift();
553
- let cur = res;
554
- while (attr) {
555
- if (attrs.length) {
556
- cur[attr] ?? (cur[attr] = {});
557
- cur = cur[attr];
558
- }
559
- else {
560
- cur[attr] = data[i];
561
- }
562
- attr = attrs.shift();
563
- }
564
- }
565
- return res;
566
- }
567
- /**
568
- * Create subobject for a model
569
- *
570
- * Useful for counters
571
- *
572
- * @param split
573
- * @returns
574
- */
575
- unflat(split = "#") {
576
- return CoreModel.unflat(this, split);
577
- }
578
- /**
579
- * Flat an object into another
580
- *
581
- * {
582
- * a: {
583
- * b: 1
584
- * },
585
- * c: 1
586
- * }
587
- *
588
- * become
589
- *
590
- * {
591
- * "a#b": 1
592
- * "c": 1
593
- * }
594
- *
595
- * @param target
596
- * @param data
597
- * @param split
598
- * @param prefix
599
- */
600
- static flat(target, data, split = "#", prefix = "") {
601
- for (const i in data) {
602
- if (typeof data[i] === "object") {
603
- CoreModel.flat(target, data[i], split, i + split);
604
- }
605
- else {
606
- target[prefix + i] = data[i];
607
- }
608
- }
609
- }
610
- /**
611
- * Complete the query with __type/__types
612
- * @param query
613
- * @param includeSubclass
614
- * @returns
615
- */
616
- static completeQuery(query, includeSubclass = true) {
617
- if (!query.includes("__type")) {
618
- let condition;
619
- const app = Core.get().getApplication();
620
- const name = app.getShortId(app.getModelName(this));
621
- if (includeSubclass) {
622
- condition = `__types CONTAINS "${name}"`;
623
- }
624
- else {
625
- condition = `__type = "${name}"`;
626
- }
627
- return WebdaQL.PrependCondition(query, condition);
628
- }
629
- return query;
630
- }
631
- /**
632
- * Iterate through the model
633
- *
634
- * How to use a iterator is:
635
- *
636
- * ```
637
- * for await (const model of CoreModel.iterate()) {
638
- * // Do something with my model
639
- * }
640
- * ```
641
- *
642
- * @param this
643
- * @param query
644
- * @param includeSubclass
645
- * @param context
646
- * @returns
647
- */
648
- static iterate(query = "", includeSubclass = true, context) {
649
- // @ts-ignore
650
- return this.store().iterate(this.completeQuery(query, includeSubclass), context);
651
- }
652
- /**
653
- * Query for models
654
- * @param this
655
- * @param id
656
- * @returns
657
- */
658
- static async query(query = "", includeSubclass = true, context) {
659
- // @ts-ignore
660
- return this.store().query(this.completeQuery(query, includeSubclass), context);
661
- }
662
- /**
663
- * Return a proxy to the object to detect if dirty
664
- * @returns
665
- */
666
- getProxy() {
667
- const subProxier = prop => {
668
- return {
669
- set: (target, p, value) => {
670
- this.__dirty.add(prop);
671
- target[p] = value;
672
- return true;
673
- },
674
- get: (target, p) => {
675
- if (Array.isArray(target[p]) || target[p] instanceof Object) {
676
- return new Proxy(target[p], subProxier(prop));
677
- }
678
- return target[p];
679
- },
680
- deleteProperty: (t, property) => {
681
- delete t[property];
682
- this.__dirty.add(prop);
683
- return true;
684
- }
685
- };
686
- };
687
- const proxier = {
688
- deleteProperty: (t, property) => {
689
- delete t[property];
690
- this.__dirty.add(property);
691
- return true;
692
- },
693
- set: (target, p, value) => {
694
- if (p !== "__dirty") {
695
- target.__dirty.add(p);
696
- }
697
- target[p] = value;
698
- return true;
699
- },
700
- get: (target, p) => {
701
- if (typeof p === "string" && p.startsWith("__")) {
702
- return target[p];
703
- }
704
- if (Array.isArray(target[p]) || target[p] instanceof Object) {
705
- return new Proxy(target[p], subProxier(p));
706
- }
707
- return target[p];
708
- }
709
- };
710
- return new Proxy(this, proxier);
711
- }
712
- /**
713
- * Return true if needs a save
714
- * @returns
715
- */
716
- isDirty() {
717
- return this.__dirty.size > 0;
718
- }
719
- /**
720
- *
721
- * @returns the uuid of the object
722
- */
723
- getUuid() {
724
- // @ts-ignore
725
- return this[this.__class.getUuidField()];
726
- }
727
- /**
728
- *
729
- * @param uuid
730
- * @param target
731
- */
732
- setUuid(uuid, target = this) {
733
- target[this.__class.getUuidField()] = uuid;
734
- return target;
735
- }
736
- /**
737
- * Get actions callable on an object
738
- *
739
- * This will expose them by the Store with /storeUrl/{uuid}/{action}
740
- */
741
- static getActions() {
742
- const actions = [];
743
- // Explore all parent classes to collect all known actions
744
- // eslint-disable-next-line @typescript-eslint/no-this-alias
745
- let clazz = this;
746
- // @ts-ignore
747
- while (clazz !== CoreModel) {
748
- if (ActionsAnnotated.has(clazz)) {
749
- actions.push(ActionsAnnotated.get(clazz));
750
- }
751
- clazz = Object.getPrototypeOf(clazz);
752
- }
753
- // Reduce right to give priority to the last class:
754
- return actions.reduceRight((v, c) => ({ ...v, ...c }), {});
755
- }
756
- /**
757
- * Return the expressable query for permission
758
- *
759
- * @param context of the query
760
- * @returns
761
- */
762
- static getPermissionQuery(_ctx) {
763
- return null;
764
- }
765
- async checkAct(context, action) {
766
- const msg = await this.canAct(context, action);
767
- if (msg !== true) {
768
- throw new WebdaError.Forbidden(msg === false ? "No permission" : msg);
769
- }
770
- }
771
- /**
772
- * By default nothing is permitted on a CoreModel
773
- * @returns
774
- */
775
- async canAct(_context, _action) {
776
- return "This model does not support any action: override canAct";
777
- }
778
- /**
779
- * Get the UUID property
780
- */
781
- static getUuidField() {
782
- return "uuid";
783
- }
784
- /**
785
- * Create an object
786
- * @returns
787
- */
788
- static factory(object, context) {
789
- return object instanceof this ? object : new this().setContext(context).load(object, context === undefined);
790
- }
791
- /**
792
- * Detect what looks like a CoreModel but can be from different version
793
- * @param object
794
- * @returns
795
- */
796
- static instanceOf(object) {
797
- return (typeof object.toStoredJSON === "function" && object.__class && object.__class.factory && object.__class.instanceOf);
798
- }
799
- /**
800
- * Return a unique reference within the application to the object
801
- *
802
- * It contains the Store containing it
803
- * @returns
804
- */
805
- getFullUuid() {
806
- return `${this.__type.replace(/\//, "-")}$${this.getUuid()}`;
807
- }
808
- /**
809
- * Get an object from the full uuid
810
- * @param core
811
- * @param fullUuid
812
- * @param partials
813
- * @returns
814
- */
815
- static async fromFullUuid(fullUuid, core = Core.get(), partials) {
816
- const [model, uuid] = fullUuid.split("$");
817
- const modelObject = core.getApplication().getModel(model.replace("-", "/"));
818
- if (partials) {
819
- return new modelObject().load(partials, true).setUuid(uuid);
820
- }
821
- return new modelObject().setUuid(uuid).get();
822
- }
823
- /**
824
- * Allow to define custom permission per attribute
825
- *
826
- * This method allows you to do permission based attribute
827
- * But also a mask destructive attribute
828
- *
829
- * @param key
830
- * @param value
831
- * @param mode
832
- * @param context
833
- * @returns updated value
834
- */
835
- attributePermission(key, value, mode, context) {
836
- if (mode === "WRITE") {
837
- return key.startsWith("_") ? undefined : value;
838
- }
839
- else {
840
- return !key.startsWith("__") ? value : undefined;
841
- }
842
- }
843
- /**
844
- * Load an object from RAW
845
- *
846
- * @param raw data
847
- * @param secure if false will ignore any _ variable
848
- */
849
- load(raw, secure = false, relations = true) {
850
- // Object assign with filter
851
- for (const prop in raw) {
852
- let val = raw[prop];
853
- if (!secure) {
854
- val = this.attributePermission(prop, raw[prop], "WRITE");
855
- if (val === undefined) {
856
- continue;
857
- }
858
- }
859
- // @ts-ignore
860
- this[prop] = val;
861
- }
862
- if (this._creationDate) {
863
- this._creationDate = new Date(this._creationDate);
864
- }
865
- if (this._lastUpdate) {
866
- this._lastUpdate = new Date(this._lastUpdate);
867
- }
868
- if (!this.getUuid()) {
869
- this.setUuid(this.generateUid(raw));
870
- }
871
- if (relations) {
872
- this.handleRelations();
873
- }
874
- return this;
875
- }
876
- /**
877
- * Patch every attribute that is based on a relation
878
- * to add all the helpers
879
- */
880
- handleRelations() {
881
- var _a, _b;
882
- const rel = Core.get()
883
- ?.getApplication()
884
- ?.getRelations(this) || {};
885
- for (const link of rel.links || []) {
886
- const model = Core.get().getModel(link.model);
887
- if (link.type === "LINK") {
888
- this[_a = link.attribute] ?? (this[_a] = "");
889
- if (typeof this[link.attribute] === "string") {
890
- this[link.attribute] = new ModelRef(this[link.attribute], model, this);
891
- }
892
- }
893
- else if (link.type === "LINKS_ARRAY") {
894
- this[link.attribute] = new ModelLinksArray(model, this[link.attribute], this);
895
- }
896
- else if (link.type === "LINKS_SIMPLE_ARRAY") {
897
- this[link.attribute] = new ModelLinksSimpleArray(model, this[link.attribute], this);
898
- }
899
- else if (link.type === "LINKS_MAP") {
900
- this[link.attribute] = createModelLinksMap(model, this[link.attribute], this);
901
- }
902
- }
903
- for (const link of rel.maps || []) {
904
- this[link.attribute] = (this[link.attribute] || []).map(el => new ModelMapLoaderImplementation(Core.get().getModel(link.model), el, this));
905
- }
906
- for (const query of rel.queries || []) {
907
- this[query.attribute] = new CoreModelQuery(query.model, this, query.targetAttribute);
908
- }
909
- if (rel.parent) {
910
- this[_b = rel.parent.attribute] ?? (this[_b] = "");
911
- if (typeof this[rel.parent.attribute] === "string") {
912
- this[rel.parent.attribute] = new ModelRef(this[rel.parent.attribute], Core.get().getModel(rel.parent.model), this);
913
- }
914
- }
915
- for (const binary of rel.binaries || []) {
916
- if (binary.cardinality === "ONE") {
917
- this[binary.attribute] = new Binary(binary.attribute, this);
918
- }
919
- else {
920
- this[binary.attribute] = new BinariesImpl().assign(this, binary.attribute);
921
- }
922
- }
923
- }
924
- /**
925
- * Context of the request
926
- */
927
- setContext(ctx) {
928
- this.__ctx = ctx;
929
- return this;
930
- }
931
- /**
932
- * Get object context
933
- *
934
- * Global object does not belong to a request
935
- */
936
- getContext() {
937
- return this.__ctx || Core.get().getGlobalContext();
938
- }
939
- /**
940
- * Return the object registered store
941
- */
942
- getStore() {
943
- return this.__store;
944
- }
945
- /**
946
- * Get the object
947
- * @returns
948
- */
949
- async get() {
950
- return this.refresh();
951
- }
952
- /**
953
- * Get the object again
954
- *
955
- * @throws Error if the object is not coming from a store
956
- */
957
- async refresh() {
958
- const obj = await this.__store.get(this.getUuid());
959
- if (obj) {
960
- Object.assign(this, obj);
961
- for (const i in this) {
962
- // @ts-ignore
963
- if (obj[i] !== this[i]) {
964
- delete this[i];
965
- }
966
- }
967
- this.handleRelations();
968
- }
969
- return this;
970
- }
971
- /**
972
- * Delete this object
973
- *
974
- * @throws Error if the object is not coming from a store
975
- */
976
- async delete() {
977
- return this.__store.delete(this);
978
- }
979
- /**
980
- * Patch current object with this update
981
- * @param obj
982
- * @param conditionField if null no condition used otherwise fallback to lastUpdate
983
- * @param conditionValue
984
- */
985
- async patch(obj, conditionField, conditionValue) {
986
- await this.__store.patch({ [this.__class.getUuidField()]: this.getUuid(), ...obj }, true, conditionField, conditionValue);
987
- Object.assign(this, obj);
988
- }
989
- /**
990
- * Save this object
991
- *
992
- * @throws Error if the object is not coming from a store
993
- */
994
- async save(full, ...args) {
995
- // If proxy is not used and not field specified call save
996
- if ((!util.types.isProxy(this) && full === undefined) || full === true) {
997
- if (!this._creationDate || !this._lastUpdate) {
998
- await this.__store.create(this, this.getContext());
999
- }
1000
- else {
1001
- await this.__store.update(this);
1002
- }
1003
- return this;
1004
- }
1005
- const patch = {
1006
- [this.__class.getUuidField()]: this.getUuid()
1007
- };
1008
- if (typeof full === "string") {
1009
- [full, ...args].forEach(k => {
1010
- patch[k] = this[k];
1011
- });
1012
- }
1013
- else {
1014
- for (const entry of this.__dirty.entries()) {
1015
- patch[entry[0]] = this[entry[0]];
1016
- }
1017
- }
1018
- await this.__store.patch(patch);
1019
- this.__dirty.clear();
1020
- return this;
1021
- }
1022
- /**
1023
- * Validate objet modification
1024
- *
1025
- * @param ctx
1026
- * @param updates
1027
- */
1028
- async validate(ctx, updates, ignoreRequired = false) {
1029
- ctx.getWebda().validateSchema(this, updates, ignoreRequired);
1030
- return true;
1031
- }
1032
- /**
1033
- * Generate uuid for the object
1034
- *
1035
- * @param object
1036
- * @returns
1037
- */
1038
- generateUid(_object = undefined) {
1039
- return Core.get().getUuid();
1040
- }
1041
- /**
1042
- * Return the object to be serialized without the __store
1043
- *
1044
- * @param stringify
1045
- * @returns
1046
- */
1047
- toStoredJSON(stringify = false) {
1048
- const obj = this._toJSON(true);
1049
- if (stringify) {
1050
- return JSON.stringify(obj);
1051
- }
1052
- return obj;
1053
- }
1054
- /**
1055
- * Get a pre typed service
1056
- *
1057
- * @param service to retrieve
1058
- * WARNING: Only object attached to a store can retrieve service
1059
- */
1060
- getService(service) {
1061
- return this.__store.getService(service);
1062
- }
1063
- /**
1064
- * Remove the specific attributes if not secure
1065
- *
1066
- *
1067
- *
1068
- * @param secure serialize server fields also
1069
- * @returns filtered object to be serialized
1070
- */
1071
- _toJSON(secure) {
1072
- const obj = {};
1073
- for (const i in this) {
1074
- let value = this[i];
1075
- if (!secure) {
1076
- value = this.attributePermission(i, value, "READ");
1077
- }
1078
- if (value === undefined)
1079
- continue;
1080
- if (value instanceof ModelRef) {
1081
- obj[i] = value.toString();
1082
- }
1083
- else if (value instanceof Binary) {
1084
- obj[i] = value.toJSON();
1085
- }
1086
- else {
1087
- obj[i] = value;
1088
- }
1089
- }
1090
- return obj;
1091
- }
1092
- /**
1093
- * Return the object without sensitive attributes
1094
- *
1095
- * @returns Object to serialize
1096
- */
1097
- toJSON() {
1098
- return this._toJSON(false);
1099
- }
1100
- /**
1101
- * Called when object is about to be deleted
1102
- */
1103
- async _onDelete() {
1104
- // Empty to be overriden
1105
- }
1106
- /**
1107
- * Called when object has been deleted
1108
- */
1109
- async _onDeleted() {
1110
- // Empty to be overriden
1111
- }
1112
- /**
1113
- * Called when object is retrieved
1114
- */
1115
- async _onGet() {
1116
- // Empty to be overriden
1117
- }
1118
- /**
1119
- * Called when object is about to be saved
1120
- */
1121
- async _onSave() {
1122
- // Empty to be overriden
1123
- }
1124
- /**
1125
- * Called when object is saved
1126
- */
1127
- async _onSaved() {
1128
- // Empty to be overriden
1129
- }
1130
- /**
1131
- * Called when object is about to be updates
1132
- *
1133
- * @param updates to be send
1134
- */
1135
- async _onUpdate(_updates) {
1136
- // Empty to be overriden
1137
- }
1138
- /**
1139
- * Called when object is updated
1140
- */
1141
- async _onUpdated() {
1142
- // Empty to be overriden
1143
- }
1144
- /**
1145
- * Set attribute on the object and database
1146
- * @param property
1147
- * @param value
1148
- */
1149
- async setAttribute(property, value) {
1150
- await this.getRef().setAttribute(property, value);
1151
- this[property] = value;
1152
- }
1153
- /**
1154
- * Remove attribute from both the object and db
1155
- * @param property
1156
- */
1157
- async removeAttribute(property) {
1158
- await this.getRef().removeAttribute(property);
1159
- delete this[property];
1160
- }
1161
- /**
1162
- * Increment an attribute both in store and object
1163
- * @param property
1164
- * @param value
1165
- */
1166
- async incrementAttribute(property, value) {
1167
- return this.incrementAttributes([{ property, value }]);
1168
- }
1169
- /**
1170
- * Return a model ref
1171
- * @returns
1172
- */
1173
- getRef() {
1174
- return new ModelRef(this.getUuid(), this.__class);
1175
- }
1176
- /**
1177
- * Increment a attributes both in store and object
1178
- * @param info
1179
- */
1180
- async incrementAttributes(info) {
1181
- var _a;
1182
- await this.getRef().incrementAttributes(info);
1183
- for (const inc of info) {
1184
- this[_a = inc.property] ?? (this[_a] = 0);
1185
- this[inc.property] += inc.value;
1186
- }
1187
- }
1188
- }
1189
- __decorate([
1190
- NotEnumerable
1191
- ], CoreModel.prototype, "__class", void 0);
1192
- __decorate([
1193
- NotEnumerable
1194
- ], CoreModel.prototype, "__ctx", void 0);
1195
- __decorate([
1196
- NotEnumerable
1197
- ], CoreModel.prototype, "__store", void 0);
1198
- __decorate([
1199
- NotEnumerable
1200
- ], CoreModel.prototype, "__dirty", void 0);
1201
- /**
1202
- * CoreModel with a uuid
1203
- */
1204
- class UuidModel extends CoreModel {
1205
- /**
1206
- * @override
1207
- */
1208
- validate(ctx, updates, ignoreRequired) {
1209
- updates.uuid ?? (updates.uuid = this.generateUid());
1210
- return super.validate(ctx, updates, ignoreRequired);
1211
- }
1212
- }
1213
- export { CoreModel, UuidModel };
1214
- //# sourceMappingURL=coremodel.js.map