@baruk/core 0.1.0 → 0.3.0

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 (429) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/dist/auth/password-reset.d.ts.map +1 -1
  3. package/dist/auth/password-reset.js +2 -4
  4. package/dist/auth/password-reset.js.map +1 -1
  5. package/dist/auth/password.d.ts +2 -18
  6. package/dist/auth/password.d.ts.map +1 -1
  7. package/dist/auth/password.js +12 -51
  8. package/dist/auth/password.js.map +1 -1
  9. package/dist/auth/service.d.ts +0 -12
  10. package/dist/auth/service.d.ts.map +1 -1
  11. package/dist/auth/service.js +3 -36
  12. package/dist/auth/service.js.map +1 -1
  13. package/dist/auth/session-token.d.ts +5 -2
  14. package/dist/auth/session-token.d.ts.map +1 -1
  15. package/dist/auth/session-token.js +7 -12
  16. package/dist/auth/session-token.js.map +1 -1
  17. package/dist/billing/dunning.d.ts +33 -0
  18. package/dist/billing/dunning.d.ts.map +1 -0
  19. package/dist/billing/dunning.js +49 -0
  20. package/dist/billing/dunning.js.map +1 -0
  21. package/dist/billing/provider/asaas.d.ts +15 -0
  22. package/dist/billing/provider/asaas.d.ts.map +1 -0
  23. package/dist/billing/provider/asaas.js +121 -0
  24. package/dist/billing/provider/asaas.js.map +1 -0
  25. package/dist/billing/provider/manual.d.ts +14 -0
  26. package/dist/billing/provider/manual.d.ts.map +1 -0
  27. package/dist/billing/provider/manual.js +24 -0
  28. package/dist/billing/provider/manual.js.map +1 -0
  29. package/dist/billing/provider/registry.d.ts +12 -0
  30. package/dist/billing/provider/registry.d.ts.map +1 -0
  31. package/dist/billing/provider/registry.js +22 -0
  32. package/dist/billing/provider/registry.js.map +1 -0
  33. package/dist/billing/provider/types.d.ts +76 -0
  34. package/dist/billing/provider/types.d.ts.map +1 -0
  35. package/dist/billing/provider/types.js +9 -0
  36. package/dist/billing/provider/types.js.map +1 -0
  37. package/dist/billing/receivable.d.ts +108 -0
  38. package/dist/billing/receivable.d.ts.map +1 -0
  39. package/dist/billing/receivable.js +2 -0
  40. package/dist/billing/receivable.js.map +1 -0
  41. package/dist/billing/repository.d.ts +97 -0
  42. package/dist/billing/repository.d.ts.map +1 -0
  43. package/dist/billing/repository.js +167 -0
  44. package/dist/billing/repository.js.map +1 -0
  45. package/dist/cjs/audit/audit.js +31 -0
  46. package/dist/cjs/audit/audit.js.map +1 -0
  47. package/dist/cjs/audit/repository.js +32 -0
  48. package/dist/cjs/audit/repository.js.map +1 -0
  49. package/dist/cjs/auth/password-reset.js +58 -0
  50. package/dist/cjs/auth/password-reset.js.map +1 -0
  51. package/dist/cjs/auth/password.js +32 -0
  52. package/dist/cjs/auth/password.js.map +1 -0
  53. package/dist/cjs/auth/service.js +191 -0
  54. package/dist/cjs/auth/service.js.map +1 -0
  55. package/dist/cjs/auth/session-token.js +18 -0
  56. package/dist/cjs/auth/session-token.js.map +1 -0
  57. package/dist/cjs/billing/dunning.js +54 -0
  58. package/dist/cjs/billing/dunning.js.map +1 -0
  59. package/dist/cjs/billing/provider/asaas.js +125 -0
  60. package/dist/cjs/billing/provider/asaas.js.map +1 -0
  61. package/dist/cjs/billing/provider/manual.js +28 -0
  62. package/dist/cjs/billing/provider/manual.js.map +1 -0
  63. package/dist/cjs/billing/provider/registry.js +27 -0
  64. package/dist/cjs/billing/provider/registry.js.map +1 -0
  65. package/dist/cjs/billing/provider/types.js +10 -0
  66. package/dist/cjs/billing/provider/types.js.map +1 -0
  67. package/dist/cjs/billing/receivable.js +3 -0
  68. package/dist/cjs/billing/receivable.js.map +1 -0
  69. package/dist/cjs/billing/repository.js +180 -0
  70. package/dist/cjs/billing/repository.js.map +1 -0
  71. package/dist/cjs/clients/repository.js +123 -0
  72. package/dist/cjs/clients/repository.js.map +1 -0
  73. package/dist/cjs/commercial-catalog/catalog.js +108 -0
  74. package/dist/cjs/commercial-catalog/catalog.js.map +1 -0
  75. package/dist/cjs/commercial-catalog/consumption-contracts.js +10 -0
  76. package/dist/cjs/commercial-catalog/consumption-contracts.js.map +1 -0
  77. package/dist/cjs/commercial-catalog/coupon.js +63 -0
  78. package/dist/cjs/commercial-catalog/coupon.js.map +1 -0
  79. package/dist/cjs/commercial-catalog/index.js +16 -0
  80. package/dist/cjs/commercial-catalog/index.js.map +1 -0
  81. package/dist/cjs/commercial-catalog/offer-application.js +53 -0
  82. package/dist/cjs/commercial-catalog/offer-application.js.map +1 -0
  83. package/dist/cjs/commercial-catalog/types.js +26 -0
  84. package/dist/cjs/commercial-catalog/types.js.map +1 -0
  85. package/dist/cjs/crm/repository.js +195 -0
  86. package/dist/cjs/crm/repository.js.map +1 -0
  87. package/dist/cjs/dashboard/repository.js +39 -0
  88. package/dist/cjs/dashboard/repository.js.map +1 -0
  89. package/dist/cjs/db/client.js +27 -0
  90. package/dist/cjs/db/client.js.map +1 -0
  91. package/dist/cjs/db/context.js +43 -0
  92. package/dist/cjs/db/context.js.map +1 -0
  93. package/dist/cjs/db/load-env.js +47 -0
  94. package/dist/cjs/db/load-env.js.map +1 -0
  95. package/dist/cjs/db/seed.js +69 -0
  96. package/dist/cjs/db/seed.js.map +1 -0
  97. package/dist/cjs/entitlements/decision.js +203 -0
  98. package/dist/cjs/entitlements/decision.js.map +1 -0
  99. package/dist/cjs/entitlements/derive.js +46 -0
  100. package/dist/cjs/entitlements/derive.js.map +1 -0
  101. package/dist/cjs/entitlements/index.js +23 -0
  102. package/dist/cjs/entitlements/index.js.map +1 -0
  103. package/dist/cjs/entitlements/sources.js +60 -0
  104. package/dist/cjs/entitlements/sources.js.map +1 -0
  105. package/dist/cjs/entitlements/standing.js +42 -0
  106. package/dist/cjs/entitlements/standing.js.map +1 -0
  107. package/dist/cjs/entitlements/types.js +16 -0
  108. package/dist/cjs/entitlements/types.js.map +1 -0
  109. package/dist/cjs/import/clients-import.js +147 -0
  110. package/dist/cjs/import/clients-import.js.map +1 -0
  111. package/dist/cjs/index.js +335 -0
  112. package/dist/cjs/index.js.map +1 -0
  113. package/dist/cjs/mail/dedup-store.js +56 -0
  114. package/dist/cjs/mail/dedup-store.js.map +1 -0
  115. package/dist/cjs/mail/index.js +24 -0
  116. package/dist/cjs/mail/index.js.map +1 -0
  117. package/dist/cjs/mail/provider.js +251 -0
  118. package/dist/cjs/mail/provider.js.map +1 -0
  119. package/dist/cjs/mail/resend-client.js +103 -0
  120. package/dist/cjs/mail/resend-client.js.map +1 -0
  121. package/dist/cjs/mail/resend.js +21 -0
  122. package/dist/cjs/mail/resend.js.map +1 -0
  123. package/dist/cjs/mail/sanitize.js +56 -0
  124. package/dist/cjs/mail/sanitize.js.map +1 -0
  125. package/dist/cjs/mail/sender-resolver.js +15 -0
  126. package/dist/cjs/mail/sender-resolver.js.map +1 -0
  127. package/dist/cjs/mail/template-renderer.js +21 -0
  128. package/dist/cjs/mail/template-renderer.js.map +1 -0
  129. package/dist/cjs/mail/types.js +38 -0
  130. package/dist/cjs/mail/types.js.map +1 -0
  131. package/dist/cjs/notifications/repository.js +49 -0
  132. package/dist/cjs/notifications/repository.js.map +1 -0
  133. package/dist/cjs/onboarding/domain.js +370 -0
  134. package/dist/cjs/onboarding/domain.js.map +1 -0
  135. package/dist/cjs/onboarding/interaction-review.js +425 -0
  136. package/dist/cjs/onboarding/interaction-review.js.map +1 -0
  137. package/dist/cjs/onboarding/persistence.js +444 -0
  138. package/dist/cjs/onboarding/persistence.js.map +1 -0
  139. package/dist/cjs/onboarding/portal-actions.js +157 -0
  140. package/dist/cjs/onboarding/portal-actions.js.map +1 -0
  141. package/dist/cjs/onboarding/portal.js +177 -0
  142. package/dist/cjs/onboarding/portal.js.map +1 -0
  143. package/dist/cjs/package.json +3 -0
  144. package/dist/cjs/portal/repository.js +37 -0
  145. package/dist/cjs/portal/repository.js.map +1 -0
  146. package/dist/cjs/pricing-engine/bundle.js +49 -0
  147. package/dist/cjs/pricing-engine/bundle.js.map +1 -0
  148. package/dist/cjs/pricing-engine/errors.js +48 -0
  149. package/dist/cjs/pricing-engine/errors.js.map +1 -0
  150. package/dist/cjs/pricing-engine/index.js +30 -0
  151. package/dist/cjs/pricing-engine/index.js.map +1 -0
  152. package/dist/cjs/pricing-engine/money.js +69 -0
  153. package/dist/cjs/pricing-engine/money.js.map +1 -0
  154. package/dist/cjs/pricing-engine/pipeline.js +330 -0
  155. package/dist/cjs/pricing-engine/pipeline.js.map +1 -0
  156. package/dist/cjs/pricing-engine/proration.js +53 -0
  157. package/dist/cjs/pricing-engine/proration.js.map +1 -0
  158. package/dist/cjs/pricing-engine/shadow.js +58 -0
  159. package/dist/cjs/pricing-engine/shadow.js.map +1 -0
  160. package/dist/cjs/pricing-engine/types.js +34 -0
  161. package/dist/cjs/pricing-engine/types.js.map +1 -0
  162. package/dist/cjs/products/catalog.js +10 -0
  163. package/dist/cjs/products/catalog.js.map +1 -0
  164. package/dist/cjs/products/repository.js +61 -0
  165. package/dist/cjs/products/repository.js.map +1 -0
  166. package/dist/cjs/rbac/authorize.js +36 -0
  167. package/dist/cjs/rbac/authorize.js.map +1 -0
  168. package/dist/cjs/rbac/catalog.js +455 -0
  169. package/dist/cjs/rbac/catalog.js.map +1 -0
  170. package/dist/cjs/requests/repository.js +114 -0
  171. package/dist/cjs/requests/repository.js.map +1 -0
  172. package/dist/cjs/subscription-billing/dunning.js +26 -0
  173. package/dist/cjs/subscription-billing/dunning.js.map +1 -0
  174. package/dist/cjs/subscription-billing/events.js +45 -0
  175. package/dist/cjs/subscription-billing/events.js.map +1 -0
  176. package/dist/cjs/subscription-billing/index.js +62 -0
  177. package/dist/cjs/subscription-billing/index.js.map +1 -0
  178. package/dist/cjs/subscription-billing/plans.js +88 -0
  179. package/dist/cjs/subscription-billing/plans.js.map +1 -0
  180. package/dist/cjs/subscription-billing/product-config.js +54 -0
  181. package/dist/cjs/subscription-billing/product-config.js.map +1 -0
  182. package/dist/cjs/subscription-billing/provider/asaas.js +233 -0
  183. package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -0
  184. package/dist/cjs/subscription-billing/provider/disabled.js +46 -0
  185. package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -0
  186. package/dist/cjs/subscription-billing/provider/registry.js +29 -0
  187. package/dist/cjs/subscription-billing/provider/registry.js.map +1 -0
  188. package/dist/cjs/subscription-billing/reconcile.js +198 -0
  189. package/dist/cjs/subscription-billing/reconcile.js.map +1 -0
  190. package/dist/cjs/subscription-billing/repository.js +359 -0
  191. package/dist/cjs/subscription-billing/repository.js.map +1 -0
  192. package/dist/cjs/subscription-billing/service.js +838 -0
  193. package/dist/cjs/subscription-billing/service.js.map +1 -0
  194. package/dist/cjs/subscription-billing/types.js +28 -0
  195. package/dist/cjs/subscription-billing/types.js.map +1 -0
  196. package/dist/cjs/tenancy/provisioning.js +126 -0
  197. package/dist/cjs/tenancy/provisioning.js.map +1 -0
  198. package/dist/cjs/users/repository.js +83 -0
  199. package/dist/cjs/users/repository.js.map +1 -0
  200. package/dist/cjs/vault/crypto.js +94 -0
  201. package/dist/cjs/vault/crypto.js.map +1 -0
  202. package/dist/cjs/vault/repository.js +120 -0
  203. package/dist/cjs/vault/repository.js.map +1 -0
  204. package/dist/commercial-catalog/catalog.d.ts +27 -0
  205. package/dist/commercial-catalog/catalog.d.ts.map +1 -0
  206. package/dist/commercial-catalog/catalog.js +104 -0
  207. package/dist/commercial-catalog/catalog.js.map +1 -0
  208. package/dist/commercial-catalog/consumption-contracts.d.ts +33 -0
  209. package/dist/commercial-catalog/consumption-contracts.d.ts.map +1 -0
  210. package/dist/commercial-catalog/consumption-contracts.js +9 -0
  211. package/dist/commercial-catalog/consumption-contracts.js.map +1 -0
  212. package/dist/commercial-catalog/coupon.d.ts +43 -0
  213. package/dist/commercial-catalog/coupon.d.ts.map +1 -0
  214. package/dist/commercial-catalog/coupon.js +57 -0
  215. package/dist/commercial-catalog/coupon.js.map +1 -0
  216. package/dist/commercial-catalog/index.d.ts +10 -0
  217. package/dist/commercial-catalog/index.d.ts.map +1 -0
  218. package/dist/commercial-catalog/index.js +5 -0
  219. package/dist/commercial-catalog/index.js.map +1 -0
  220. package/dist/commercial-catalog/offer-application.d.ts +39 -0
  221. package/dist/commercial-catalog/offer-application.d.ts.map +1 -0
  222. package/dist/commercial-catalog/offer-application.js +50 -0
  223. package/dist/commercial-catalog/offer-application.js.map +1 -0
  224. package/dist/commercial-catalog/types.d.ts +175 -0
  225. package/dist/commercial-catalog/types.d.ts.map +1 -0
  226. package/dist/commercial-catalog/types.js +23 -0
  227. package/dist/commercial-catalog/types.js.map +1 -0
  228. package/dist/crm/repository.d.ts +109 -0
  229. package/dist/crm/repository.d.ts.map +1 -0
  230. package/dist/crm/repository.js +181 -0
  231. package/dist/crm/repository.js.map +1 -0
  232. package/dist/db/context.d.ts +2 -0
  233. package/dist/db/context.d.ts.map +1 -1
  234. package/dist/db/context.js +3 -0
  235. package/dist/db/context.js.map +1 -1
  236. package/dist/db/migrate.js +7 -2
  237. package/dist/db/migrate.js.map +1 -1
  238. package/dist/db/seed.js +4 -1
  239. package/dist/db/seed.js.map +1 -1
  240. package/dist/entitlements/decision.d.ts +86 -0
  241. package/dist/entitlements/decision.d.ts.map +1 -0
  242. package/dist/entitlements/decision.js +196 -0
  243. package/dist/entitlements/decision.js.map +1 -0
  244. package/dist/entitlements/derive.d.ts +30 -0
  245. package/dist/entitlements/derive.d.ts.map +1 -0
  246. package/dist/entitlements/derive.js +42 -0
  247. package/dist/entitlements/derive.js.map +1 -0
  248. package/dist/entitlements/index.d.ts +10 -0
  249. package/dist/entitlements/index.d.ts.map +1 -0
  250. package/dist/entitlements/index.js +7 -0
  251. package/dist/entitlements/index.js.map +1 -0
  252. package/dist/entitlements/sources.d.ts +30 -0
  253. package/dist/entitlements/sources.d.ts.map +1 -0
  254. package/dist/entitlements/sources.js +55 -0
  255. package/dist/entitlements/sources.js.map +1 -0
  256. package/dist/entitlements/standing.d.ts +22 -0
  257. package/dist/entitlements/standing.d.ts.map +1 -0
  258. package/dist/entitlements/standing.js +38 -0
  259. package/dist/entitlements/standing.js.map +1 -0
  260. package/dist/entitlements/types.d.ts +26 -0
  261. package/dist/entitlements/types.d.ts.map +1 -0
  262. package/dist/entitlements/types.js +15 -0
  263. package/dist/entitlements/types.js.map +1 -0
  264. package/dist/index.d.ts +74 -3
  265. package/dist/index.d.ts.map +1 -1
  266. package/dist/index.js +51 -4
  267. package/dist/index.js.map +1 -1
  268. package/dist/mail/dedup-store.d.ts +25 -0
  269. package/dist/mail/dedup-store.d.ts.map +1 -0
  270. package/dist/mail/dedup-store.js +51 -0
  271. package/dist/mail/dedup-store.js.map +1 -0
  272. package/dist/mail/index.d.ts +10 -0
  273. package/dist/mail/index.d.ts.map +1 -0
  274. package/dist/mail/index.js +9 -0
  275. package/dist/mail/index.js.map +1 -0
  276. package/dist/mail/provider.d.ts +31 -0
  277. package/dist/mail/provider.d.ts.map +1 -0
  278. package/dist/mail/provider.js +248 -0
  279. package/dist/mail/provider.js.map +1 -0
  280. package/dist/mail/resend-client.d.ts +16 -0
  281. package/dist/mail/resend-client.d.ts.map +1 -0
  282. package/dist/mail/resend-client.js +100 -0
  283. package/dist/mail/resend-client.js.map +1 -0
  284. package/dist/mail/resend.d.ts.map +1 -1
  285. package/dist/mail/resend.js +2 -0
  286. package/dist/mail/resend.js.map +1 -1
  287. package/dist/mail/sanitize.d.ts +17 -0
  288. package/dist/mail/sanitize.d.ts.map +1 -0
  289. package/dist/mail/sanitize.js +51 -0
  290. package/dist/mail/sanitize.js.map +1 -0
  291. package/dist/mail/sender-resolver.d.ts +8 -0
  292. package/dist/mail/sender-resolver.d.ts.map +1 -0
  293. package/dist/mail/sender-resolver.js +11 -0
  294. package/dist/mail/sender-resolver.js.map +1 -0
  295. package/dist/mail/template-renderer.d.ts +10 -0
  296. package/dist/mail/template-renderer.d.ts.map +1 -0
  297. package/dist/mail/template-renderer.js +17 -0
  298. package/dist/mail/template-renderer.js.map +1 -0
  299. package/dist/mail/types.d.ts +143 -0
  300. package/dist/mail/types.d.ts.map +1 -0
  301. package/dist/mail/types.js +34 -0
  302. package/dist/mail/types.js.map +1 -0
  303. package/dist/onboarding/domain.d.ts +146 -0
  304. package/dist/onboarding/domain.d.ts.map +1 -0
  305. package/dist/onboarding/domain.js +348 -0
  306. package/dist/onboarding/domain.js.map +1 -0
  307. package/dist/onboarding/interaction-review.d.ts +123 -0
  308. package/dist/onboarding/interaction-review.d.ts.map +1 -0
  309. package/dist/onboarding/interaction-review.js +413 -0
  310. package/dist/onboarding/interaction-review.js.map +1 -0
  311. package/dist/onboarding/persistence.d.ts +106 -0
  312. package/dist/onboarding/persistence.d.ts.map +1 -0
  313. package/dist/onboarding/persistence.js +430 -0
  314. package/dist/onboarding/persistence.js.map +1 -0
  315. package/dist/onboarding/portal-actions.d.ts +48 -0
  316. package/dist/onboarding/portal-actions.d.ts.map +1 -0
  317. package/dist/onboarding/portal-actions.js +153 -0
  318. package/dist/onboarding/portal-actions.js.map +1 -0
  319. package/dist/onboarding/portal.d.ts +58 -0
  320. package/dist/onboarding/portal.d.ts.map +1 -0
  321. package/dist/onboarding/portal.js +170 -0
  322. package/dist/onboarding/portal.js.map +1 -0
  323. package/dist/pricing-engine/bundle.d.ts +22 -0
  324. package/dist/pricing-engine/bundle.d.ts.map +1 -0
  325. package/dist/pricing-engine/bundle.js +44 -0
  326. package/dist/pricing-engine/bundle.js.map +1 -0
  327. package/dist/pricing-engine/errors.d.ts +32 -0
  328. package/dist/pricing-engine/errors.d.ts.map +1 -0
  329. package/dist/pricing-engine/errors.js +44 -0
  330. package/dist/pricing-engine/errors.js.map +1 -0
  331. package/dist/pricing-engine/index.d.ts +12 -0
  332. package/dist/pricing-engine/index.d.ts.map +1 -0
  333. package/dist/pricing-engine/index.js +8 -0
  334. package/dist/pricing-engine/index.js.map +1 -0
  335. package/dist/pricing-engine/money.d.ts +32 -0
  336. package/dist/pricing-engine/money.d.ts.map +1 -0
  337. package/dist/pricing-engine/money.js +58 -0
  338. package/dist/pricing-engine/money.js.map +1 -0
  339. package/dist/pricing-engine/pipeline.d.ts +3 -0
  340. package/dist/pricing-engine/pipeline.d.ts.map +1 -0
  341. package/dist/pricing-engine/pipeline.js +327 -0
  342. package/dist/pricing-engine/pipeline.js.map +1 -0
  343. package/dist/pricing-engine/proration.d.ts +3 -0
  344. package/dist/pricing-engine/proration.d.ts.map +1 -0
  345. package/dist/pricing-engine/proration.js +50 -0
  346. package/dist/pricing-engine/proration.js.map +1 -0
  347. package/dist/pricing-engine/shadow.d.ts +51 -0
  348. package/dist/pricing-engine/shadow.d.ts.map +1 -0
  349. package/dist/pricing-engine/shadow.js +54 -0
  350. package/dist/pricing-engine/shadow.js.map +1 -0
  351. package/dist/pricing-engine/types.d.ts +184 -0
  352. package/dist/pricing-engine/types.d.ts.map +1 -0
  353. package/dist/pricing-engine/types.js +31 -0
  354. package/dist/pricing-engine/types.js.map +1 -0
  355. package/dist/rbac/authorize.d.ts +3 -6
  356. package/dist/rbac/authorize.d.ts.map +1 -1
  357. package/dist/rbac/authorize.js +4 -8
  358. package/dist/rbac/authorize.js.map +1 -1
  359. package/dist/rbac/catalog.d.ts.map +1 -1
  360. package/dist/rbac/catalog.js +414 -21
  361. package/dist/rbac/catalog.js.map +1 -1
  362. package/dist/subscription-billing/dunning.d.ts +18 -0
  363. package/dist/subscription-billing/dunning.d.ts.map +1 -0
  364. package/dist/subscription-billing/dunning.js +28 -0
  365. package/dist/subscription-billing/dunning.js.map +1 -0
  366. package/dist/subscription-billing/events.d.ts +58 -0
  367. package/dist/subscription-billing/events.d.ts.map +1 -0
  368. package/dist/subscription-billing/events.js +38 -0
  369. package/dist/subscription-billing/events.js.map +1 -0
  370. package/dist/subscription-billing/index.d.ts +18 -0
  371. package/dist/subscription-billing/index.d.ts.map +1 -0
  372. package/dist/subscription-billing/index.js +16 -0
  373. package/dist/subscription-billing/index.js.map +1 -0
  374. package/dist/subscription-billing/plans.d.ts +34 -0
  375. package/dist/subscription-billing/plans.d.ts.map +1 -0
  376. package/dist/subscription-billing/plans.js +85 -0
  377. package/dist/subscription-billing/plans.js.map +1 -0
  378. package/dist/subscription-billing/product-config.d.ts +61 -0
  379. package/dist/subscription-billing/product-config.d.ts.map +1 -0
  380. package/dist/subscription-billing/product-config.js +50 -0
  381. package/dist/subscription-billing/product-config.js.map +1 -0
  382. package/dist/subscription-billing/provider/asaas.d.ts +26 -0
  383. package/dist/subscription-billing/provider/asaas.d.ts.map +1 -0
  384. package/dist/subscription-billing/provider/asaas.js +229 -0
  385. package/dist/subscription-billing/provider/asaas.js.map +1 -0
  386. package/dist/subscription-billing/provider/disabled.d.ts +30 -0
  387. package/dist/subscription-billing/provider/disabled.d.ts.map +1 -0
  388. package/dist/subscription-billing/provider/disabled.js +42 -0
  389. package/dist/subscription-billing/provider/disabled.js.map +1 -0
  390. package/dist/subscription-billing/provider/registry.d.ts +10 -0
  391. package/dist/subscription-billing/provider/registry.d.ts.map +1 -0
  392. package/dist/subscription-billing/provider/registry.js +26 -0
  393. package/dist/subscription-billing/provider/registry.js.map +1 -0
  394. package/dist/subscription-billing/reconcile.d.ts +45 -0
  395. package/dist/subscription-billing/reconcile.d.ts.map +1 -0
  396. package/dist/subscription-billing/reconcile.js +192 -0
  397. package/dist/subscription-billing/reconcile.js.map +1 -0
  398. package/dist/subscription-billing/repository.d.ts +168 -0
  399. package/dist/subscription-billing/repository.d.ts.map +1 -0
  400. package/dist/subscription-billing/repository.js +336 -0
  401. package/dist/subscription-billing/repository.js.map +1 -0
  402. package/dist/subscription-billing/service.d.ts +175 -0
  403. package/dist/subscription-billing/service.d.ts.map +1 -0
  404. package/dist/subscription-billing/service.js +818 -0
  405. package/dist/subscription-billing/service.js.map +1 -0
  406. package/dist/subscription-billing/types.d.ts +161 -0
  407. package/dist/subscription-billing/types.d.ts.map +1 -0
  408. package/dist/subscription-billing/types.js +24 -0
  409. package/dist/subscription-billing/types.js.map +1 -0
  410. package/dist/vault/crypto.d.ts +22 -0
  411. package/dist/vault/crypto.d.ts.map +1 -0
  412. package/dist/vault/crypto.js +88 -0
  413. package/dist/vault/crypto.js.map +1 -0
  414. package/dist/vault/repository.d.ts +45 -0
  415. package/dist/vault/repository.d.ts.map +1 -0
  416. package/dist/vault/repository.js +111 -0
  417. package/dist/vault/repository.js.map +1 -0
  418. package/package.json +23 -13
  419. package/src/db/migrations/0012_vault.sql +51 -0
  420. package/src/db/migrations/0013_crm.sql +67 -0
  421. package/src/db/migrations/0014_billing.sql +146 -0
  422. package/src/db/migrations/0015_merchant_billing_ar.sql +201 -0
  423. package/src/db/migrations/0016_office_onboarding.sql +162 -0
  424. package/src/db/migrations/0017_office_onboarding_api.sql +21 -0
  425. package/src/db/migrations/0018_office_onboarding_portal_actions.sql +60 -0
  426. package/src/db/migrations/0019_office_onboarding_interaction_review.sql +134 -0
  427. package/src/db/migrations/0020_saas_billing.sql +157 -0
  428. package/src/db/migrations/0021_saas_billing_indexes.sql +23 -0
  429. package/src/db/migrations/0022_saas_billing_multi_product.sql +75 -0
