@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
@@ -0,0 +1,600 @@
1
+ import { TransformCase } from "@webda/utils";
2
+ import { Service } from "./service.js";
3
+ import { OperationContext } from "../contexts/operationcontext.js";
4
+ import { runWithContext, useContext } from "../contexts/execution.js";
5
+ import * as WebdaError from "../errors/errors.js";
6
+ import { ServiceParameters } from "../services/serviceparameters.js";
7
+ import { useApplication } from "../application/hooks.js";
8
+ import { useModelMetadata } from "../core/hooks.js";
9
+ import { useInstanceStorage } from "../core/instancestorage.js";
10
+ import { registerOperation } from "../core/operations.js";
11
+ import { hasSchema, registerSchema } from "../schemas/hooks.js";
12
+ /** Parameters for DomainService, controlling model exposure, URL naming, and query methods */
13
+ export class DomainServiceParameters extends ServiceParameters {
14
+ /**
15
+ * Expose objects as operations too
16
+ *
17
+ * @default true
18
+ */
19
+ operations;
20
+ /**
21
+ * Transform the name of the model to be used in the URL
22
+ *
23
+ * @see https://blog.boot.dev/clean-code/casings-in-coding/#:~:text=%F0%9F%94%97%20Camel%20Case,Go
24
+ * @default camelCase
25
+ */
26
+ nameTransfomer;
27
+ /**
28
+ * Method used for query objects
29
+ *
30
+ * @default "PUT"
31
+ */
32
+ queryMethod;
33
+ /**
34
+ * List of models to include
35
+ *
36
+ * If model is prefixed with a ! it will be excluded
37
+ *
38
+ * @default ["*"]
39
+ */
40
+ models;
41
+ /**
42
+ * Used to store the excluded models
43
+ * @SchemaIgnore
44
+ */
45
+ excludedModels;
46
+ /**
47
+ * Load parameters with defaults for operations, naming, and query method
48
+ * @param params - the service parameters
49
+ * @returns this for chaining
50
+ */
51
+ load(params = {}) {
52
+ super.load(params);
53
+ // Init default here
54
+ this.operations ??= true;
55
+ this.nameTransfomer ??= "camelCase";
56
+ this.queryMethod ??= "PUT";
57
+ this.models ??= ["*"];
58
+ this.excludedModels = this.models.filter(i => i.startsWith("!")).map(i => i.substring(1));
59
+ // Only contains excluded models so a wildcard is implied
60
+ if (this.models.length === this.excludedModels.length) {
61
+ this.models = ["*"];
62
+ }
63
+ return this;
64
+ }
65
+ /**
66
+ * Is a model is included in the service
67
+ * @param model - the model to use
68
+ * @returns the result
69
+ */
70
+ isIncluded(model) {
71
+ return !this.isExcluded(model) && (this.models.includes("*") || this.models.includes(model));
72
+ }
73
+ /**
74
+ * Is a model excluded from the service
75
+ * @param model - the model to use
76
+ * @returns the result
77
+ */
78
+ isExcluded(model) {
79
+ return this.excludedModels.includes(model);
80
+ }
81
+ }
82
+ /**
83
+ * Domain Service expose all the models as Operations
84
+ *
85
+ * Model are exposed if they have a Expose decorator
86
+ *
87
+ * Children models Exposed should be under the first ModelRelated targetting them or the segment endpoint of Expose
88
+ *
89
+ * Other relations (ModelLinks, ModelParent) should only display their information but not be exposed
90
+ * ModelRelated should be ignored
91
+ *
92
+ * @WebdaModda
93
+ */
94
+ export class DomainService extends Service {
95
+ app;
96
+ static schemas = {
97
+ uuidRequest: {
98
+ type: "object",
99
+ properties: {
100
+ uuid: {
101
+ type: "string"
102
+ }
103
+ },
104
+ required: ["uuid"]
105
+ },
106
+ searchRequest: {
107
+ type: "object",
108
+ properties: {
109
+ query: {
110
+ type: "string"
111
+ }
112
+ }
113
+ }
114
+ };
115
+ /**
116
+ * Return the model name for this service
117
+ * @param name - the name to use
118
+ * @returns the result string
119
+ *
120
+ * @see https://blog.boot.dev/clean-code/casings-in-coding/#:~:text=%F0%9F%94%97%20Camel%20Case,Go
121
+ */
122
+ transformName(name) {
123
+ return TransformCase(name, this.parameters.nameTransfomer);
124
+ }
125
+ /**
126
+ * Retrieve a model instance by uuid, throwing NotFound if missing or deleted
127
+ * @param model - the model class to query
128
+ * @param uuid - the primary key
129
+ * @returns the model instance
130
+ */
131
+ async loadModel(model, uuid) {
132
+ let object;
133
+ try {
134
+ object = await model.ref(uuid).get();
135
+ }
136
+ catch {
137
+ // Repository may throw when the object does not exist
138
+ }
139
+ if (object === undefined || object.isDeleted()) {
140
+ const context = useContext();
141
+ await this.emit("Store.WebNotFound", {
142
+ context,
143
+ uuid: typeof uuid === "string" ? uuid : JSON.stringify(uuid)
144
+ });
145
+ throw new WebdaError.NotFound("Object not found");
146
+ }
147
+ return object;
148
+ }
149
+ /**
150
+ * Create a model operation implementation
151
+ * @param input - the model data to create
152
+ * @returns the created model instance
153
+ */
154
+ async modelCreate(input) {
155
+ const context = useContext();
156
+ const { model } = context.getExtension("operationContext");
157
+ // resolveArguments spreads the model schema's properties into positional args,
158
+ // so what lands here as `input` may be a single property value (e.g. slug string)
159
+ // rather than the full body. Also handles the no-schema fallback where the
160
+ // OperationContext itself is passed. In all non-object cases, read the raw input.
161
+ if (typeof input !== "object" || input === null || input instanceof OperationContext) {
162
+ input = await context.getInput();
163
+ }
164
+ return runWithContext(context, async () => {
165
+ // Instantiate the model from raw input, load data, then save
166
+ const object = new model();
167
+ object.load(input);
168
+ await object.save();
169
+ return object;
170
+ });
171
+ }
172
+ /**
173
+ * Update a model operation implementation
174
+ * @param uuid - the model primary key
175
+ * @param input - the update data (may be undefined if schema was not resolvable)
176
+ * @returns the updated model instance
177
+ */
178
+ async modelUpdate(input) {
179
+ const context = useContext();
180
+ const { model, pkFields } = context.getExtension("operationContext");
181
+ // resolveArguments spreads all model schema properties as positional args.
182
+ // The first arg becomes the first property value (often the PK value).
183
+ // Fall back to context for both PK and input when needed.
184
+ if (typeof input !== "object" || input === null) {
185
+ input = await context.getInput();
186
+ }
187
+ // Resolve the PK from body or URL params using the model's actual PK fields;
188
+ // fall back to "uuid" for legacy operations without pkFields in the context.
189
+ const params = context.getParameters() ?? {};
190
+ const fields = pkFields?.length ? pkFields : ["uuid"];
191
+ const pk = fields.length === 1
192
+ ? input?.[fields[0]] ?? params[fields[0]]
193
+ : fields.reduce((acc, f) => {
194
+ acc[f] = input?.[f] ?? params[f];
195
+ return acc;
196
+ }, {});
197
+ const object = await this.loadModel(model, pk);
198
+ object["load"](input);
199
+ return object;
200
+ }
201
+ /**
202
+ * Get a model operation implementation
203
+ * @param uuid - the model primary key
204
+ * @returns the model instance
205
+ */
206
+ async modelGet(uuid) {
207
+ const context = useContext();
208
+ const { model } = context.getExtension("operationContext");
209
+ const object = await this.loadModel(model, uuid);
210
+ //await object.checkAct(context, "get");
211
+ return object;
212
+ }
213
+ /**
214
+ * Delete a model operation implementation
215
+ * @param uuid - the model primary key
216
+ */
217
+ async modelDelete(uuid) {
218
+ const context = useContext();
219
+ const { model } = context.getExtension("operationContext");
220
+ const object = await this.loadModel(model, uuid);
221
+ //await object.checkAct(context, "delete");
222
+ // Object can decide to not delete but mark as deleted
223
+ await object.delete();
224
+ }
225
+ /**
226
+ * Query models
227
+ * @param query - the query string
228
+ * @returns the query results
229
+ */
230
+ async modelQuery(query) {
231
+ const context = useContext();
232
+ const { model } = context.getExtension("operationContext");
233
+ return runWithContext(context, async () => {
234
+ try {
235
+ return await model.query(query);
236
+ }
237
+ catch (err) {
238
+ if (err instanceof SyntaxError) {
239
+ this.log("INFO", "Query syntax error");
240
+ throw new WebdaError.BadRequest("Query syntax error");
241
+ }
242
+ throw err;
243
+ }
244
+ });
245
+ }
246
+ /**
247
+ * Patch a model
248
+ * @param uuid - the model primary key
249
+ * @param input - the partial update data (may be undefined if schema was not resolvable)
250
+ * @returns the patched model instance
251
+ */
252
+ async modelPatch(input) {
253
+ const context = useContext();
254
+ const { model, pkFields } = context.getExtension("operationContext");
255
+ if (typeof input !== "object" || input === null) {
256
+ input = await context.getInput();
257
+ }
258
+ // Build the PK from the model's real primary-key fields (same logic as modelUpdate).
259
+ const params = context.getParameters() ?? {};
260
+ const fields = pkFields?.length ? pkFields : ["uuid"];
261
+ const pk = fields.length === 1
262
+ ? input?.[fields[0]] ?? params[fields[0]]
263
+ : fields.reduce((acc, f) => {
264
+ acc[f] = input?.[f] ?? params[f];
265
+ return acc;
266
+ }, {});
267
+ const object = await this.loadModel(model, pk);
268
+ await object.patch(input);
269
+ return object;
270
+ }
271
+ /**
272
+ * Action on a model
273
+ * @param args - arguments forwarded to the action method
274
+ * @returns the action result
275
+ */
276
+ async modelAction(...args) {
277
+ const context = useContext();
278
+ const { model, action } = context.getExtension("operationContext");
279
+ // The action can be exposed under another name than its method
280
+ const handler = action.handler || action.name;
281
+ if (!action.global) {
282
+ // First arg is uuid when the action is instance-level
283
+ const uuid = args[0];
284
+ const object = await model.ref(uuid).get();
285
+ if (!object || object.isDeleted()) {
286
+ throw new WebdaError.NotFound("Object not found");
287
+ }
288
+ //await object.checkAct(context, action.name as ActionsEnum<Model>);
289
+ return object[handler](context);
290
+ }
291
+ else {
292
+ return model[handler](context);
293
+ }
294
+ }
295
+ /**
296
+ * Add operations for all exposed models
297
+ * @returns the result
298
+ */
299
+ initOperations() {
300
+ super.initOperations();
301
+ if (!this.parameters.operations) {
302
+ return;
303
+ }
304
+ const app = (this.app = useApplication());
305
+ // Add default schemas - used for operation parameters validation
306
+ const appSchemas = app.getSchemas();
307
+ for (const i in DomainService.schemas) {
308
+ if (hasSchema(i)) {
309
+ continue;
310
+ }
311
+ registerSchema(i, DomainService.schemas[i]);
312
+ }
313
+ // Register schemas in application schema registry so that
314
+ // resolveArguments can find them for typed parameter extraction.
315
+ for (const name of Object.keys(DomainService.schemas)) {
316
+ appSchemas[name] ??= DomainService.schemas[name];
317
+ }
318
+ const models = app.getModels();
319
+ for (const modelKey in models) {
320
+ const model = models[modelKey];
321
+ if (!model) {
322
+ continue;
323
+ }
324
+ const Metadata = useModelMetadata(model);
325
+ if (!Metadata) {
326
+ continue;
327
+ }
328
+ // Skip if not exposed or not included
329
+ if (!this.parameters.isIncluded(Metadata.Identifier)) {
330
+ continue;
331
+ }
332
+ // Overlap object are hidden by design
333
+ if (!this.app.isFinalModel(Metadata.Identifier)) {
334
+ continue;
335
+ }
336
+ const shortId = Metadata.Identifier.split("/").pop();
337
+ const plural = Metadata.Plural;
338
+ const modelSchema = modelKey;
339
+ const actionsName = Object.keys(Metadata.Actions);
340
+ // Build primary key schema for this model
341
+ const pkSchemaName = `${modelKey}.primaryKey`;
342
+ const pkFields = Metadata.PrimaryKey || ["uuid"];
343
+ const pkSchema = { type: "object", properties: {}, required: pkFields };
344
+ for (const field of pkFields) {
345
+ pkSchema.properties[field] = { type: "string" };
346
+ }
347
+ if (!hasSchema(pkSchemaName)) {
348
+ registerSchema(pkSchemaName, pkSchema);
349
+ }
350
+ // Always register in the app schema map (the global registry is process-wide) so getSchema() finds it
351
+ appSchemas[pkSchemaName] ??= pkSchema;
352
+ // Build query result schema for this model
353
+ const queryResultSchemaName = `${modelKey}.queryResult`;
354
+ const queryResultSchema = {
355
+ type: "object",
356
+ properties: {
357
+ continuationToken: { type: "string" },
358
+ results: { type: "array", items: { $ref: `#/definitions/${modelKey}` } }
359
+ }
360
+ };
361
+ if (!hasSchema(queryResultSchemaName)) {
362
+ registerSchema(queryResultSchemaName, queryResultSchema);
363
+ }
364
+ appSchemas[queryResultSchemaName] ??= queryResultSchema;
365
+ // URL path segments for the model's primary key (e.g. "{slug}" or
366
+ // "{follower}/{following}"). Named after the real PK fields so the router
367
+ // exposes them in context.getParameters() under matching names, which is
368
+ // what the pkSchema validation and modelGet/Update/Delete expect.
369
+ const pkPath = pkFields.map(f => `{${String(f)}}`).join("/");
370
+ // CRUD operations
371
+ ["create", "update"]
372
+ .filter(k => !actionsName.includes(k))
373
+ .forEach(k => {
374
+ k = k.substring(0, 1).toUpperCase() + k.substring(1);
375
+ const id = `${shortId}.${k}`;
376
+ registerOperation(id, {
377
+ service: this.getName(),
378
+ method: k === "Create" ? "modelCreate" : "modelUpdate",
379
+ input: modelSchema + "?",
380
+ output: modelSchema,
381
+ summary: k === "Create" ? `Create a new ${shortId}` : `Update a ${shortId}`,
382
+ tags: [shortId],
383
+ rest: { method: k === "Create" ? "post" : "put", path: k === "Create" ? "" : pkPath },
384
+ context: {
385
+ model,
386
+ pkFields
387
+ }
388
+ });
389
+ });
390
+ ["delete", "get"]
391
+ .filter(k => !actionsName.includes(k))
392
+ .forEach(k => {
393
+ k = k.substring(0, 1).toUpperCase() + k.substring(1);
394
+ const id = `${shortId}.${k}`;
395
+ registerOperation(id, {
396
+ service: this.getName(),
397
+ method: `model${k}`,
398
+ input: pkSchemaName,
399
+ output: k === "Get" ? modelSchema : "void",
400
+ summary: `${k === "Delete" ? "Delete" : "Retrieve"} a ${shortId}`,
401
+ tags: [shortId],
402
+ rest: { method: k === "Delete" ? "delete" : "get", path: pkPath },
403
+ context: {
404
+ model,
405
+ pkFields
406
+ }
407
+ });
408
+ });
409
+ if (!actionsName.includes("query")) {
410
+ const id = `${plural}.Query`;
411
+ registerOperation(id, {
412
+ service: this.getName(),
413
+ method: "modelQuery",
414
+ input: "searchRequest",
415
+ output: queryResultSchemaName,
416
+ summary: `Query ${plural}`,
417
+ tags: [shortId],
418
+ rest: { method: this.parameters.queryMethod.toLowerCase(), path: "" },
419
+ context: {
420
+ model
421
+ }
422
+ });
423
+ }
424
+ // Add patch
425
+ if (!actionsName.includes("update")) {
426
+ const id = `${shortId}.Patch`;
427
+ registerOperation(id, {
428
+ service: this.getName(),
429
+ method: "modelPatch",
430
+ input: modelSchema + "?",
431
+ output: modelSchema,
432
+ summary: `Patch a ${shortId}`,
433
+ tags: [shortId],
434
+ rest: { method: "patch", path: pkPath },
435
+ context: {
436
+ model,
437
+ pkFields
438
+ }
439
+ });
440
+ }
441
+ // Add all operations for Actions
442
+ const actions = Metadata.Actions;
443
+ Object.keys(actions)
444
+ .filter(k => !["create", "update", "delete", "get", "query"].includes(k))
445
+ .forEach(name => {
446
+ const id = `${shortId}.${name.substring(0, 1).toUpperCase() + name.substring(1)}`;
447
+ const info = {
448
+ service: this.getName(),
449
+ method: `modelAction`,
450
+ id
451
+ };
452
+ info.input = actions[name].global ? `${modelKey}.${name}.input` : "uuidRequest";
453
+ info.output = `${modelKey}.${name}.output`;
454
+ info.context = {
455
+ model,
456
+ action: { ...actions[name], name }
457
+ };
458
+ info.summary = `${name.substring(0, 1).toUpperCase() + name.substring(1)} on ${shortId}`;
459
+ info.tags = [shortId];
460
+ info.rest = {
461
+ method: (actions[name].method || "PUT").toLowerCase(),
462
+ path: actions[name].global ? name : `{uuid}/${name}`
463
+ };
464
+ registerOperation(id, info);
465
+ });
466
+ this.addBehaviorOperations(model, Metadata, shortId);
467
+ }
468
+ }
469
+ /**
470
+ * Register one operation per declared action on every Behavior attribute of
471
+ * the model. Operation ids follow the `<Model>.<Attribute>.<Action>` shape
472
+ * so transports can discover them with the same lookup logic used for
473
+ * model-level operations.
474
+ *
475
+ * The actual dispatch is deferred to `modelBehaviorAction`. This method
476
+ * only wires the registry entries — it does not invoke behaviors.
477
+ *
478
+ * @param model - the model class owning the behavior attribute
479
+ * @param Metadata - the model metadata blob (with Relations.behaviors)
480
+ * @param name - the model's short identifier (e.g. "User")
481
+ */
482
+ addBehaviorOperations(model, Metadata, name) {
483
+ const app = useApplication();
484
+ (Metadata.Relations?.behaviors || []).forEach((behaviorRel) => {
485
+ const behaviorMeta = app.getBehaviorMetadata(behaviorRel.behavior);
486
+ if (!behaviorMeta) {
487
+ return;
488
+ }
489
+ const attributeCap = behaviorRel.attribute.substring(0, 1).toUpperCase() + behaviorRel.attribute.substring(1);
490
+ Object.keys(behaviorMeta.Actions || {}).forEach(actionName => {
491
+ const actionCap = actionName.substring(0, 1).toUpperCase() + actionName.substring(1);
492
+ const id = `${name}.${attributeCap}.${actionCap}`;
493
+ const inputSchema = `${behaviorRel.behavior}.${actionName}.input`;
494
+ const outputSchema = `${behaviorRel.behavior}.${actionName}.output`;
495
+ const actionMeta = (behaviorMeta.Actions || {})[actionName] || {};
496
+ const restHint = actionMeta.rest ?? {};
497
+ const route = restHint.route;
498
+ const method = (restHint.method ?? "PUT").toLowerCase();
499
+ let path;
500
+ if (route === ".") {
501
+ path = `{uuid}/${behaviorRel.attribute}`;
502
+ }
503
+ else if (route !== undefined && route !== "") {
504
+ path = `{uuid}/${behaviorRel.attribute}/${route}`;
505
+ }
506
+ else {
507
+ path = `{uuid}/${behaviorRel.attribute}.${actionName}`;
508
+ }
509
+ registerOperation(id, {
510
+ service: this.getName(),
511
+ method: "modelBehaviorAction",
512
+ input: hasSchema(inputSchema) ? inputSchema : "uuidRequest",
513
+ output: hasSchema(outputSchema) ? outputSchema : "void",
514
+ summary: `${actionCap} on ${name}.${behaviorRel.attribute}`,
515
+ tags: [name],
516
+ rest: {
517
+ method,
518
+ path
519
+ },
520
+ context: {
521
+ model,
522
+ attribute: behaviorRel.attribute,
523
+ behavior: behaviorRel.behavior,
524
+ action: actionName
525
+ }
526
+ });
527
+ });
528
+ });
529
+ }
530
+ /**
531
+ * Dispatcher for a behavior-attribute action registered by
532
+ * `addBehaviorOperations`. Mirrors the shape of `modelAction`:
533
+ *
534
+ * 1. read the parent model class + attribute/action names off
535
+ * `operationContext` (set up by `callOperation`),
536
+ * 2. take `args[0]` as the parent UUID (Behavior actions are always
537
+ * instance-scoped per the spec),
538
+ * 3. load the parent via `model.ref(uuid).get()` — `NotFound` if missing
539
+ * or soft-deleted,
540
+ * 4. ask the model whether the action is allowed via
541
+ * `canAct(ctx, "<attribute>.<action>")` — anything but `true` (or the
542
+ * instance itself, the convention some models use to say "yes, on this
543
+ * object") is treated as a denial,
544
+ * 5. read `instance[attribute]` — already a hydrated Behavior instance
545
+ * thanks to `CoreModel.deserialize` (Task 7),
546
+ * 6. call `behaviorInstance[action](...args.slice(1))` and let
547
+ * `callOperation` write the result onto the context.
548
+ *
549
+ * @param args - resolved arguments from `resolveArguments`; the first is
550
+ * always the parent UUID, the rest come from the request body / query
551
+ * params depending on the registered input schema.
552
+ * @returns the Behavior method's return value (callOperation writes it to
553
+ * the context output if non-undefined).
554
+ */
555
+ async modelBehaviorAction(...args) {
556
+ const context = useContext();
557
+ const { model, attribute, action, behavior } = context.getExtension("operationContext");
558
+ // Parent uuid comes from the URL (`/posts/{uuid}/mainImage/...`); read it
559
+ // straight off the context so we don't depend on its position in `args`.
560
+ const uuid = (context.getParameters() || {}).uuid;
561
+ let instance;
562
+ try {
563
+ instance = await model.ref(uuid).get();
564
+ }
565
+ catch {
566
+ // Repositories (e.g. MemoryRepository) throw a plain Error when the
567
+ // primary key isn't in storage. Treat that the same as a "soft" miss.
568
+ }
569
+ if (!instance || instance.isDeleted?.()) {
570
+ throw new WebdaError.NotFound("Object not found");
571
+ }
572
+ const allowed = await instance.canAct(context, `${attribute}.${action}`);
573
+ if (allowed !== true && allowed !== instance) {
574
+ throw new WebdaError.Forbidden(`Action ${attribute}.${action} not allowed`);
575
+ }
576
+ const behaviorInstance = instance[attribute];
577
+ if (!behaviorInstance || typeof behaviorInstance[action] !== "function") {
578
+ throw new WebdaError.NotFound(`Behavior method ${attribute}.${action} not found`);
579
+ }
580
+ // `args` was built by `resolveArguments` from the operation's input
581
+ // schema. Two schema shapes coexist:
582
+ // 1. Auto-generated from the method signature (`exploreBehaviorsAction`
583
+ // in the compiler) — e.g. `setMetadata(hash, metadata)` produces
584
+ // `{ hash, metadata }`. No `uuid` property.
585
+ // 2. Legacy `uuidRequest` fallback (and hand-crafted test schemas) —
586
+ // starts with `{ uuid, ... }`. The `uuid` slot exists only so the
587
+ // validator accepts the URL param.
588
+ // When the schema starts with `uuid`, drop it before forwarding to the
589
+ // behavior method (whose signature never includes uuid). When it
590
+ // doesn't, forward as-is.
591
+ const operationId = context.getExtension("operation");
592
+ const opInput = operationId ? useInstanceStorage().operations?.[operationId]?.input : undefined;
593
+ const inputSchema = typeof opInput === "string" ? useApplication().getSchema(opInput) : undefined;
594
+ const propNames = inputSchema?.properties ? Object.keys(inputSchema.properties) : [];
595
+ const passArgs = propNames[0] === "uuid" ? args.slice(1) : args;
596
+ void behavior; // tagged in operationContext for future use
597
+ return behaviorInstance[action](...passArgs);
598
+ }
599
+ }
600
+ //# sourceMappingURL=domainservice.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domainservice.service.js","sourceRoot":"","sources":["../../src/services/domainservice.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAqB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,8FAA8F;AAC9F,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAC5D;;;;OAIG;IACH,UAAU,CAAW;IACrB;;;;;OAKG;IACH,cAAc,CAAqB;IACnC;;;;OAIG;IACH,WAAW,CAAiB;IAC5B;;;;;;OAMG;IACH,MAAM,CAAY;IAClB;;;OAGG;IACK,cAAc,CAAW;IAEjC;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAQ,EAAE;QACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,oBAAoB;QACpB,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;QACzB,IAAI,CAAC,cAAc,KAAK,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,yDAAyD;QACzD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,KAAa;QACtB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF;AAKD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAGX,SAAQ,OAAa;IACrB,GAAG,CAAc;IACjB,MAAM,CAAC,OAAO,GAAG;QACf,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;iBACf;aACF;SACF;KACF,CAAC;IAEF;;;;;;OAMG;IACH,aAAa,CAAC,IAAY;QACxB,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,SAAS,CAAC,KAAwB,EAAE,IAAkC;QAClF,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;YAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACnC,OAAO;gBACP,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC7D,CAAC,CAAC;YACH,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,KAAU;QAC1B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAA+B,kBAAkB,CAAC,CAAC;QACzF,+EAA+E;QAC/E,kFAAkF;QAClF,2EAA2E;QAC3E,kFAAkF;QAClF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACrF,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACxC,6DAA6D;YAC7D,MAAM,MAAM,GAAG,IAAK,KAAa,EAAW,CAAC;YAC5C,MAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,KAAW;QAC3B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAG7C,kBAAkB,CAAC,CAAC;QACvB,2EAA2E;QAC3E,uEAAuE;QACvE,0DAA0D;QAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;QACD,6EAA6E;QAC7E,6EAA6E;QAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,EAAE,GACN,MAAM,CAAC,MAAM,KAAK,CAAC;YACjB,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACvB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAA6B,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAA+B,kBAAkB,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,wCAAwC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAA+B,kBAAkB,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,2CAA2C;QAC3C,sDAAsD;QACtD,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,KAAa;QAC5B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAAwB,kBAAkB,CAAC,CAAC;QAClF,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACxC,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;oBACvC,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;gBACxD,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,KAAW;QAC1B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAG7C,kBAAkB,CAAC,CAAC;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;QACD,qFAAqF;QACrF,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,EAAE,GACN,MAAM,CAAC,MAAM,KAAK,CAAC;YACjB,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACvB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAA6B,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,GAAG,IAAW;QAC9B,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAG3C,kBAAkB,CAAC,CAAC;QACvB,+DAA+D;QAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,sDAAsD;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;gBAClC,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YACpD,CAAC;YACD,oEAAoE;YACpE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAsB,cAAc,EAAG,CAAC,CAAC;QAE9D,iEAAiE;QACjE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,0DAA0D;QAC1D,iEAAiE;QACjE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,UAAU,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YACD,sCAAsC;YACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrD,SAAS;YACX,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChD,SAAS;YACX,CAAC;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC;YAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAElD,0CAA0C;YAC1C,MAAM,YAAY,GAAG,GAAG,QAAQ,aAAa,CAAC;YAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YAC7E,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC;YACD,sGAAsG;YACtG,UAAU,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC;YAEtC,2CAA2C;YAC3C,MAAM,qBAAqB,GAAG,GAAG,QAAQ,cAAc,CAAC;YACxD,MAAM,iBAAiB,GAAQ;gBAC7B,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACrC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAiB,QAAQ,EAAE,EAAE,EAAE;iBACzE;aACF,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;YAC3D,CAAC;YACD,UAAU,CAAC,qBAAqB,CAAC,KAAK,iBAAiB,CAAC;YAExD,kEAAkE;YAClE,0EAA0E;YAC1E,yEAAyE;YACzE,kEAAkE;YAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE7D,kBAAkB;YAClB,CAAC,QAAQ,EAAE,QAAQ,CAAC;iBACjB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACrC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACX,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC7B,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa;oBACtD,KAAK,EAAE,WAAW,GAAG,GAAG;oBACxB,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE;oBAC3E,IAAI,EAAE,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;oBACrF,OAAO,EAAE;wBACP,KAAK;wBACL,QAAQ;qBACT;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACL,CAAC,QAAQ,EAAE,KAAK,CAAC;iBACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACrC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACX,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC7B,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,QAAQ,CAAC,EAAE;oBACnB,KAAK,EAAE,YAAY;oBACnB,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;oBAC1C,OAAO,EAAE,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,MAAM,OAAO,EAAE;oBACjE,IAAI,EAAE,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;oBACjE,OAAO,EAAE;wBACP,KAAK;wBACL,QAAQ;qBACT;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACL,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE,GAAG,GAAG,MAAM,QAAQ,CAAC;gBAC7B,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,eAAe;oBACtB,MAAM,EAAE,qBAAqB;oBAC7B,OAAO,EAAE,SAAS,MAAM,EAAE;oBAC1B,IAAI,EAAE,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAmB,EAAE,IAAI,EAAE,EAAE,EAAE;oBACtF,OAAO,EAAE;wBACP,KAAK;qBACN;iBACF,CAAC,CAAC;YACL,CAAC;YACD,YAAY;YACZ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,MAAM,EAAE,GAAG,GAAG,OAAO,QAAQ,CAAC;gBAC9B,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,WAAW,GAAG,GAAG;oBACxB,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,WAAW,OAAO,EAAE;oBAC7B,IAAI,EAAE,CAAC,OAAO,CAAC;oBACf,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;oBACvC,OAAO,EAAE;wBACP,KAAK;wBACL,QAAQ;qBACT;iBACF,CAAC,CAAC;YACL,CAAC;YACD,iCAAiC;YACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;iBACjB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACxE,OAAO,CAAC,IAAI,CAAC,EAAE;gBACd,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,MAAM,IAAI,GAAQ;oBAChB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,aAAa;oBACrB,EAAE;iBACH,CAAC;gBACF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;gBAChF,IAAI,CAAC,MAAM,GAAG,GAAG,QAAQ,IAAI,IAAI,SAAS,CAAC;gBAC3C,IAAI,CAAC,OAAO,GAAG;oBACb,KAAK;oBACL,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;iBACnC,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC;gBACzF,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,CAAC,IAAI,GAAG;oBACV,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE;oBACrD,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE;iBACrD,CAAC;gBACF,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,qBAAqB,CAAC,KAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,qBAAqB,CAAC,KAAwB,EAAE,QAAa,EAAE,IAAY;QACzE,MAAM,GAAG,GAAG,cAAc,EAAe,CAAC;QAC1C,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,WAAoD,EAAE,EAAE;YACrG,MAAM,YAAY,GAAG,GAAG,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACnE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,MAAM,YAAY,GAChB,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC3D,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrF,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;gBAClD,MAAM,WAAW,GAAG,GAAG,WAAW,CAAC,QAAQ,IAAI,UAAU,QAAQ,CAAC;gBAClE,MAAM,YAAY,GAAG,GAAG,WAAW,CAAC,QAAQ,IAAI,UAAU,SAAS,CAAC;gBACpE,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC7B,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAiD,CAAC;gBACvG,IAAI,IAAY,CAAC;gBACjB,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;oBAClB,IAAI,GAAG,UAAU,WAAW,CAAC,SAAS,EAAE,CAAC;gBAC3C,CAAC;qBAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBAC/C,IAAI,GAAG,UAAU,WAAW,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,UAAU,WAAW,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;gBACzD,CAAC;gBACD,iBAAiB,CAAC,EAAE,EAAE;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;oBACvB,MAAM,EAAE,qBAAqB;oBAC7B,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;oBAC3D,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;oBACvD,OAAO,EAAE,GAAG,SAAS,OAAO,IAAI,IAAI,WAAW,CAAC,SAAS,EAAE;oBAC3D,IAAI,EAAE,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE;wBACJ,MAAM;wBACN,IAAI;qBACL;oBACD,OAAO,EAAE;wBACP,KAAK;wBACL,SAAS,EAAE,WAAW,CAAC,SAAS;wBAChC,QAAQ,EAAE,WAAW,CAAC,QAAQ;wBAC9B,MAAM,EAAE,UAAU;qBACnB;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,mBAAmB,CAAC,GAAG,IAAW;QACtC,MAAM,OAAO,GAAG,UAAU,EAAoB,CAAC;QAC/C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,CAKhE,kBAAkB,CAAC,CAAC;QAEvB,0EAA0E;QAC1E,yEAAyE;QACzE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAClD,IAAI,QAAa,CAAC;QAClB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,sEAAsE;QACxE,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;QACzE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,UAAU,SAAS,IAAI,MAAM,cAAc,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,IAAI,OAAO,gBAAgB,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YACxE,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,SAAS,IAAI,MAAM,YAAY,CAAC,CAAC;QACpF,CAAC;QAED,oEAAoE;QACpE,qCAAqC;QACrC,0EAA0E;QAC1E,sEAAsE;QACtE,iDAAiD;QACjD,uEAAuE;QACvE,uEAAuE;QACvE,wCAAwC;QACxC,uEAAuE;QACvE,iEAAiE;QACjE,0BAA0B;QAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAS,WAAW,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,MAAM,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,MAAM,SAAS,GAAG,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhE,KAAK,QAAQ,CAAC,CAAC,4CAA4C;QAC3D,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC/C,CAAC;CAEF"}