@@ -0,0 +1,444 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnboardingConcurrencyError = exports.OnboardingFeatureDisabledError = exports.onboardingEnabledForTests = exports.onboardingDisabledByDefault = void 0;
4
+ exports.reserveOnboardingApiIdempotency = reserveOnboardingApiIdempotency;
5
+ exports.completeOnboardingApiIdempotency = completeOnboardingApiIdempotency;
6
+ exports.releaseOnboardingApiIdempotency = releaseOnboardingApiIdempotency;
7
+ exports.getOnboarding = getOnboarding;
8
+ exports.listOnboardings = listOnboardings;
9
+ exports.listOnboardingTimeline = listOnboardingTimeline;
10
+ exports.createOnboardingRecord = createOnboardingRecord;
11
+ exports.saveOnboarding = saveOnboarding;
12
+ exports.createOnboardingApplication = createOnboardingApplication;
13
+ const shared_1 = require("@baruk/shared");
14
+ const audit_js_1 = require("../audit/audit.js");
15
+ const context_js_1 = require("../db/context.js");
16
+ const domain_js_1 = require("./domain.js");
17
+ /** Política fail-closed até a capability ser ativada por configuração canônica. */
18
+ exports.onboardingDisabledByDefault = {
19
+ isEnabled: () => false,
20
+ };
21
+ exports.onboardingEnabledForTests = {
22
+ isEnabled: () => true,
23
+ };
24
+ class OnboardingFeatureDisabledError extends shared_1.AppError {
25
+ constructor() {
26
+ super('A capability office_onboarding está desativada', {
27
+ status: 404,
28
+ code: 'ONBOARDING_FEATURE_DISABLED',
29
+ });
30
+ this.name = 'OnboardingFeatureDisabledError';
31
+ }
32
+ }
33
+ exports.OnboardingFeatureDisabledError = OnboardingFeatureDisabledError;
34
+ class OnboardingConcurrencyError extends shared_1.AppError {
35
+ constructor() {
36
+ super('O onboarding foi alterado por outra operação', {
37
+ status: 409,
38
+ code: 'ONBOARDING_VERSION_CONFLICT',
39
+ });
40
+ this.name = 'OnboardingConcurrencyError';
41
+ }
42
+ }
43
+ exports.OnboardingConcurrencyError = OnboardingConcurrencyError;
44
+ async function reserveOnboardingApiIdempotency(db, input) {
45
+ return (0, context_js_1.withContext)(db, { tenantId: input.tenantId }, async (tx) => {
46
+ await tx `
47
+ INSERT INTO onboarding_api_idempotency
48
+ (tenant_id, operation, idempotency_key, request_fingerprint)
49
+ VALUES (${input.tenantId}, ${input.operation}, ${input.key}, ${input.fingerprint})
50
+ ON CONFLICT (tenant_id, operation, idempotency_key) DO NOTHING
51
+ `;
52
+ const rows = await tx `
53
+ SELECT request_fingerprint, response, completed_at
54
+ FROM onboarding_api_idempotency
55
+ WHERE tenant_id = ${input.tenantId}
56
+ AND operation = ${input.operation}
57
+ AND idempotency_key = ${input.key}
58
+ `;
59
+ const row = rows[0];
60
+ if (!row)
61
+ return { kind: 'in_progress' };
62
+ if (String(row.request_fingerprint) !== input.fingerprint)
63
+ return { kind: 'conflict' };
64
+ if (row.response !== null && row.response !== undefined)
65
+ return { kind: 'replay', response: row.response };
66
+ return { kind: 'new' };
67
+ });
68
+ }
69
+ async function completeOnboardingApiIdempotency(db, input) {
70
+ await (0, context_js_1.withContext)(db, { tenantId: input.tenantId }, (tx) => tx `
71
+ UPDATE onboarding_api_idempotency
72
+ SET response = ${tx.json(input.response)}, completed_at = now()
73
+ WHERE tenant_id = ${input.tenantId}
74
+ AND operation = ${input.operation}
75
+ AND idempotency_key = ${input.key}
76
+ `.then(() => undefined));
77
+ }
78
+ async function releaseOnboardingApiIdempotency(db, input) {
79
+ await (0, context_js_1.withContext)(db, { tenantId: input.tenantId }, (tx) => tx `
80
+ DELETE FROM onboarding_api_idempotency
81
+ WHERE tenant_id = ${input.tenantId}
82
+ AND operation = ${input.operation}
83
+ AND idempotency_key = ${input.key}
84
+ AND response IS NULL
85
+ `.then(() => undefined));
86
+ }
87
+ function mapOnboarding(row) {
88
+ return {
89
+ id: String(row.id),
90
+ tenantId: String(row.tenant_id),
91
+ clientId: String(row.client_id),
92
+ status: row.status,
93
+ ownerId: row.owner_id ? String(row.owner_id) : null,
94
+ startedAt: row.started_at ? new Date(String(row.started_at)).toISOString() : null,
95
+ dueAt: row.due_at ? new Date(String(row.due_at)).toISOString() : null,
96
+ blockedAt: row.blocked_at ? new Date(String(row.blocked_at)).toISOString() : null,
97
+ completedAt: row.completed_at ? new Date(String(row.completed_at)).toISOString() : null,
98
+ cancelledAt: row.cancelled_at ? new Date(String(row.cancelled_at)).toISOString() : null,
99
+ blockedReason: row.blocked_reason ? String(row.blocked_reason) : null,
100
+ cancellationReason: row.cancellation_reason ? String(row.cancellation_reason) : null,
101
+ version: Number(row.version),
102
+ items: [],
103
+ tasks: [],
104
+ documentRequirements: [],
105
+ };
106
+ }
107
+ function mapItem(row) {
108
+ return {
109
+ id: String(row.id),
110
+ onboardingId: String(row.onboarding_id),
111
+ title: String(row.title),
112
+ description: row.description ? String(row.description) : null,
113
+ status: row.status,
114
+ required: Boolean(row.required),
115
+ assignedTo: row.assigned_to ? String(row.assigned_to) : null,
116
+ dueAt: row.due_at ? new Date(String(row.due_at)).toISOString() : null,
117
+ completedAt: row.completed_at ? new Date(String(row.completed_at)).toISOString() : null,
118
+ rejectionReason: row.rejection_reason ? String(row.rejection_reason) : null,
119
+ order: Number(row.item_order),
120
+ visibility: row.visibility,
121
+ version: Number(row.version),
122
+ };
123
+ }
124
+ function mapTask(row) {
125
+ return {
126
+ id: String(row.id),
127
+ onboardingId: String(row.onboarding_id),
128
+ clientId: String(row.client_id),
129
+ title: String(row.title),
130
+ description: row.description ? String(row.description) : null,
131
+ status: row.status,
132
+ priority: row.priority,
133
+ assignedTo: row.assigned_to ? String(row.assigned_to) : null,
134
+ dueAt: row.due_at ? new Date(String(row.due_at)).toISOString() : null,
135
+ completedAt: row.completed_at ? new Date(String(row.completed_at)).toISOString() : null,
136
+ version: Number(row.version),
137
+ };
138
+ }
139
+ function mapDocument(row) {
140
+ return {
141
+ id: String(row.id),
142
+ onboardingId: String(row.onboarding_id),
143
+ type: String(row.type),
144
+ label: String(row.label),
145
+ status: row.status,
146
+ requestedAt: new Date(String(row.requested_at)).toISOString(),
147
+ receivedAt: row.received_at ? new Date(String(row.received_at)).toISOString() : null,
148
+ validatedAt: row.validated_at ? new Date(String(row.validated_at)).toISOString() : null,
149
+ rejectedAt: row.rejected_at ? new Date(String(row.rejected_at)).toISOString() : null,
150
+ rejectionReason: row.rejection_reason ? String(row.rejection_reason) : null,
151
+ expiresAt: row.expires_at ? new Date(String(row.expires_at)).toISOString() : null,
152
+ canonicalDocumentId: row.canonical_document_id ? String(row.canonical_document_id) : null,
153
+ };
154
+ }
155
+ async function getOnboarding(tx, id) {
156
+ const rows = await tx `
157
+ SELECT * FROM onboarding_instance WHERE id = ${id}
158
+ `;
159
+ if (!rows[0])
160
+ return null;
161
+ const onboarding = mapOnboarding(rows[0]);
162
+ onboarding.items.push(...(await tx `
163
+ SELECT * FROM onboarding_item
164
+ WHERE onboarding_id = ${id}
165
+ AND (NULLIF(current_setting('app.current_client', true), '') IS NULL OR visibility = 'portal')
166
+ ORDER BY item_order, created_at
167
+ `).map(mapItem));
168
+ onboarding.tasks.push(...(await tx `
169
+ SELECT * FROM onboarding_task WHERE onboarding_id = ${id} ORDER BY created_at
170
+ `).map(mapTask));
171
+ onboarding.documentRequirements.push(...(await tx `
172
+ SELECT * FROM onboarding_document_requirement WHERE onboarding_id = ${id} ORDER BY requested_at
173
+ `).map(mapDocument));
174
+ return onboarding;
175
+ }
176
+ async function listOnboardings(tx, filter = {}) {
177
+ const rows = await tx `
178
+ SELECT * FROM onboarding_instance
179
+ WHERE (${filter.status ?? null}::text IS NULL OR status = ${filter.status ?? null})
180
+ AND (${filter.clientId ?? null}::uuid IS NULL OR client_id = ${filter.clientId ?? null})
181
+ AND (${filter.ownerId ?? null}::uuid IS NULL OR owner_id = ${filter.ownerId ?? null})
182
+ AND (${filter.dueBefore ?? null}::timestamptz IS NULL OR due_at <= ${filter.dueBefore ?? null})
183
+ AND (${filter.dueAfter ?? null}::timestamptz IS NULL OR due_at >= ${filter.dueAfter ?? null})
184
+ AND (${filter.overdue ?? null}::boolean IS NULL OR ${filter.overdue ?? false} = false OR (
185
+ due_at < now() AND status NOT IN ('completed', 'cancelled')
186
+ ))
187
+ ORDER BY created_at DESC
188
+ LIMIT ${Math.min(filter.limit ?? 50, 100)} OFFSET ${Math.max(filter.offset ?? 0, 0)}
189
+ `;
190
+ const result = [];
191
+ for (const row of rows) {
192
+ const item = await getOnboarding(tx, String(row.id));
193
+ if (item)
194
+ result.push(item);
195
+ }
196
+ return result;
197
+ }
198
+ async function listOnboardingTimeline(tx, onboardingId, limit = 50, offset = 0) {
199
+ const rows = await tx `
200
+ SELECT event_id, event_type, event_version, occurred_at, actor_id, correlation_id,
201
+ entity_type, entity_id, payload, metadata, count(*) OVER() AS total
202
+ FROM onboarding_event
203
+ WHERE onboarding_id = ${onboardingId}
204
+ ORDER BY occurred_at ASC, event_id ASC
205
+ LIMIT ${Math.min(limit, 100)} OFFSET ${Math.max(offset, 0)}
206
+ `;
207
+ return {
208
+ items: rows.map((row) => ({
209
+ eventId: String(row.event_id),
210
+ eventType: String(row.event_type),
211
+ eventVersion: Number(row.event_version),
212
+ occurredAt: new Date(String(row.occurred_at)).toISOString(),
213
+ actorId: row.actor_id ? String(row.actor_id) : null,
214
+ correlationId: String(row.correlation_id),
215
+ entityType: String(row.entity_type),
216
+ entityId: String(row.entity_id),
217
+ payload: (row.payload ?? {}),
218
+ metadata: (row.metadata ?? {}),
219
+ })),
220
+ total: rows[0] ? Number(rows[0].total) : 0,
221
+ };
222
+ }
223
+ async function insertEvents(tx, events, clientId) {
224
+ for (const item of events) {
225
+ const onboardingId = item.entityType === 'onboarding' ? item.entityId : String(item.payload.onboardingId);
226
+ await tx `
227
+ INSERT INTO onboarding_event
228
+ (event_id, tenant_id, onboarding_id, client_id, actor_id, event_type, event_version,
229
+ occurred_at, correlation_id, causation_id, entity_type, entity_id, payload, metadata)
230
+ VALUES
231
+ (${item.eventId}, ${item.tenantId}, ${onboardingId},
232
+ ${clientId}, ${item.actorId}, ${item.eventType}, ${item.eventVersion}, ${item.occurredAt},
233
+ ${item.correlationId}, ${item.causationId}, ${item.entityType}, ${item.entityId},
234
+ ${tx.json(item.payload)}, ${tx.json(item.metadata)})
235
+ ON CONFLICT (event_id) DO NOTHING
236
+ `;
237
+ }
238
+ }
239
+ async function replaceChildren(tx, onboarding) {
240
+ await tx `DELETE FROM onboarding_item WHERE tenant_id = ${onboarding.tenantId} AND onboarding_id = ${onboarding.id}`;
241
+ await tx `DELETE FROM onboarding_task WHERE tenant_id = ${onboarding.tenantId} AND onboarding_id = ${onboarding.id}`;
242
+ await tx `DELETE FROM onboarding_document_requirement WHERE tenant_id = ${onboarding.tenantId} AND onboarding_id = ${onboarding.id}`;
243
+ for (const item of onboarding.items) {
244
+ await tx `
245
+ INSERT INTO onboarding_item
246
+ (id, tenant_id, onboarding_id, client_id, title, description, status, required, assigned_to,
247
+ due_at, completed_at, rejection_reason, item_order, visibility, version)
248
+ VALUES (${item.id}, ${onboarding.tenantId}, ${onboarding.id}, ${onboarding.clientId}, ${item.title},
249
+ ${item.description}, ${item.status}, ${item.required}, ${item.assignedTo}, ${item.dueAt},
250
+ ${item.completedAt}, ${item.rejectionReason}, ${item.order}, ${item.visibility}, ${item.version})
251
+ `;
252
+ }
253
+ for (const task of onboarding.tasks) {
254
+ await tx `
255
+ INSERT INTO onboarding_task
256
+ (id, tenant_id, onboarding_id, client_id, title, description, status, priority, assigned_to,
257
+ due_at, completed_at, version)
258
+ VALUES (${task.id}, ${onboarding.tenantId}, ${onboarding.id}, ${onboarding.clientId}, ${task.title},
259
+ ${task.description}, ${task.status}, ${task.priority}, ${task.assignedTo}, ${task.dueAt},
260
+ ${task.completedAt}, ${task.version})
261
+ `;
262
+ }
263
+ for (const document of onboarding.documentRequirements) {
264
+ await tx `
265
+ INSERT INTO onboarding_document_requirement
266
+ (id, tenant_id, onboarding_id, client_id, type, label, status, requested_at, received_at,
267
+ validated_at, rejected_at, rejection_reason, expires_at, canonical_document_id)
268
+ VALUES (${document.id}, ${onboarding.tenantId}, ${onboarding.id}, ${onboarding.clientId}, ${document.type},
269
+ ${document.label}, ${document.status}, ${document.requestedAt}, ${document.receivedAt},
270
+ ${document.validatedAt}, ${document.rejectedAt}, ${document.rejectionReason}, ${document.expiresAt},
271
+ ${document.canonicalDocumentId})
272
+ `;
273
+ }
274
+ }
275
+ async function createOnboardingRecord(tx, onboarding) {
276
+ await tx `
277
+ INSERT INTO onboarding_instance
278
+ (id, tenant_id, client_id, status, owner_id, due_at, version)
279
+ VALUES (${onboarding.id}, ${onboarding.tenantId}, ${onboarding.clientId}, ${onboarding.status},
280
+ ${onboarding.ownerId}, ${onboarding.dueAt}, ${onboarding.version})
281
+ `;
282
+ }
283
+ async function saveOnboarding(tx, onboarding, expectedVersion) {
284
+ const rows = await tx `
285
+ UPDATE onboarding_instance SET
286
+ status = ${onboarding.status}, owner_id = ${onboarding.ownerId}, started_at = ${onboarding.startedAt},
287
+ due_at = ${onboarding.dueAt}, blocked_at = ${onboarding.blockedAt}, completed_at = ${onboarding.completedAt},
288
+ cancelled_at = ${onboarding.cancelledAt}, blocked_reason = ${onboarding.blockedReason},
289
+ cancellation_reason = ${onboarding.cancellationReason}, version = ${onboarding.version}, updated_at = now()
290
+ WHERE tenant_id = ${onboarding.tenantId} AND id = ${onboarding.id} AND version = ${expectedVersion}
291
+ RETURNING id
292
+ `;
293
+ if (!rows[0])
294
+ throw new OnboardingConcurrencyError();
295
+ await replaceChildren(tx, onboarding);
296
+ }
297
+ async function commitChange(tx, onboarding, events, action, actorId, expectedVersion) {
298
+ await saveOnboarding(tx, onboarding, expectedVersion);
299
+ await insertEvents(tx, events, onboarding.clientId);
300
+ await (0, audit_js_1.appendAudit)(tx, {
301
+ actorId,
302
+ action,
303
+ resourceType: 'onboarding',
304
+ resourceId: onboarding.id,
305
+ metadata: { version: onboarding.version, eventCount: events.length },
306
+ });
307
+ return onboarding;
308
+ }
309
+ function createOnboardingApplication(db, policy = exports.onboardingDisabledByDefault, idFactory = { next: shared_1.uuidv7 }) {
310
+ async function run(tenantId, context, operation, clientId) {
311
+ if (!policy.isEnabled(tenantId))
312
+ throw new OnboardingFeatureDisabledError();
313
+ return (0, context_js_1.withContext)(db, { tenantId, userId: context.actorId, clientId }, operation);
314
+ }
315
+ async function load(tx, id) {
316
+ const onboarding = await getOnboarding(tx, id);
317
+ if (!onboarding)
318
+ throw new Error('Onboarding não encontrado');
319
+ return onboarding;
320
+ }
321
+ const mutate = (fn, action) => (tenantId, id, context) => run(tenantId, context, async (tx) => {
322
+ const onboarding = await load(tx, id);
323
+ const expected = context.expectedVersion ?? onboarding.version;
324
+ const change = fn(onboarding, context);
325
+ return commitChange(tx, onboarding, change.events, action, context.actorId, expected);
326
+ });
327
+ return {
328
+ async create(input, context) {
329
+ return run(input.tenantId, context, async (tx) => {
330
+ const change = (0, domain_js_1.createOnboarding)(input, context, idFactory);
331
+ await createOnboardingRecord(tx, change.value);
332
+ await insertEvents(tx, change.events, change.value.clientId);
333
+ await (0, audit_js_1.appendAudit)(tx, {
334
+ actorId: context.actorId,
335
+ action: 'onboarding.create',
336
+ resourceType: 'onboarding',
337
+ resourceId: change.value.id,
338
+ });
339
+ return change.value;
340
+ });
341
+ },
342
+ async get(tenantId, id, clientId) {
343
+ if (!policy.isEnabled(tenantId))
344
+ throw new OnboardingFeatureDisabledError();
345
+ return (0, context_js_1.withContext)(db, { tenantId, clientId }, (tx) => getOnboarding(tx, id));
346
+ },
347
+ async list(tenantId, filter) {
348
+ if (!policy.isEnabled(tenantId))
349
+ throw new OnboardingFeatureDisabledError();
350
+ return (0, context_js_1.withContext)(db, { tenantId, clientId: filter?.clientId }, (tx) => listOnboardings(tx, filter));
351
+ },
352
+ async timeline(tenantId, id, limit, offset, clientId) {
353
+ if (!policy.isEnabled(tenantId))
354
+ throw new OnboardingFeatureDisabledError();
355
+ return (0, context_js_1.withContext)(db, { tenantId, clientId }, async (tx) => {
356
+ if (!(await getOnboarding(tx, id)))
357
+ throw new Error('Onboarding não encontrado');
358
+ return listOnboardingTimeline(tx, id, limit, offset);
359
+ });
360
+ },
361
+ start: mutate((o, c) => (0, domain_js_1.startOnboarding)(o, c, idFactory), 'onboarding.start'),
362
+ block: (tenantId, id, reason, context) => run(tenantId, context, async (tx) => {
363
+ const o = await load(tx, id);
364
+ const v = context.expectedVersion ?? o.version;
365
+ const c = (0, domain_js_1.blockOnboarding)(o, reason, context, idFactory);
366
+ return commitChange(tx, o, c.events, 'onboarding.block', context.actorId, v);
367
+ }),
368
+ unblock: mutate((o, c) => (0, domain_js_1.unblockOnboarding)(o, c, idFactory), 'onboarding.unblock'),
369
+ complete: mutate((o, c) => (0, domain_js_1.completeOnboarding)(o, c, idFactory), 'onboarding.complete'),
370
+ cancel: (tenantId, id, reason, context) => run(tenantId, context, async (tx) => {
371
+ const o = await load(tx, id);
372
+ const v = context.expectedVersion ?? o.version;
373
+ const c = (0, domain_js_1.cancelOnboarding)(o, reason, context, idFactory);
374
+ return commitChange(tx, o, c.events, 'onboarding.cancel', context.actorId, v);
375
+ }),
376
+ addItem: (tenantId, id, input, context) => run(tenantId, context, async (tx) => {
377
+ const o = await load(tx, id);
378
+ const v = context.expectedVersion ?? o.version;
379
+ const c = (0, domain_js_1.addItem)(o, input, context, idFactory);
380
+ return commitChange(tx, o, c.events, 'onboarding.item.create', context.actorId, v);
381
+ }),
382
+ completeItem: (tenantId, id, itemId, context) => run(tenantId, context, async (tx) => {
383
+ const o = await load(tx, id);
384
+ const v = context.expectedVersion ?? o.version;
385
+ const c = (0, domain_js_1.completeItem)(o, itemId, context, idFactory);
386
+ return commitChange(tx, o, c.events, 'onboarding.item.complete', context.actorId, v);
387
+ }),
388
+ startItem: (tenantId, id, itemId, context) => run(tenantId, context, async (tx) => {
389
+ const o = await load(tx, id);
390
+ const v = context.expectedVersion ?? o.version;
391
+ const c = (0, domain_js_1.startItem)(o, itemId, context, idFactory);
392
+ return commitChange(tx, o, c.events, 'onboarding.item.start', context.actorId, v);
393
+ }),
394
+ rejectItem: (tenantId, id, itemId, reason, context) => run(tenantId, context, async (tx) => {
395
+ const o = await load(tx, id);
396
+ const v = context.expectedVersion ?? o.version;
397
+ const c = (0, domain_js_1.rejectItem)(o, itemId, reason, context, idFactory);
398
+ return commitChange(tx, o, c.events, 'onboarding.item.reject', context.actorId, v);
399
+ }),
400
+ markItemNotApplicable: (tenantId, id, itemId, context) => run(tenantId, context, async (tx) => {
401
+ const o = await load(tx, id);
402
+ const v = context.expectedVersion ?? o.version;
403
+ const c = (0, domain_js_1.markItemNotApplicable)(o, itemId, context, idFactory);
404
+ return commitChange(tx, o, c.events, 'onboarding.item.not_applicable', context.actorId, v);
405
+ }),
406
+ addTask: (tenantId, id, input, context) => run(tenantId, context, async (tx) => {
407
+ const o = await load(tx, id);
408
+ const v = context.expectedVersion ?? o.version;
409
+ const c = (0, domain_js_1.addTask)(o, input, context, idFactory);
410
+ return commitChange(tx, o, c.events, 'onboarding.task.create', context.actorId, v);
411
+ }),
412
+ completeTask: (tenantId, id, taskId, context) => run(tenantId, context, async (tx) => {
413
+ const o = await load(tx, id);
414
+ const v = context.expectedVersion ?? o.version;
415
+ const c = (0, domain_js_1.completeTask)(o, taskId, context, idFactory);
416
+ return commitChange(tx, o, c.events, 'onboarding.task.complete', context.actorId, v);
417
+ }),
418
+ requestDocument: (tenantId, id, input, context) => run(tenantId, context, async (tx) => {
419
+ const o = await load(tx, id);
420
+ const v = context.expectedVersion ?? o.version;
421
+ const c = (0, domain_js_1.requestDocument)(o, input, context, idFactory);
422
+ return commitChange(tx, o, c.events, 'onboarding.document.request', context.actorId, v);
423
+ }),
424
+ receiveDocument: (tenantId, id, requirementId, context) => run(tenantId, context, async (tx) => {
425
+ const o = await load(tx, id);
426
+ const v = context.expectedVersion ?? o.version;
427
+ const c = (0, domain_js_1.receiveDocument)(o, requirementId, context, idFactory);
428
+ return commitChange(tx, o, c.events, 'onboarding.document.received', context.actorId, v);
429
+ }),
430
+ validateDocument: (tenantId, id, requirementId, context) => run(tenantId, context, async (tx) => {
431
+ const o = await load(tx, id);
432
+ const v = context.expectedVersion ?? o.version;
433
+ const c = (0, domain_js_1.validateDocument)(o, requirementId, context, idFactory);
434
+ return commitChange(tx, o, c.events, 'onboarding.document.validate', context.actorId, v);
435
+ }),
436
+ rejectDocument: (tenantId, id, requirementId, reason, context) => run(tenantId, context, async (tx) => {
437
+ const o = await load(tx, id);
438
+ const v = context.expectedVersion ?? o.version;
439
+ const c = (0, domain_js_1.rejectDocument)(o, requirementId, reason, context, idFactory);
440
+ return commitChange(tx, o, c.events, 'onboarding.document.reject', context.actorId, v);
441
+ }),
442
+ };
443
+ }
444
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/onboarding/persistence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPortalInteraction = createPortalInteraction;
4
+ exports.listPortalInteractions = listPortalInteractions;
5
+ const shared_1 = require("@baruk/shared");
6
+ const audit_js_1 = require("../audit/audit.js");
7
+ const repository_js_1 = require("../notifications/repository.js");
8
+ function map(row) {
9
+ const status = row.status;
10
+ return {
11
+ id: String(row.id),
12
+ kind: row.kind,
13
+ status,
14
+ text: row.body ? String(row.body) : null,
15
+ channel: row.external_channel ? row.external_channel : null,
16
+ deliveredAt: row.external_delivered_at ? String(row.external_delivered_at) : null,
17
+ createdAt: new Date(String(row.created_at)).toISOString(),
18
+ updatedAt: new Date(String(row.updated_at)).toISOString(),
19
+ publicAuthorLabel: row.public_author_label ? String(row.public_author_label) : 'Você',
20
+ relatedItemId: row.item_id ? String(row.item_id) : null,
21
+ relatedRequirementId: row.document_requirement_id ? String(row.document_requirement_id) : null,
22
+ allowedActions: status === 'submitted' || status === 'needs_clarification' ? ['supplement'] : [],
23
+ };
24
+ }
25
+ function cleanText(value) {
26
+ return Array.from(value.replace(/<[^>]*>/g, ''))
27
+ .filter((character) => {
28
+ const code = character.charCodeAt(0);
29
+ return code > 31 && code !== 127;
30
+ })
31
+ .join('')
32
+ .trim();
33
+ }
34
+ async function target(tx, ctx, onboardingId, itemId, requirementId) {
35
+ const rows = await tx `
36
+ SELECT oi.owner_id
37
+ FROM onboarding_instance oi
38
+ WHERE oi.id = ${onboardingId}
39
+ AND oi.tenant_id = ${ctx.tenantId}
40
+ AND oi.client_id = ${ctx.clientId}
41
+ `;
42
+ if (!rows[0])
43
+ throw new shared_1.NotFoundError('Onboarding não encontrado');
44
+ if (itemId) {
45
+ const items = await tx `
46
+ SELECT id FROM onboarding_item
47
+ WHERE id = ${itemId} AND onboarding_id = ${onboardingId}
48
+ AND tenant_id = ${ctx.tenantId} AND client_id = ${ctx.clientId} AND visibility = 'portal'
49
+ `;
50
+ if (!items[0])
51
+ throw new shared_1.NotFoundError('Pendência não encontrada');
52
+ }
53
+ if (requirementId) {
54
+ const docs = await tx `
55
+ SELECT id, status FROM onboarding_document_requirement
56
+ WHERE id = ${requirementId} AND onboarding_id = ${onboardingId}
57
+ AND tenant_id = ${ctx.tenantId} AND client_id = ${ctx.clientId}
58
+ `;
59
+ if (!docs[0])
60
+ throw new shared_1.NotFoundError('Requisito documental não encontrado');
61
+ if (String(docs[0].status) === 'validated')
62
+ throw new shared_1.ConflictError('Este requisito já foi validado');
63
+ }
64
+ return { ownerId: rows[0].owner_id };
65
+ }
66
+ async function notifyOwner(tx, ownerId, onboardingId, kind) {
67
+ if (!ownerId)
68
+ return;
69
+ await (0, repository_js_1.createNotification)(tx, {
70
+ userId: ownerId,
71
+ type: 'action_required',
72
+ title: kind === 'external_delivery_confirmation'
73
+ ? 'Cliente informou envio externo'
74
+ : 'Cliente enviou nova informação',
75
+ body: 'Há uma nova interação pública aguardando revisão.',
76
+ linkRef: { type: 'office_onboarding', id: onboardingId },
77
+ });
78
+ }
79
+ async function createPortalInteraction(tx, ctx, input) {
80
+ const text = 'text' in input
81
+ ? cleanText(input.text)
82
+ : 'note' in input
83
+ ? cleanText(input.note ?? '') || null
84
+ : null;
85
+ if (text !== null && (!text || text.length > 2000))
86
+ throw new shared_1.ValidationError('A informação deve ter entre 1 e 2.000 caracteres');
87
+ const owner = await target(tx, ctx, input.onboardingId, input.kind === 'response' ? input.itemId : undefined, input.kind === 'external_delivery_confirmation' ? input.requirementId : undefined);
88
+ if (input.kind === 'response' && input.supersedesId) {
89
+ const previous = await tx `
90
+ SELECT status FROM onboarding_portal_interaction
91
+ WHERE id = ${input.supersedesId} AND onboarding_id = ${input.onboardingId}
92
+ AND client_id = ${ctx.clientId} AND tenant_id = ${ctx.tenantId} AND author_user_id = ${ctx.actorId}
93
+ `;
94
+ if (!previous[0] || !['submitted', 'needs_clarification'].includes(previous[0].status))
95
+ throw new shared_1.ConflictError('Esta resposta não aceita complemento');
96
+ await tx `UPDATE onboarding_portal_interaction SET status = 'superseded', updated_at = now() WHERE id = ${input.supersedesId}`;
97
+ }
98
+ const id = (0, shared_1.uuidv7)();
99
+ const row = await tx `
100
+ INSERT INTO onboarding_portal_interaction
101
+ (id, tenant_id, onboarding_id, client_id, item_id, document_requirement_id, author_user_id, kind, status, visibility, body, external_channel, external_delivered_at, supersedes_id)
102
+ VALUES
103
+ (${id}, ${ctx.tenantId}, ${input.onboardingId}, ${ctx.clientId},
104
+ ${input.kind === 'response' ? input.itemId : null},
105
+ ${input.kind === 'external_delivery_confirmation' ? input.requirementId : null},
106
+ ${ctx.actorId}, ${input.kind}, 'submitted', 'public_to_client', ${text},
107
+ ${input.kind === 'external_delivery_confirmation' ? input.channel : null},
108
+ ${input.kind === 'external_delivery_confirmation' ? input.deliveredAt : null},
109
+ ${input.kind === 'response' ? (input.supersedesId ?? null) : null})
110
+ RETURNING id, kind, status, body, external_channel, external_delivered_at, created_at, updated_at, item_id, document_requirement_id
111
+ `;
112
+ await (0, audit_js_1.appendAudit)(tx, {
113
+ actorId: ctx.actorId,
114
+ action: `portal_onboarding_${input.kind}`,
115
+ resourceType: 'onboarding_portal_interaction',
116
+ resourceId: id,
117
+ metadata: {
118
+ onboardingId: input.onboardingId,
119
+ correlationId: ctx.correlationId,
120
+ requestId: ctx.requestId ?? null,
121
+ },
122
+ });
123
+ await tx `
124
+ INSERT INTO onboarding_event
125
+ (event_id, tenant_id, onboarding_id, client_id, actor_id, event_type, event_version, occurred_at, correlation_id, causation_id, entity_type, entity_id, payload, metadata)
126
+ VALUES (${(0, shared_1.uuidv7)()}, ${ctx.tenantId}, ${input.onboardingId}, ${ctx.clientId}, ${ctx.actorId},
127
+ ${input.kind === 'response' ? (input.supersedesId ? 'onboarding.portal_response_supplemented' : 'onboarding.portal_response_submitted') : input.kind === 'comment' ? 'onboarding.portal_comment_created' : 'onboarding.external_delivery_confirmed'},
128
+ 1, now(), ${ctx.correlationId}, null, 'onboarding', ${input.onboardingId},
129
+ ${tx.json({ interactionId: id, kind: input.kind })}, ${tx.json({ visibility: 'public_to_client' })})
130
+ `;
131
+ await notifyOwner(tx, owner.ownerId, input.onboardingId, input.kind);
132
+ return map(row[0]);
133
+ }
134
+ async function listPortalInteractions(tx, ctx, onboardingId, limit = 50, offset = 0) {
135
+ await target(tx, ctx, onboardingId);
136
+ const rows = await tx `
137
+ SELECT id, kind, status, body, external_channel, external_delivered_at, created_at, updated_at, item_id, document_requirement_id, count(*) OVER() AS total, 'Você' AS public_author_label
138
+ FROM onboarding_portal_interaction
139
+ WHERE tenant_id = ${ctx.tenantId} AND client_id = ${ctx.clientId} AND onboarding_id = ${onboardingId}
140
+ ORDER BY created_at ASC, id ASC LIMIT ${Math.min(limit, 100)} OFFSET ${Math.max(offset, 0)}
141
+ `;
142
+ const replies = await tx `
143
+ SELECT id, 'office_public_reply' AS kind, 'submitted' AS status, body,
144
+ NULL::text AS external_channel, NULL::date AS external_delivered_at,
145
+ created_at, created_at AS updated_at, NULL::uuid AS item_id,
146
+ NULL::uuid AS document_requirement_id, 'Escritório' AS public_author_label
147
+ FROM onboarding_interaction_public_reply
148
+ WHERE tenant_id = ${ctx.tenantId} AND client_id = ${ctx.clientId} AND onboarding_id = ${onboardingId}
149
+ ORDER BY created_at ASC, id ASC
150
+ `;
151
+ const items = [...rows.map(map), ...replies.map(map)].sort((a, b) => a.createdAt.localeCompare(b.createdAt));
152
+ return {
153
+ items: items.slice(0, Math.min(limit, 100)),
154
+ total: Number(rows[0]?.total ?? 0) + replies.length,
155
+ };
156
+ }
157
+ //# sourceMappingURL=portal-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-actions.js","sourceRoot":"","sources":["../../../src/onboarding/portal-actions.ts"],"names":[],"mappings":";;AAsHA,0DAiFC;AAED,wDA8BC;AAvOD,0CAAsF;AACtF,gDAAgD;AAEhD,kEAAoE;AA+BpE,SAAS,GAAG,CAAC,GAA4B;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAiC,CAAC;IACrD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,IAAI,EAAE,GAAG,CAAC,IAA6B;QACvC,MAAM;QACN,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QACxC,OAAO,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAE,GAAG,CAAC,gBAAoC,CAAC,CAAC,CAAC,IAAI;QAChF,WAAW,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI;QACjF,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE;QACzD,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE;QACzD,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM;QACrF,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACvD,oBAAoB,EAAE,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9F,cAAc,EACZ,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;KACnF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SAC7C,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QACpB,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,GAAG,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC;IACnC,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC;SACR,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,MAAM,CACnB,EAAM,EACN,GAA6B,EAC7B,YAAoB,EACpB,MAAe,EACf,aAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,EAAE,CAA+B;;;oBAGlC,YAAY;2BACL,GAAG,CAAC,QAAQ;2BACZ,GAAG,CAAC,QAAQ;GACpC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,sBAAa,CAAC,2BAA2B,CAAC,CAAC;IACnE,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,MAAM,EAAE,CAAA;;mBAEP,MAAM,wBAAwB,YAAY;0BACnC,GAAG,CAAC,QAAQ,oBAAoB,GAAG,CAAC,QAAQ;KACjE,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,sBAAa,CAAC,0BAA0B,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAA;;mBAEN,aAAa,wBAAwB,YAAY;0BAC1C,GAAG,CAAC,QAAQ,oBAAoB,GAAG,CAAC,QAAQ;KACjE,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,sBAAa,CAAC,qCAAqC,CAAC,CAAC;QAC7E,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,WAAW;YACxC,MAAM,IAAI,sBAAa,CAAC,gCAAgC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,EAAM,EACN,OAAsB,EACtB,YAAoB,EACpB,IAA2B;IAE3B,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,IAAA,kCAAkB,EAAC,EAAE,EAAE;QAC3B,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,iBAAiB;QACvB,KAAK,EACH,IAAI,KAAK,gCAAgC;YACvC,CAAC,CAAC,gCAAgC;YAClC,CAAC,CAAC,gCAAgC;QACtC,IAAI,EAAE,mDAAmD;QACzD,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,YAAY,EAAE;KACzD,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,EAAM,EACN,GAA6B,EAC7B,KAgBK;IAEL,MAAM,IAAI,GACR,MAAM,IAAI,KAAK;QACb,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,CAAC,CAAC,MAAM,IAAI,KAAK;YACf,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI;YACrC,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAChD,MAAM,IAAI,wBAAe,CAAC,kDAAkD,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,MAAM,MAAM,CACxB,EAAE,EACF,GAAG,EACH,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACpD,KAAK,CAAC,IAAI,KAAK,gCAAgC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAClF,CAAC;IACF,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAsB;;mBAEhC,KAAK,CAAC,YAAY,wBAAwB,KAAK,CAAC,YAAY;0BACrD,GAAG,CAAC,QAAQ,oBAAoB,GAAG,CAAC,QAAQ,yBAAyB,GAAG,CAAC,OAAO;KACrG,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpF,MAAM,IAAI,sBAAa,CAAC,sCAAsC,CAAC,CAAC;QAClE,MAAM,EAAE,CAAA,iGAAiG,KAAK,CAAC,YAAY,EAAE,CAAC;IAChI,CAAC;IACD,MAAM,EAAE,GAAG,IAAA,eAAM,GAAE,CAAC;IACpB,MAAM,GAAG,GAAG,MAAM,EAAE,CAA2B;;;;SAIxC,EAAE,KAAK,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC,YAAY,KAAK,GAAG,CAAC,QAAQ;SAC3D,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;SAC/C,KAAK,CAAC,IAAI,KAAK,gCAAgC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;SAC5E,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,sCAAsC,IAAI;SACpE,KAAK,CAAC,IAAI,KAAK,gCAAgC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SACtE,KAAK,CAAC,IAAI,KAAK,gCAAgC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;SAC1E,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;;GAErE,CAAC;IACF,MAAM,IAAA,sBAAW,EAAC,EAAE,EAAE;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,qBAAqB,KAAK,CAAC,IAAI,EAAE;QACzC,YAAY,EAAE,+BAA+B;QAC7C,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE;YACR,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;SACjC;KACF,CAAC,CAAC;IACH,MAAM,EAAE,CAAA;;;cAGI,IAAA,eAAM,GAAE,KAAK,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC,YAAY,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,OAAO;QACvF,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,wCAAwC;kBACvO,GAAG,CAAC,aAAa,yBAAyB,KAAK,CAAC,YAAY;QACtE,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAW,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAW,CAAC;GACvH,CAAC;IACF,MAAM,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;AACtB,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,EAAM,EACN,GAA6B,EAC7B,YAAoB,EACpB,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,CAAC;IAEV,MAAM,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,EAAE,CAA2B;;;wBAG1B,GAAG,CAAC,QAAQ,oBAAoB,GAAG,CAAC,QAAQ,wBAAwB,YAAY;4CAC5D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;GAC3F,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,EAAE,CAA2B;;;;;;wBAM7B,GAAG,CAAC,QAAQ,oBAAoB,GAAG,CAAC,QAAQ,wBAAwB,YAAY;;GAErG,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CACvC,CAAC;IACF,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3C,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM;KACpD,CAAC;AACJ,CAAC"}