@baruk/core 0.3.0 → 0.4.2

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 (708) hide show
  1. package/.baruk-provenance.json +10 -0
  2. package/CHANGELOG.md +97 -0
  3. package/README.md +9 -2
  4. package/dist/auth/password-reset.d.ts +30 -1
  5. package/dist/auth/password-reset.d.ts.map +1 -1
  6. package/dist/auth/password-reset.js +139 -11
  7. package/dist/auth/password-reset.js.map +1 -1
  8. package/dist/auth/service.d.ts +39 -2
  9. package/dist/auth/service.d.ts.map +1 -1
  10. package/dist/auth/service.js +75 -10
  11. package/dist/auth/service.js.map +1 -1
  12. package/dist/billing/ar-repository.d.ts +334 -0
  13. package/dist/billing/ar-repository.d.ts.map +1 -0
  14. package/dist/billing/ar-repository.js +707 -0
  15. package/dist/billing/ar-repository.js.map +1 -0
  16. package/dist/billing/auto-generation.d.ts +87 -0
  17. package/dist/billing/auto-generation.d.ts.map +1 -0
  18. package/dist/billing/auto-generation.js +181 -0
  19. package/dist/billing/auto-generation.js.map +1 -0
  20. package/dist/billing/live-guard.d.ts +64 -0
  21. package/dist/billing/live-guard.d.ts.map +1 -0
  22. package/dist/billing/live-guard.js +68 -0
  23. package/dist/billing/live-guard.js.map +1 -0
  24. package/dist/billing/payment-means-catalog.d.ts +17 -0
  25. package/dist/billing/payment-means-catalog.d.ts.map +1 -0
  26. package/dist/billing/payment-means-catalog.js +21 -0
  27. package/dist/billing/payment-means-catalog.js.map +1 -0
  28. package/dist/billing/payment-means.d.ts +38 -0
  29. package/dist/billing/payment-means.d.ts.map +1 -0
  30. package/dist/billing/payment-means.js +29 -0
  31. package/dist/billing/payment-means.js.map +1 -0
  32. package/dist/billing/payment-rail.d.ts +118 -0
  33. package/dist/billing/payment-rail.d.ts.map +1 -0
  34. package/dist/billing/payment-rail.js +295 -0
  35. package/dist/billing/payment-rail.js.map +1 -0
  36. package/dist/billing/provider/asaas.d.ts +46 -1
  37. package/dist/billing/provider/asaas.d.ts.map +1 -1
  38. package/dist/billing/provider/asaas.js +194 -14
  39. package/dist/billing/provider/asaas.js.map +1 -1
  40. package/dist/billing/provider/manual.js +1 -1
  41. package/dist/billing/provider/manual.js.map +1 -1
  42. package/dist/billing/provider/types.d.ts +115 -8
  43. package/dist/billing/provider/types.d.ts.map +1 -1
  44. package/dist/billing/provider-account.d.ts +89 -0
  45. package/dist/billing/provider-account.d.ts.map +1 -0
  46. package/dist/billing/provider-account.js +161 -0
  47. package/dist/billing/provider-account.js.map +1 -0
  48. package/dist/billing/provider-onboarding.d.ts +67 -0
  49. package/dist/billing/provider-onboarding.d.ts.map +1 -0
  50. package/dist/billing/provider-onboarding.js +234 -0
  51. package/dist/billing/provider-onboarding.js.map +1 -0
  52. package/dist/billing/receivable.d.ts +5 -1
  53. package/dist/billing/receivable.d.ts.map +1 -1
  54. package/dist/billing/reconcile.d.ts +58 -0
  55. package/dist/billing/reconcile.d.ts.map +1 -0
  56. package/dist/billing/reconcile.js +138 -0
  57. package/dist/billing/reconcile.js.map +1 -0
  58. package/dist/billing/repository.d.ts +90 -1
  59. package/dist/billing/repository.d.ts.map +1 -1
  60. package/dist/billing/repository.js +148 -19
  61. package/dist/billing/repository.js.map +1 -1
  62. package/dist/cjs/auth/password-reset.js +141 -11
  63. package/dist/cjs/auth/password-reset.js.map +1 -1
  64. package/dist/cjs/auth/service.js +75 -9
  65. package/dist/cjs/auth/service.js.map +1 -1
  66. package/dist/cjs/billing/ar-repository.js +728 -0
  67. package/dist/cjs/billing/ar-repository.js.map +1 -0
  68. package/dist/cjs/billing/auto-generation.js +186 -0
  69. package/dist/cjs/billing/auto-generation.js.map +1 -0
  70. package/dist/cjs/billing/live-guard.js +72 -0
  71. package/dist/cjs/billing/live-guard.js.map +1 -0
  72. package/dist/cjs/billing/payment-means-catalog.js +25 -0
  73. package/dist/cjs/billing/payment-means-catalog.js.map +1 -0
  74. package/dist/cjs/billing/payment-means.js +33 -0
  75. package/dist/cjs/billing/payment-means.js.map +1 -0
  76. package/dist/cjs/billing/payment-rail.js +301 -0
  77. package/dist/cjs/billing/payment-rail.js.map +1 -0
  78. package/dist/cjs/billing/provider/asaas.js +194 -14
  79. package/dist/cjs/billing/provider/asaas.js.map +1 -1
  80. package/dist/cjs/billing/provider/manual.js +1 -1
  81. package/dist/cjs/billing/provider/manual.js.map +1 -1
  82. package/dist/cjs/billing/provider-account.js +170 -0
  83. package/dist/cjs/billing/provider-account.js.map +1 -0
  84. package/dist/cjs/billing/provider-onboarding.js +239 -0
  85. package/dist/cjs/billing/provider-onboarding.js.map +1 -0
  86. package/dist/cjs/billing/reconcile.js +143 -0
  87. package/dist/cjs/billing/reconcile.js.map +1 -0
  88. package/dist/cjs/billing/repository.js +150 -18
  89. package/dist/cjs/billing/repository.js.map +1 -1
  90. package/dist/cjs/clients/repository.js +96 -20
  91. package/dist/cjs/clients/repository.js.map +1 -1
  92. package/dist/cjs/collection/branding.js +140 -0
  93. package/dist/cjs/collection/branding.js.map +1 -0
  94. package/dist/cjs/collection/channel-accounts.js +137 -0
  95. package/dist/cjs/collection/channel-accounts.js.map +1 -0
  96. package/dist/cjs/collection/channel.js +17 -0
  97. package/dist/cjs/collection/channel.js.map +1 -0
  98. package/dist/cjs/collection/communication-bridge.js +140 -0
  99. package/dist/cjs/collection/communication-bridge.js.map +1 -0
  100. package/dist/cjs/collection/communication-runtime.js +193 -0
  101. package/dist/cjs/collection/communication-runtime.js.map +1 -0
  102. package/dist/cjs/collection/consent-repository.js +84 -0
  103. package/dist/cjs/collection/consent-repository.js.map +1 -0
  104. package/dist/cjs/collection/copy.js +125 -0
  105. package/dist/cjs/collection/copy.js.map +1 -0
  106. package/dist/cjs/collection/delivery-callback.js +151 -0
  107. package/dist/cjs/collection/delivery-callback.js.map +1 -0
  108. package/dist/cjs/collection/email-layout.js +252 -0
  109. package/dist/cjs/collection/email-layout.js.map +1 -0
  110. package/dist/cjs/collection/engine.js +414 -0
  111. package/dist/cjs/collection/engine.js.map +1 -0
  112. package/dist/cjs/collection/format.js +76 -0
  113. package/dist/cjs/collection/format.js.map +1 -0
  114. package/dist/cjs/collection/payment-block.js +3 -0
  115. package/dist/cjs/collection/payment-block.js.map +1 -0
  116. package/dist/cjs/collection/policy.js +147 -0
  117. package/dist/cjs/collection/policy.js.map +1 -0
  118. package/dist/cjs/collection/repository.js +260 -0
  119. package/dist/cjs/collection/repository.js.map +1 -0
  120. package/dist/cjs/collection/subject.js +104 -0
  121. package/dist/cjs/collection/subject.js.map +1 -0
  122. package/dist/cjs/collection/template-catalog.js +165 -0
  123. package/dist/cjs/collection/template-catalog.js.map +1 -0
  124. package/dist/cjs/collection/template.js +78 -0
  125. package/dist/cjs/collection/template.js.map +1 -0
  126. package/dist/cjs/communication/adapters/email.js +132 -0
  127. package/dist/cjs/communication/adapters/email.js.map +1 -0
  128. package/dist/cjs/communication/adapters/sms.js +127 -0
  129. package/dist/cjs/communication/adapters/sms.js.map +1 -0
  130. package/dist/cjs/communication/adapters/whatsapp-language.js +39 -0
  131. package/dist/cjs/communication/adapters/whatsapp-language.js.map +1 -0
  132. package/dist/cjs/communication/adapters/whatsapp-templates.js +100 -0
  133. package/dist/cjs/communication/adapters/whatsapp-templates.js.map +1 -0
  134. package/dist/cjs/communication/adapters/whatsapp.js +213 -0
  135. package/dist/cjs/communication/adapters/whatsapp.js.map +1 -0
  136. package/dist/cjs/communication/audit.js +61 -0
  137. package/dist/cjs/communication/audit.js.map +1 -0
  138. package/dist/cjs/communication/capabilities.js +76 -0
  139. package/dist/cjs/communication/capabilities.js.map +1 -0
  140. package/dist/cjs/communication/channel.js +53 -0
  141. package/dist/cjs/communication/channel.js.map +1 -0
  142. package/dist/cjs/communication/claim.js +228 -0
  143. package/dist/cjs/communication/claim.js.map +1 -0
  144. package/dist/cjs/communication/consent.js +43 -0
  145. package/dist/cjs/communication/consent.js.map +1 -0
  146. package/dist/cjs/communication/context.js +45 -0
  147. package/dist/cjs/communication/context.js.map +1 -0
  148. package/dist/cjs/communication/credentials.js +121 -0
  149. package/dist/cjs/communication/credentials.js.map +1 -0
  150. package/dist/cjs/communication/dry-run-scenario.js +161 -0
  151. package/dist/cjs/communication/dry-run-scenario.js.map +1 -0
  152. package/dist/cjs/communication/dry-run.js +97 -0
  153. package/dist/cjs/communication/dry-run.js.map +1 -0
  154. package/dist/cjs/communication/engine.js +483 -0
  155. package/dist/cjs/communication/engine.js.map +1 -0
  156. package/dist/cjs/communication/graph.js +50 -0
  157. package/dist/cjs/communication/graph.js.map +1 -0
  158. package/dist/cjs/communication/idempotency.js +26 -0
  159. package/dist/cjs/communication/idempotency.js.map +1 -0
  160. package/dist/cjs/communication/identity.js +110 -0
  161. package/dist/cjs/communication/identity.js.map +1 -0
  162. package/dist/cjs/communication/index.js +135 -0
  163. package/dist/cjs/communication/index.js.map +1 -0
  164. package/dist/cjs/communication/onboarding.js +297 -0
  165. package/dist/cjs/communication/onboarding.js.map +1 -0
  166. package/dist/cjs/communication/policy.js +16 -0
  167. package/dist/cjs/communication/policy.js.map +1 -0
  168. package/dist/cjs/communication/routing.js +77 -0
  169. package/dist/cjs/communication/routing.js.map +1 -0
  170. package/dist/cjs/communication/sender-profile.js +128 -0
  171. package/dist/cjs/communication/sender-profile.js.map +1 -0
  172. package/dist/cjs/communication/status.js +86 -0
  173. package/dist/cjs/communication/status.js.map +1 -0
  174. package/dist/cjs/communication/stores/onboarding.js +135 -0
  175. package/dist/cjs/communication/stores/onboarding.js.map +1 -0
  176. package/dist/cjs/communication/stores/postgres.js +458 -0
  177. package/dist/cjs/communication/stores/postgres.js.map +1 -0
  178. package/dist/cjs/communication/stores/routing.js +334 -0
  179. package/dist/cjs/communication/stores/routing.js.map +1 -0
  180. package/dist/cjs/communication/stores/secrets.js +126 -0
  181. package/dist/cjs/communication/stores/secrets.js.map +1 -0
  182. package/dist/cjs/communication/template-provider.js +22 -0
  183. package/dist/cjs/communication/template-provider.js.map +1 -0
  184. package/dist/cjs/communication/template.js +63 -0
  185. package/dist/cjs/communication/template.js.map +1 -0
  186. package/dist/cjs/communication/webhook-subscription.js +258 -0
  187. package/dist/cjs/communication/webhook-subscription.js.map +1 -0
  188. package/dist/cjs/communication/webhook.js +292 -0
  189. package/dist/cjs/communication/webhook.js.map +1 -0
  190. package/dist/cjs/competence/repository.js +309 -0
  191. package/dist/cjs/competence/repository.js.map +1 -0
  192. package/dist/cjs/contacts/phone.js +192 -0
  193. package/dist/cjs/contacts/phone.js.map +1 -0
  194. package/dist/cjs/db/seed-catalog.js +48 -0
  195. package/dist/cjs/db/seed-catalog.js.map +1 -0
  196. package/dist/cjs/db/seed.js +15 -7
  197. package/dist/cjs/db/seed.js.map +1 -1
  198. package/dist/cjs/documents/repository.js +244 -0
  199. package/dist/cjs/documents/repository.js.map +1 -0
  200. package/dist/cjs/documents/requests.js +136 -0
  201. package/dist/cjs/documents/requests.js.map +1 -0
  202. package/dist/cjs/index.js +427 -48
  203. package/dist/cjs/index.js.map +1 -1
  204. package/dist/cjs/legal/company.js +36 -0
  205. package/dist/cjs/legal/company.js.map +1 -0
  206. package/dist/cjs/legal/documents.js +671 -0
  207. package/dist/cjs/legal/documents.js.map +1 -0
  208. package/dist/cjs/legal/index.js +15 -0
  209. package/dist/cjs/legal/index.js.map +1 -0
  210. package/dist/cjs/legal/types.js +34 -0
  211. package/dist/cjs/legal/types.js.map +1 -0
  212. package/dist/cjs/mail/auth-templates.js +29 -0
  213. package/dist/cjs/mail/auth-templates.js.map +1 -0
  214. package/dist/cjs/mail/dedup-store.js +12 -51
  215. package/dist/cjs/mail/dedup-store.js.map +1 -1
  216. package/dist/cjs/mail/index.js +16 -4
  217. package/dist/cjs/mail/index.js.map +1 -1
  218. package/dist/cjs/mail/provider.js +12 -247
  219. package/dist/cjs/mail/provider.js.map +1 -1
  220. package/dist/cjs/mail/resend.js +14 -18
  221. package/dist/cjs/mail/resend.js.map +1 -1
  222. package/dist/cjs/mail/sender-resolver.js +12 -11
  223. package/dist/cjs/mail/sender-resolver.js.map +1 -1
  224. package/dist/cjs/mail/template-renderer.js +11 -16
  225. package/dist/cjs/mail/template-renderer.js.map +1 -1
  226. package/dist/cjs/mail/transactional-outbound.js +117 -0
  227. package/dist/cjs/mail/transactional-outbound.js.map +1 -0
  228. package/dist/cjs/mail/types.js +8 -35
  229. package/dist/cjs/mail/types.js.map +1 -1
  230. package/dist/cjs/portal/provisioning.js +144 -0
  231. package/dist/cjs/portal/provisioning.js.map +1 -0
  232. package/dist/cjs/pricing-engine/canonical.js +42 -0
  233. package/dist/cjs/pricing-engine/canonical.js.map +1 -0
  234. package/dist/cjs/pricing-engine/errors.js +6 -1
  235. package/dist/cjs/pricing-engine/errors.js.map +1 -1
  236. package/dist/cjs/pricing-engine/index.js +12 -1
  237. package/dist/cjs/pricing-engine/index.js.map +1 -1
  238. package/dist/cjs/pricing-engine/pipeline.js +200 -26
  239. package/dist/cjs/pricing-engine/pipeline.js.map +1 -1
  240. package/dist/cjs/pricing-engine/shadow-adapter.js +79 -0
  241. package/dist/cjs/pricing-engine/shadow-adapter.js.map +1 -0
  242. package/dist/cjs/pricing-engine/shadow-diff.js +55 -0
  243. package/dist/cjs/pricing-engine/shadow-diff.js.map +1 -0
  244. package/dist/cjs/pricing-engine/shadow-facade.js +85 -0
  245. package/dist/cjs/pricing-engine/shadow-facade.js.map +1 -0
  246. package/dist/cjs/pricing-engine/shadow-legacy-types.js +19 -0
  247. package/dist/cjs/pricing-engine/shadow-legacy-types.js.map +1 -0
  248. package/dist/cjs/pricing-engine/shadow-metrics.js +34 -0
  249. package/dist/cjs/pricing-engine/shadow-metrics.js.map +1 -0
  250. package/dist/cjs/pricing-engine/shadow-normalizer.js +42 -0
  251. package/dist/cjs/pricing-engine/shadow-normalizer.js.map +1 -0
  252. package/dist/cjs/rbac/authorize.js +28 -0
  253. package/dist/cjs/rbac/authorize.js.map +1 -1
  254. package/dist/cjs/rbac/catalog.js +67 -1
  255. package/dist/cjs/rbac/catalog.js.map +1 -1
  256. package/dist/cjs/rbac/workload-provisioning.js +160 -0
  257. package/dist/cjs/rbac/workload-provisioning.js.map +1 -0
  258. package/dist/cjs/rbac/workload.js +191 -0
  259. package/dist/cjs/rbac/workload.js.map +1 -0
  260. package/dist/cjs/storage/checksum.js +15 -0
  261. package/dist/cjs/storage/checksum.js.map +1 -0
  262. package/dist/cjs/storage/key.js +72 -0
  263. package/dist/cjs/storage/key.js.map +1 -0
  264. package/dist/cjs/storage/local.js +100 -0
  265. package/dist/cjs/storage/local.js.map +1 -0
  266. package/dist/cjs/storage/r2.js +181 -0
  267. package/dist/cjs/storage/r2.js.map +1 -0
  268. package/dist/cjs/storage/registry.js +41 -0
  269. package/dist/cjs/storage/registry.js.map +1 -0
  270. package/dist/cjs/storage/types.js +50 -0
  271. package/dist/cjs/storage/types.js.map +1 -0
  272. package/dist/cjs/subscription-billing/provider/asaas.js +32 -7
  273. package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -1
  274. package/dist/cjs/subscription-billing/provider/disabled.js +8 -0
  275. package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -1
  276. package/dist/cjs/subscription-billing/provider/registry.js +17 -0
  277. package/dist/cjs/subscription-billing/provider/registry.js.map +1 -1
  278. package/dist/cjs/subscription-billing/service.js +57 -8
  279. package/dist/cjs/subscription-billing/service.js.map +1 -1
  280. package/dist/cjs/subscription-billing/types.js.map +1 -1
  281. package/dist/cjs/tenancy/provisioning.js +32 -8
  282. package/dist/cjs/tenancy/provisioning.js.map +1 -1
  283. package/dist/cjs/users/repository.js +119 -2
  284. package/dist/cjs/users/repository.js.map +1 -1
  285. package/dist/cjs/vault/repository.js +81 -0
  286. package/dist/cjs/vault/repository.js.map +1 -1
  287. package/dist/clients/repository.d.ts +42 -0
  288. package/dist/clients/repository.d.ts.map +1 -1
  289. package/dist/clients/repository.js +94 -21
  290. package/dist/clients/repository.js.map +1 -1
  291. package/dist/collection/branding.d.ts +72 -0
  292. package/dist/collection/branding.d.ts.map +1 -0
  293. package/dist/collection/branding.js +136 -0
  294. package/dist/collection/branding.js.map +1 -0
  295. package/dist/collection/channel-accounts.d.ts +57 -0
  296. package/dist/collection/channel-accounts.d.ts.map +1 -0
  297. package/dist/collection/channel-accounts.js +133 -0
  298. package/dist/collection/channel-accounts.js.map +1 -0
  299. package/dist/collection/channel.d.ts +24 -0
  300. package/dist/collection/channel.d.ts.map +1 -0
  301. package/dist/collection/channel.js +16 -0
  302. package/dist/collection/channel.js.map +1 -0
  303. package/dist/collection/communication-bridge.d.ts +66 -0
  304. package/dist/collection/communication-bridge.d.ts.map +1 -0
  305. package/dist/collection/communication-bridge.js +134 -0
  306. package/dist/collection/communication-bridge.js.map +1 -0
  307. package/dist/collection/communication-runtime.d.ts +95 -0
  308. package/dist/collection/communication-runtime.d.ts.map +1 -0
  309. package/dist/collection/communication-runtime.js +187 -0
  310. package/dist/collection/communication-runtime.js.map +1 -0
  311. package/dist/collection/consent-repository.d.ts +32 -0
  312. package/dist/collection/consent-repository.d.ts.map +1 -0
  313. package/dist/collection/consent-repository.js +79 -0
  314. package/dist/collection/consent-repository.js.map +1 -0
  315. package/dist/collection/copy.d.ts +50 -0
  316. package/dist/collection/copy.d.ts.map +1 -0
  317. package/dist/collection/copy.js +122 -0
  318. package/dist/collection/copy.js.map +1 -0
  319. package/dist/collection/delivery-callback.d.ts +49 -0
  320. package/dist/collection/delivery-callback.d.ts.map +1 -0
  321. package/dist/collection/delivery-callback.js +147 -0
  322. package/dist/collection/delivery-callback.js.map +1 -0
  323. package/dist/collection/email-layout.d.ts +45 -0
  324. package/dist/collection/email-layout.d.ts.map +1 -0
  325. package/dist/collection/email-layout.js +247 -0
  326. package/dist/collection/email-layout.js.map +1 -0
  327. package/dist/collection/engine.d.ts +177 -0
  328. package/dist/collection/engine.d.ts.map +1 -0
  329. package/dist/collection/engine.js +407 -0
  330. package/dist/collection/engine.js.map +1 -0
  331. package/dist/collection/format.d.ts +32 -0
  332. package/dist/collection/format.d.ts.map +1 -0
  333. package/dist/collection/format.js +70 -0
  334. package/dist/collection/format.js.map +1 -0
  335. package/dist/collection/payment-block.d.ts +24 -0
  336. package/dist/collection/payment-block.d.ts.map +1 -0
  337. package/dist/collection/payment-block.js +2 -0
  338. package/dist/collection/payment-block.js.map +1 -0
  339. package/dist/collection/policy.d.ts +53 -0
  340. package/dist/collection/policy.d.ts.map +1 -0
  341. package/dist/collection/policy.js +141 -0
  342. package/dist/collection/policy.js.map +1 -0
  343. package/dist/collection/repository.d.ts +129 -0
  344. package/dist/collection/repository.d.ts.map +1 -0
  345. package/dist/collection/repository.js +246 -0
  346. package/dist/collection/repository.js.map +1 -0
  347. package/dist/collection/subject.d.ts +66 -0
  348. package/dist/collection/subject.d.ts.map +1 -0
  349. package/dist/collection/subject.js +99 -0
  350. package/dist/collection/subject.js.map +1 -0
  351. package/dist/collection/template-catalog.d.ts +16 -0
  352. package/dist/collection/template-catalog.d.ts.map +1 -0
  353. package/dist/collection/template-catalog.js +162 -0
  354. package/dist/collection/template-catalog.js.map +1 -0
  355. package/dist/collection/template.d.ts +37 -0
  356. package/dist/collection/template.d.ts.map +1 -0
  357. package/dist/collection/template.js +73 -0
  358. package/dist/collection/template.js.map +1 -0
  359. package/dist/communication/adapters/email.d.ts +28 -0
  360. package/dist/communication/adapters/email.d.ts.map +1 -0
  361. package/dist/communication/adapters/email.js +129 -0
  362. package/dist/communication/adapters/email.js.map +1 -0
  363. package/dist/communication/adapters/sms.d.ts +95 -0
  364. package/dist/communication/adapters/sms.d.ts.map +1 -0
  365. package/dist/communication/adapters/sms.js +121 -0
  366. package/dist/communication/adapters/sms.js.map +1 -0
  367. package/dist/communication/adapters/whatsapp-language.d.ts +34 -0
  368. package/dist/communication/adapters/whatsapp-language.d.ts.map +1 -0
  369. package/dist/communication/adapters/whatsapp-language.js +36 -0
  370. package/dist/communication/adapters/whatsapp-language.js.map +1 -0
  371. package/dist/communication/adapters/whatsapp-templates.d.ts +18 -0
  372. package/dist/communication/adapters/whatsapp-templates.d.ts.map +1 -0
  373. package/dist/communication/adapters/whatsapp-templates.js +97 -0
  374. package/dist/communication/adapters/whatsapp-templates.js.map +1 -0
  375. package/dist/communication/adapters/whatsapp.d.ts +29 -0
  376. package/dist/communication/adapters/whatsapp.d.ts.map +1 -0
  377. package/dist/communication/adapters/whatsapp.js +210 -0
  378. package/dist/communication/adapters/whatsapp.js.map +1 -0
  379. package/dist/communication/audit.d.ts +105 -0
  380. package/dist/communication/audit.d.ts.map +1 -0
  381. package/dist/communication/audit.js +56 -0
  382. package/dist/communication/audit.js.map +1 -0
  383. package/dist/communication/capabilities.d.ts +88 -0
  384. package/dist/communication/capabilities.d.ts.map +1 -0
  385. package/dist/communication/capabilities.js +72 -0
  386. package/dist/communication/capabilities.js.map +1 -0
  387. package/dist/communication/channel.d.ts +125 -0
  388. package/dist/communication/channel.d.ts.map +1 -0
  389. package/dist/communication/channel.js +47 -0
  390. package/dist/communication/channel.js.map +1 -0
  391. package/dist/communication/claim.d.ts +368 -0
  392. package/dist/communication/claim.d.ts.map +1 -0
  393. package/dist/communication/claim.js +224 -0
  394. package/dist/communication/claim.js.map +1 -0
  395. package/dist/communication/consent.d.ts +65 -0
  396. package/dist/communication/consent.d.ts.map +1 -0
  397. package/dist/communication/consent.js +40 -0
  398. package/dist/communication/consent.js.map +1 -0
  399. package/dist/communication/context.d.ts +48 -0
  400. package/dist/communication/context.d.ts.map +1 -0
  401. package/dist/communication/context.js +41 -0
  402. package/dist/communication/context.js.map +1 -0
  403. package/dist/communication/credentials.d.ts +74 -0
  404. package/dist/communication/credentials.d.ts.map +1 -0
  405. package/dist/communication/credentials.js +115 -0
  406. package/dist/communication/credentials.js.map +1 -0
  407. package/dist/communication/dry-run-scenario.d.ts +37 -0
  408. package/dist/communication/dry-run-scenario.d.ts.map +1 -0
  409. package/dist/communication/dry-run-scenario.js +158 -0
  410. package/dist/communication/dry-run-scenario.js.map +1 -0
  411. package/dist/communication/dry-run.d.ts +40 -0
  412. package/dist/communication/dry-run.d.ts.map +1 -0
  413. package/dist/communication/dry-run.js +92 -0
  414. package/dist/communication/dry-run.js.map +1 -0
  415. package/dist/communication/engine.d.ts +153 -0
  416. package/dist/communication/engine.d.ts.map +1 -0
  417. package/dist/communication/engine.js +480 -0
  418. package/dist/communication/engine.js.map +1 -0
  419. package/dist/communication/graph.d.ts +38 -0
  420. package/dist/communication/graph.d.ts.map +1 -0
  421. package/dist/communication/graph.js +45 -0
  422. package/dist/communication/graph.js.map +1 -0
  423. package/dist/communication/idempotency.d.ts +33 -0
  424. package/dist/communication/idempotency.d.ts.map +1 -0
  425. package/dist/communication/idempotency.js +23 -0
  426. package/dist/communication/idempotency.js.map +1 -0
  427. package/dist/communication/identity.d.ts +127 -0
  428. package/dist/communication/identity.d.ts.map +1 -0
  429. package/dist/communication/identity.js +105 -0
  430. package/dist/communication/identity.js.map +1 -0
  431. package/dist/communication/index.d.ts +66 -0
  432. package/dist/communication/index.d.ts.map +1 -0
  433. package/dist/communication/index.js +42 -0
  434. package/dist/communication/index.js.map +1 -0
  435. package/dist/communication/onboarding.d.ts +223 -0
  436. package/dist/communication/onboarding.d.ts.map +1 -0
  437. package/dist/communication/onboarding.js +287 -0
  438. package/dist/communication/onboarding.js.map +1 -0
  439. package/dist/communication/policy.d.ts +99 -0
  440. package/dist/communication/policy.d.ts.map +1 -0
  441. package/dist/communication/policy.js +13 -0
  442. package/dist/communication/policy.js.map +1 -0
  443. package/dist/communication/routing.d.ts +99 -0
  444. package/dist/communication/routing.d.ts.map +1 -0
  445. package/dist/communication/routing.js +73 -0
  446. package/dist/communication/routing.js.map +1 -0
  447. package/dist/communication/sender-profile.d.ts +100 -0
  448. package/dist/communication/sender-profile.d.ts.map +1 -0
  449. package/dist/communication/sender-profile.js +123 -0
  450. package/dist/communication/sender-profile.js.map +1 -0
  451. package/dist/communication/status.d.ts +48 -0
  452. package/dist/communication/status.d.ts.map +1 -0
  453. package/dist/communication/status.js +79 -0
  454. package/dist/communication/status.js.map +1 -0
  455. package/dist/communication/stores/onboarding.d.ts +88 -0
  456. package/dist/communication/stores/onboarding.d.ts.map +1 -0
  457. package/dist/communication/stores/onboarding.js +127 -0
  458. package/dist/communication/stores/onboarding.js.map +1 -0
  459. package/dist/communication/stores/postgres.d.ts +81 -0
  460. package/dist/communication/stores/postgres.d.ts.map +1 -0
  461. package/dist/communication/stores/postgres.js +453 -0
  462. package/dist/communication/stores/postgres.js.map +1 -0
  463. package/dist/communication/stores/routing.d.ts +169 -0
  464. package/dist/communication/stores/routing.d.ts.map +1 -0
  465. package/dist/communication/stores/routing.js +324 -0
  466. package/dist/communication/stores/routing.js.map +1 -0
  467. package/dist/communication/stores/secrets.d.ts +89 -0
  468. package/dist/communication/stores/secrets.d.ts.map +1 -0
  469. package/dist/communication/stores/secrets.js +122 -0
  470. package/dist/communication/stores/secrets.js.map +1 -0
  471. package/dist/communication/template-provider.d.ts +85 -0
  472. package/dist/communication/template-provider.d.ts.map +1 -0
  473. package/dist/communication/template-provider.js +21 -0
  474. package/dist/communication/template-provider.js.map +1 -0
  475. package/dist/communication/template.d.ts +87 -0
  476. package/dist/communication/template.d.ts.map +1 -0
  477. package/dist/communication/template.js +59 -0
  478. package/dist/communication/template.js.map +1 -0
  479. package/dist/communication/webhook-subscription.d.ts +156 -0
  480. package/dist/communication/webhook-subscription.d.ts.map +1 -0
  481. package/dist/communication/webhook-subscription.js +252 -0
  482. package/dist/communication/webhook-subscription.js.map +1 -0
  483. package/dist/communication/webhook.d.ts +121 -0
  484. package/dist/communication/webhook.d.ts.map +1 -0
  485. package/dist/communication/webhook.js +283 -0
  486. package/dist/communication/webhook.js.map +1 -0
  487. package/dist/competence/repository.d.ts +147 -0
  488. package/dist/competence/repository.d.ts.map +1 -0
  489. package/dist/competence/repository.js +294 -0
  490. package/dist/competence/repository.js.map +1 -0
  491. package/dist/contacts/phone.d.ts +70 -0
  492. package/dist/contacts/phone.d.ts.map +1 -0
  493. package/dist/contacts/phone.js +186 -0
  494. package/dist/contacts/phone.js.map +1 -0
  495. package/dist/db/migrate.js +17 -11
  496. package/dist/db/migrate.js.map +1 -1
  497. package/dist/db/seed-catalog.d.ts +18 -0
  498. package/dist/db/seed-catalog.d.ts.map +1 -0
  499. package/dist/db/seed-catalog.js +45 -0
  500. package/dist/db/seed-catalog.js.map +1 -0
  501. package/dist/db/seed.js +16 -8
  502. package/dist/db/seed.js.map +1 -1
  503. package/dist/documents/repository.d.ts +97 -0
  504. package/dist/documents/repository.d.ts.map +1 -0
  505. package/dist/documents/repository.js +236 -0
  506. package/dist/documents/repository.js.map +1 -0
  507. package/dist/documents/requests.d.ts +73 -0
  508. package/dist/documents/requests.d.ts.map +1 -0
  509. package/dist/documents/requests.js +127 -0
  510. package/dist/documents/requests.js.map +1 -0
  511. package/dist/index.d.ts +113 -13
  512. package/dist/index.d.ts.map +1 -1
  513. package/dist/index.js +104 -8
  514. package/dist/index.js.map +1 -1
  515. package/dist/legal/company.d.ts +32 -0
  516. package/dist/legal/company.d.ts.map +1 -0
  517. package/dist/legal/company.js +33 -0
  518. package/dist/legal/company.js.map +1 -0
  519. package/dist/legal/documents.d.ts +30 -0
  520. package/dist/legal/documents.d.ts.map +1 -0
  521. package/dist/legal/documents.js +666 -0
  522. package/dist/legal/documents.js.map +1 -0
  523. package/dist/legal/index.d.ts +5 -0
  524. package/dist/legal/index.d.ts.map +1 -0
  525. package/dist/legal/index.js +4 -0
  526. package/dist/legal/index.js.map +1 -0
  527. package/dist/legal/types.d.ts +145 -0
  528. package/dist/legal/types.d.ts.map +1 -0
  529. package/dist/legal/types.js +31 -0
  530. package/dist/legal/types.js.map +1 -0
  531. package/dist/mail/auth-templates.d.ts +15 -0
  532. package/dist/mail/auth-templates.d.ts.map +1 -0
  533. package/dist/mail/auth-templates.js +26 -0
  534. package/dist/mail/auth-templates.js.map +1 -0
  535. package/dist/mail/dedup-store.d.ts +1 -24
  536. package/dist/mail/dedup-store.d.ts.map +1 -1
  537. package/dist/mail/dedup-store.js +9 -48
  538. package/dist/mail/dedup-store.js.map +1 -1
  539. package/dist/mail/index.d.ts +2 -1
  540. package/dist/mail/index.d.ts.map +1 -1
  541. package/dist/mail/index.js +13 -2
  542. package/dist/mail/index.js.map +1 -1
  543. package/dist/mail/provider.d.ts +2 -30
  544. package/dist/mail/provider.d.ts.map +1 -1
  545. package/dist/mail/provider.js +10 -246
  546. package/dist/mail/provider.js.map +1 -1
  547. package/dist/mail/resend.d.ts +2 -12
  548. package/dist/mail/resend.d.ts.map +1 -1
  549. package/dist/mail/resend.js +11 -17
  550. package/dist/mail/resend.js.map +1 -1
  551. package/dist/mail/sender-resolver.d.ts +1 -7
  552. package/dist/mail/sender-resolver.d.ts.map +1 -1
  553. package/dist/mail/sender-resolver.js +11 -10
  554. package/dist/mail/sender-resolver.js.map +1 -1
  555. package/dist/mail/template-renderer.d.ts +1 -9
  556. package/dist/mail/template-renderer.d.ts.map +1 -1
  557. package/dist/mail/template-renderer.js +10 -15
  558. package/dist/mail/template-renderer.js.map +1 -1
  559. package/dist/mail/transactional-outbound.d.ts +115 -0
  560. package/dist/mail/transactional-outbound.d.ts.map +1 -0
  561. package/dist/mail/transactional-outbound.js +113 -0
  562. package/dist/mail/transactional-outbound.js.map +1 -0
  563. package/dist/mail/types.d.ts +2 -142
  564. package/dist/mail/types.d.ts.map +1 -1
  565. package/dist/mail/types.js +1 -33
  566. package/dist/mail/types.js.map +1 -1
  567. package/dist/portal/provisioning.d.ts +58 -0
  568. package/dist/portal/provisioning.d.ts.map +1 -0
  569. package/dist/portal/provisioning.js +139 -0
  570. package/dist/portal/provisioning.js.map +1 -0
  571. package/dist/pricing-engine/canonical.d.ts +14 -0
  572. package/dist/pricing-engine/canonical.d.ts.map +1 -0
  573. package/dist/pricing-engine/canonical.js +39 -0
  574. package/dist/pricing-engine/canonical.js.map +1 -0
  575. package/dist/pricing-engine/errors.d.ts.map +1 -1
  576. package/dist/pricing-engine/errors.js +6 -1
  577. package/dist/pricing-engine/errors.js.map +1 -1
  578. package/dist/pricing-engine/index.d.ts +12 -2
  579. package/dist/pricing-engine/index.d.ts.map +1 -1
  580. package/dist/pricing-engine/index.js +6 -1
  581. package/dist/pricing-engine/index.js.map +1 -1
  582. package/dist/pricing-engine/pipeline.d.ts.map +1 -1
  583. package/dist/pricing-engine/pipeline.js +202 -28
  584. package/dist/pricing-engine/pipeline.js.map +1 -1
  585. package/dist/pricing-engine/shadow-adapter.d.ts +37 -0
  586. package/dist/pricing-engine/shadow-adapter.d.ts.map +1 -0
  587. package/dist/pricing-engine/shadow-adapter.js +75 -0
  588. package/dist/pricing-engine/shadow-adapter.js.map +1 -0
  589. package/dist/pricing-engine/shadow-diff.d.ts +26 -0
  590. package/dist/pricing-engine/shadow-diff.d.ts.map +1 -0
  591. package/dist/pricing-engine/shadow-diff.js +52 -0
  592. package/dist/pricing-engine/shadow-diff.js.map +1 -0
  593. package/dist/pricing-engine/shadow-facade.d.ts +42 -0
  594. package/dist/pricing-engine/shadow-facade.d.ts.map +1 -0
  595. package/dist/pricing-engine/shadow-facade.js +82 -0
  596. package/dist/pricing-engine/shadow-facade.js.map +1 -0
  597. package/dist/pricing-engine/shadow-legacy-types.d.ts +64 -0
  598. package/dist/pricing-engine/shadow-legacy-types.d.ts.map +1 -0
  599. package/dist/pricing-engine/shadow-legacy-types.js +18 -0
  600. package/dist/pricing-engine/shadow-legacy-types.js.map +1 -0
  601. package/dist/pricing-engine/shadow-metrics.d.ts +33 -0
  602. package/dist/pricing-engine/shadow-metrics.d.ts.map +1 -0
  603. package/dist/pricing-engine/shadow-metrics.js +31 -0
  604. package/dist/pricing-engine/shadow-metrics.js.map +1 -0
  605. package/dist/pricing-engine/shadow-normalizer.d.ts +17 -0
  606. package/dist/pricing-engine/shadow-normalizer.d.ts.map +1 -0
  607. package/dist/pricing-engine/shadow-normalizer.js +39 -0
  608. package/dist/pricing-engine/shadow-normalizer.js.map +1 -0
  609. package/dist/pricing-engine/types.d.ts +2 -0
  610. package/dist/pricing-engine/types.d.ts.map +1 -1
  611. package/dist/rbac/authorize.d.ts +12 -0
  612. package/dist/rbac/authorize.d.ts.map +1 -1
  613. package/dist/rbac/authorize.js +27 -0
  614. package/dist/rbac/authorize.js.map +1 -1
  615. package/dist/rbac/catalog.d.ts.map +1 -1
  616. package/dist/rbac/catalog.js +67 -1
  617. package/dist/rbac/catalog.js.map +1 -1
  618. package/dist/rbac/workload-provisioning.d.ts +66 -0
  619. package/dist/rbac/workload-provisioning.d.ts.map +1 -0
  620. package/dist/rbac/workload-provisioning.js +153 -0
  621. package/dist/rbac/workload-provisioning.js.map +1 -0
  622. package/dist/rbac/workload.d.ts +124 -0
  623. package/dist/rbac/workload.d.ts.map +1 -0
  624. package/dist/rbac/workload.js +184 -0
  625. package/dist/rbac/workload.js.map +1 -0
  626. package/dist/storage/checksum.d.ts +9 -0
  627. package/dist/storage/checksum.d.ts.map +1 -0
  628. package/dist/storage/checksum.js +12 -0
  629. package/dist/storage/checksum.js.map +1 -0
  630. package/dist/storage/key.d.ts +37 -0
  631. package/dist/storage/key.d.ts.map +1 -0
  632. package/dist/storage/key.js +67 -0
  633. package/dist/storage/key.js.map +1 -0
  634. package/dist/storage/local.d.ts +40 -0
  635. package/dist/storage/local.d.ts.map +1 -0
  636. package/dist/storage/local.js +96 -0
  637. package/dist/storage/local.js.map +1 -0
  638. package/dist/storage/r2.d.ts +43 -0
  639. package/dist/storage/r2.d.ts.map +1 -0
  640. package/dist/storage/r2.js +177 -0
  641. package/dist/storage/r2.js.map +1 -0
  642. package/dist/storage/registry.d.ts +23 -0
  643. package/dist/storage/registry.d.ts.map +1 -0
  644. package/dist/storage/registry.js +37 -0
  645. package/dist/storage/registry.js.map +1 -0
  646. package/dist/storage/types.d.ts +67 -0
  647. package/dist/storage/types.d.ts.map +1 -0
  648. package/dist/storage/types.js +45 -0
  649. package/dist/storage/types.js.map +1 -0
  650. package/dist/subscription-billing/provider/asaas.d.ts +14 -0
  651. package/dist/subscription-billing/provider/asaas.d.ts.map +1 -1
  652. package/dist/subscription-billing/provider/asaas.js +32 -7
  653. package/dist/subscription-billing/provider/asaas.js.map +1 -1
  654. package/dist/subscription-billing/provider/disabled.d.ts +9 -0
  655. package/dist/subscription-billing/provider/disabled.d.ts.map +1 -1
  656. package/dist/subscription-billing/provider/disabled.js +8 -0
  657. package/dist/subscription-billing/provider/disabled.js.map +1 -1
  658. package/dist/subscription-billing/provider/registry.d.ts +10 -0
  659. package/dist/subscription-billing/provider/registry.d.ts.map +1 -1
  660. package/dist/subscription-billing/provider/registry.js +17 -0
  661. package/dist/subscription-billing/provider/registry.js.map +1 -1
  662. package/dist/subscription-billing/service.d.ts +17 -1
  663. package/dist/subscription-billing/service.d.ts.map +1 -1
  664. package/dist/subscription-billing/service.js +57 -8
  665. package/dist/subscription-billing/service.js.map +1 -1
  666. package/dist/subscription-billing/types.d.ts +13 -0
  667. package/dist/subscription-billing/types.d.ts.map +1 -1
  668. package/dist/subscription-billing/types.js.map +1 -1
  669. package/dist/tenancy/provisioning.d.ts.map +1 -1
  670. package/dist/tenancy/provisioning.js +32 -8
  671. package/dist/tenancy/provisioning.js.map +1 -1
  672. package/dist/users/repository.d.ts +38 -0
  673. package/dist/users/repository.d.ts.map +1 -1
  674. package/dist/users/repository.js +118 -3
  675. package/dist/users/repository.js.map +1 -1
  676. package/dist/vault/repository.d.ts +67 -0
  677. package/dist/vault/repository.d.ts.map +1 -1
  678. package/dist/vault/repository.js +78 -0
  679. package/dist/vault/repository.js.map +1 -1
  680. package/package.json +19 -4
  681. package/src/db/migrations/0023_user_invite_activation.sql +15 -0
  682. package/src/db/migrations/0024_set_user_password_function.sql +32 -0
  683. package/src/db/migrations/0025_revoke_user_session_function.sql +28 -0
  684. package/src/db/migrations/0026_documents_and_competence.sql +353 -0
  685. package/src/db/migrations/0027_receivable_client_isolation.sql +58 -0
  686. package/src/db/migrations/0028_collection_engine.sql +94 -0
  687. package/src/db/migrations/0029_payment_rail.sql +107 -0
  688. package/src/db/migrations/0030_provider_account_uniqueness.sql +22 -0
  689. package/src/db/migrations/0031_provider_account_environment_scope.sql +21 -0
  690. package/src/db/migrations/0032_settlement_reversal.sql +76 -0
  691. package/src/db/migrations/0033_receivable_idempotency.sql +28 -0
  692. package/src/db/migrations/0034_payment_customer_reconcile.sql +30 -0
  693. package/src/db/migrations/0035_payment_account_environments.sql +61 -0
  694. package/src/db/migrations/0036_primary_backfill_under_force_rls.sql +41 -0
  695. package/src/db/migrations/0037_receivable_generation_source.sql +29 -0
  696. package/src/db/migrations/0038_notification_channels.sql +175 -0
  697. package/src/db/migrations/0039_communication_dispatch_claim.sql +193 -0
  698. package/src/db/migrations/0040_communication_unknown_outcome.sql +99 -0
  699. package/src/db/migrations/0041_channel_binding_routing.sql +146 -0
  700. package/src/db/migrations/0042_channel_route_read_isolation.sql +165 -0
  701. package/src/db/migrations/0043_workload_identity.sql +105 -0
  702. package/src/db/migrations/0044_channel_onboarding_session.sql +96 -0
  703. package/dist/cjs/mail/resend-client.js +0 -103
  704. package/dist/cjs/mail/resend-client.js.map +0 -1
  705. package/dist/mail/resend-client.d.ts +0 -16
  706. package/dist/mail/resend-client.d.ts.map +0 -1
  707. package/dist/mail/resend-client.js +0 -100
  708. package/dist/mail/resend-client.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar-repository.js","sourceRoot":"","sources":["../../src/billing/ar-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { Tx } from '../db/client.js';
2
+ import { type GenerationResult } from './ar-repository.js';
3
+ /**
4
+ * A competência que o automático processa em `today`: a CORRENTE, e só ela.
5
+ *
6
+ * Deliberadamente míope. A alternativa — varrer para trás procurando
7
+ * competências não geradas — transformaria a primeira execução do scheduler num
8
+ * backfill: dezenas de meses de dívida nascendo de uma vez para clientes que
9
+ * nunca foram cobrados por eles, cada um já vencido, cada um disparando a régua
10
+ * inteira no mesmo dia. Backfill histórico é operação separada, explícita e
11
+ * autorizada — nunca efeito colateral de ligar um cron.
12
+ *
13
+ * A recuperação de falha continua existindo, dentro do mês: o job roda todo dia
14
+ * e é idempotente, então cair na terça e voltar na quarta não perde nada.
15
+ */
16
+ export declare function competenceFor(today: string): string;
17
+ /**
18
+ * O que o automático FARIA nesta competência, sem escrever nada.
19
+ *
20
+ * Existe para responder à única pergunta que autoriza ligar o scheduler: ele vai
21
+ * criar o que eu espero? Um número só ("42 acordos") não responde — por isso os
22
+ * motivos vêm separados. Se `wouldCreate` vier maior que o número de honorários
23
+ * mensais ativos que o escritório reconhece, a resposta é não ligar.
24
+ */
25
+ export interface AutoGenerationPreview {
26
+ competence: string;
27
+ /** Todo acordo não-excluído do tenant, qualquer situação. */
28
+ agreements: number;
29
+ /** Ativos, vigentes e no ciclo desta competência. */
30
+ eligible: number;
31
+ /** Elegíveis que ainda não têm recebível nesta competência. */
32
+ wouldCreate: number;
33
+ /** Elegíveis que já têm recebível nesta competência (manual ou automático). */
34
+ wouldSkipExisting: number;
35
+ wouldSkipSuspended: number;
36
+ wouldSkipCanceled: number;
37
+ /** Fora de vigência: começa depois ou terminou antes desta competência. */
38
+ wouldSkipOutOfTerm: number;
39
+ /** Vigente, mas a periodicidade não cai neste mês (ou é avulso/sem âncora). */
40
+ wouldSkipOffCycle: number;
41
+ /**
42
+ * Dos que seriam criados, quantos já nasceriam com o vencimento no passado.
43
+ *
44
+ * Não é um erro — um acordo com vencimento no dia 5 processado no dia 20 é
45
+ * exatamente isso. É um AVISO: cada um desses dispara de uma vez todas as
46
+ * etapas da régua cujo prazo já passou, e é um número que quem autoriza a
47
+ * ativação precisa ver antes, não depois de os e-mails saírem.
48
+ */
49
+ wouldCreateAlreadyOverdue: number;
50
+ }
51
+ /**
52
+ * Read-only por construção: só um SELECT, nenhuma escrita, nenhum lock.
53
+ *
54
+ * Tenant-scoped por RLS, como todo o resto do core — rodar isto exige
55
+ * `withContext`, e o que ele enxerga é o recorte de um tenant só.
56
+ */
57
+ export declare function previewAutoGeneration(tx: Tx, today: string): Promise<AutoGenerationPreview>;
58
+ export interface AutoGenerationResult extends GenerationResult {
59
+ /**
60
+ * `false` quando outra execução já detinha o lock desta competência.
61
+ *
62
+ * Não é falha: é a segunda instância descobrindo que não tem trabalho. O
63
+ * contador precisa existir para que "criou zero" não seja lido como "o motor
64
+ * não gerou nada" quando na verdade foi outro processo que gerou.
65
+ */
66
+ ran: boolean;
67
+ }
68
+ /**
69
+ * Gera a competência corrente do tenant, marcando a procedência e auditando.
70
+ *
71
+ * Três camadas contra duplicidade, nesta ordem de confiança:
72
+ *
73
+ * 1. O índice único parcial `(tenant, fee_agreement, competence)` — a garantia
74
+ * REAL. Vale contra tudo: dois crons, retry, redeploy, manual concorrente,
75
+ * e contra qualquer caminho de código que ainda nem foi escrito.
76
+ * 2. O `ON CONFLICT DO NOTHING` no INSERT, que transforma a violação em "pular"
77
+ * em vez de derrubar o lote inteiro por causa de um acordo.
78
+ * 3. O advisory lock daqui, que é só economia: evita que duas instâncias
79
+ * percorram os mesmos acordos para descobrir, uma a uma, que não há nada a
80
+ * fazer. Se ele falhasse por completo, o resultado continuaria correto.
81
+ *
82
+ * A ordem importa para quem for mexer nisto depois: nunca troque (1) por (3). Um
83
+ * lock protege contra concorrência que ele consegue observar; a constraint
84
+ * protege contra a que ninguém previu.
85
+ */
86
+ export declare function runAutoGeneration(tx: Tx, today: string): Promise<AutoGenerationResult>;
87
+ //# sourceMappingURL=auto-generation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-generation.d.ts","sourceRoot":"","sources":["../../src/billing/auto-generation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AA2B5B;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnD;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAcD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqEjG;AAID,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D;;;;;;OAMG;IACH,GAAG,EAAE,OAAO,CAAC;CACd;AAmBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAoC5F"}
@@ -0,0 +1,181 @@
1
+ import { appendAudit } from '../audit/audit.js';
2
+ import { assertCompetence, classifyFeeForCompetence, dueDateFor, generateReceivablesForCompetence, } from './ar-repository.js';
3
+ /**
4
+ * Geração automática dos recebíveis recorrentes.
5
+ *
6
+ * O escritório não deve depender de alguém lembrar de apertar um botão todo mês
7
+ * para que os honorários virem dívida cobrável. Este módulo é o gatilho
8
+ * automático — e nada além do gatilho: quem gera é
9
+ * `generateReceivablesForCompetence`, exatamente o mesmo motor que a ação
10
+ * "Gerar competência manualmente" chama.
11
+ *
12
+ * Isso é deliberado e não negociável. Duas implementações da mesma regra
13
+ * divergiriam no primeiro caso de borda, e a divergência apareceria como dois
14
+ * valores diferentes para a mesma dívida do mesmo cliente. Aqui só existem duas
15
+ * coisas que o manual não tem: QUAL competência processar (o manual pergunta ao
16
+ * operador; o automático deriva do calendário) e a marca de procedência.
17
+ *
18
+ * Fronteira dura com o provider: nada neste arquivo fala com gateway de
19
+ * pagamento. Gerar recebível é registrar que o cliente DEVE; emitir cobrança é
20
+ * outro passo, com outras grades (`live-guard.ts`). Um não implica o outro, e é
21
+ * por isso que a automação pode ser ligada com a emissão live desligada.
22
+ */
23
+ // ── Competência a partir do calendário ───────────────────────────────────────
24
+ const ISO_DATE_RE = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/;
25
+ /**
26
+ * A competência que o automático processa em `today`: a CORRENTE, e só ela.
27
+ *
28
+ * Deliberadamente míope. A alternativa — varrer para trás procurando
29
+ * competências não geradas — transformaria a primeira execução do scheduler num
30
+ * backfill: dezenas de meses de dívida nascendo de uma vez para clientes que
31
+ * nunca foram cobrados por eles, cada um já vencido, cada um disparando a régua
32
+ * inteira no mesmo dia. Backfill histórico é operação separada, explícita e
33
+ * autorizada — nunca efeito colateral de ligar um cron.
34
+ *
35
+ * A recuperação de falha continua existindo, dentro do mês: o job roda todo dia
36
+ * e é idempotente, então cair na terça e voltar na quarta não perde nada.
37
+ */
38
+ export function competenceFor(today) {
39
+ if (!ISO_DATE_RE.test(today)) {
40
+ throw new Error('Data de referência deve estar no formato YYYY-MM-DD');
41
+ }
42
+ return today.slice(0, 7);
43
+ }
44
+ const isoDay = (d) => (d ? d.toISOString().slice(0, 10) : null);
45
+ /**
46
+ * Read-only por construção: só um SELECT, nenhuma escrita, nenhum lock.
47
+ *
48
+ * Tenant-scoped por RLS, como todo o resto do core — rodar isto exige
49
+ * `withContext`, e o que ele enxerga é o recorte de um tenant só.
50
+ */
51
+ export async function previewAutoGeneration(tx, today) {
52
+ const competence = competenceFor(today);
53
+ assertCompetence(competence);
54
+ const fees = await tx `
55
+ SELECT f.id, f.periodicity, f.status, f.due_day, f.starts_on, f.ends_on,
56
+ EXISTS (
57
+ SELECT 1 FROM receivable r
58
+ WHERE r.fee_agreement_id = f.id
59
+ AND r.competence = ${competence}
60
+ AND r.deleted_at IS NULL
61
+ ) AS has_receivable
62
+ FROM fee_agreement f
63
+ WHERE f.deleted_at IS NULL
64
+ `;
65
+ const preview = {
66
+ competence,
67
+ agreements: fees.length,
68
+ eligible: 0,
69
+ wouldCreate: 0,
70
+ wouldSkipExisting: 0,
71
+ wouldSkipSuspended: 0,
72
+ wouldSkipCanceled: 0,
73
+ wouldSkipOutOfTerm: 0,
74
+ wouldSkipOffCycle: 0,
75
+ wouldCreateAlreadyOverdue: 0,
76
+ };
77
+ for (const fee of fees) {
78
+ const verdict = classifyFeeForCompetence({
79
+ periodicity: fee.periodicity,
80
+ status: fee.status,
81
+ startsOn: isoDay(fee.starts_on),
82
+ endsOn: isoDay(fee.ends_on),
83
+ }, competence);
84
+ switch (verdict) {
85
+ case 'eligible':
86
+ preview.eligible += 1;
87
+ if (fee.has_receivable) {
88
+ preview.wouldSkipExisting += 1;
89
+ }
90
+ else {
91
+ preview.wouldCreate += 1;
92
+ if (dueDateFor(competence, fee.due_day) < today) {
93
+ preview.wouldCreateAlreadyOverdue += 1;
94
+ }
95
+ }
96
+ break;
97
+ case 'suspended':
98
+ preview.wouldSkipSuspended += 1;
99
+ break;
100
+ case 'canceled':
101
+ preview.wouldSkipCanceled += 1;
102
+ break;
103
+ case 'before_term':
104
+ case 'after_term':
105
+ preview.wouldSkipOutOfTerm += 1;
106
+ break;
107
+ default:
108
+ preview.wouldSkipOffCycle += 1;
109
+ break;
110
+ }
111
+ }
112
+ return preview;
113
+ }
114
+ /**
115
+ * Chave do advisory lock: uma por (tenant, competência).
116
+ *
117
+ * `hashtext` do Postgres, não um hash nosso, porque a chave precisa ser a mesma
118
+ * em qualquer processo — e um hash em JS ficaria refém da versão do runtime que
119
+ * cada instância está rodando.
120
+ */
121
+ async function tryLock(tx, competence) {
122
+ const rows = await tx `
123
+ SELECT pg_try_advisory_xact_lock(
124
+ hashtext('auto-receivable-generation'),
125
+ hashtext(current_setting('app.current_tenant', true) || ':' || ${competence})
126
+ ) AS locked
127
+ `;
128
+ return rows[0]?.locked === true;
129
+ }
130
+ /**
131
+ * Gera a competência corrente do tenant, marcando a procedência e auditando.
132
+ *
133
+ * Três camadas contra duplicidade, nesta ordem de confiança:
134
+ *
135
+ * 1. O índice único parcial `(tenant, fee_agreement, competence)` — a garantia
136
+ * REAL. Vale contra tudo: dois crons, retry, redeploy, manual concorrente,
137
+ * e contra qualquer caminho de código que ainda nem foi escrito.
138
+ * 2. O `ON CONFLICT DO NOTHING` no INSERT, que transforma a violação em "pular"
139
+ * em vez de derrubar o lote inteiro por causa de um acordo.
140
+ * 3. O advisory lock daqui, que é só economia: evita que duas instâncias
141
+ * percorram os mesmos acordos para descobrir, uma a uma, que não há nada a
142
+ * fazer. Se ele falhasse por completo, o resultado continuaria correto.
143
+ *
144
+ * A ordem importa para quem for mexer nisto depois: nunca troque (1) por (3). Um
145
+ * lock protege contra concorrência que ele consegue observar; a constraint
146
+ * protege contra a que ninguém previu.
147
+ */
148
+ export async function runAutoGeneration(tx, today) {
149
+ const competence = competenceFor(today);
150
+ if (!(await tryLock(tx, competence))) {
151
+ return { competence, created: [], skipped: 0, notApplicable: 0, ran: false };
152
+ }
153
+ const result = await generateReceivablesForCompetence(tx, {
154
+ competence,
155
+ source: 'automatic',
156
+ // Sem `createdBy`: não houve usuário. Quem responde pela linha é o
157
+ // `actor_type = 'automation'` da trilha, não um humano escolhido a esmo —
158
+ // atribuir isto ao último admin que logou seria falsificar a autoria.
159
+ createdBy: null,
160
+ });
161
+ // Auditar inclusive o lote vazio. "O cron rodou e não criou nada" e "o cron
162
+ // não rodou" produzem o mesmo estado no banco e exigem investigações opostas;
163
+ // sem esta linha, não há como distinguir os dois depois do fato.
164
+ await appendAudit(tx, {
165
+ actorType: 'automation',
166
+ actorId: null,
167
+ action: 'receivables_generated_automatically',
168
+ resourceType: 'receivable',
169
+ metadata: {
170
+ competence,
171
+ created: result.created.length,
172
+ skipped: result.skipped,
173
+ notApplicable: result.notApplicable,
174
+ // Ids, não valores nem nomes: a trilha precisa permitir chegar à linha,
175
+ // não reproduzir a dívida dentro dela.
176
+ receivableIds: result.created.map((r) => r.id),
177
+ },
178
+ });
179
+ return { ...result, ran: true };
180
+ }
181
+ //# sourceMappingURL=auto-generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-generation.js","sourceRoot":"","sources":["../../src/billing/auto-generation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Grades de proteção entre a aplicação e dinheiro real.
3
+ *
4
+ * O isolamento de ambiente já era bom: `environment` é atributo da CONTA do
5
+ * tenant, e a base do gateway sai de um mapa único — não há como um `sandbox`
6
+ * apontar para a URL de produção. O que não existia era proteção contra o outro
7
+ * lado do erro: **qual aplicação** está falando com a conta live.
8
+ *
9
+ * Nada impedia que um deploy de homologação, apontado ao mesmo banco, emitisse
10
+ * cobrança de verdade; nem que uma suíte de teste, achando uma conta `live` no
11
+ * banco, criasse dívida real para alguém. Ambiente certo na conta e ambiente
12
+ * errado na aplicação produzem exatamente o mesmo estrago.
13
+ *
14
+ * Por isso a decisão é composta: `sandbox` passa sempre; `live` exige que a
15
+ * aplicação SEJA produção, que não esteja sob test runner, e — para criar
16
+ * cobrança nova — que a chave geral esteja ligada.
17
+ */
18
+ export interface LiveRuntime {
19
+ /** Como a aplicação se declara. `production` é o único que autoriza `live`. */
20
+ appEnv: string;
21
+ /** Estamos dentro de uma suíte de teste? */
22
+ isTestRunner: boolean;
23
+ /** Chave geral: pausa a EMISSÃO nova sem derrubar o resto. */
24
+ liveChargesDisabled: boolean;
25
+ /**
26
+ * Autorização de UMA operação nomeada, com a chave geral ARMADA.
27
+ *
28
+ * Existe para que uma emissão live controlada não exija desligar a chave
29
+ * geral: desligar seria abrir uma janela em que qualquer requisição, cron ou
30
+ * retry concorrente também poderia emitir. Aqui a janela tem o tamanho de uma
31
+ * operação — a que estiver nomeada, e nenhuma outra.
32
+ */
33
+ liveChargeAllowScope: string | null;
34
+ }
35
+ /**
36
+ * Lê o runtime a partir do ambiente do processo.
37
+ *
38
+ * `BARUK_APP_ENV` existe separado de `NODE_ENV` porque os dois respondem
39
+ * perguntas diferentes: `NODE_ENV=production` é o modo de build de QUALQUER
40
+ * deploy — inclusive homologação, inclusive um cron. Sem a distinção, o guard
41
+ * aprovaria live num ambiente de homologação, que é o caso que ele existe para
42
+ * barrar.
43
+ *
44
+ * Por isso não há mais fallback para `NODE_ENV`. Ele existia e era uma porta
45
+ * aberta: os dois cron jobs financeiros rodam com `NODE_ENV=production` e SEM
46
+ * `BARUK_APP_ENV`, então herdavam autoridade de produção por omissão — bastava
47
+ * alguém ligar o modo live para que cobrança real passasse por uma grade que
48
+ * ninguém configurou.
49
+ *
50
+ * Quem não declara não ganha permissão: ausência vira `unknown`, e `unknown`
51
+ * não é `production`. Configuração desconhecida bloqueia; nunca autoriza.
52
+ */
53
+ export declare function readLiveRuntime(env?: NodeJS.ProcessEnv): LiveRuntime;
54
+ export type LiveGuardAction = 'resolve' | 'charge';
55
+ /**
56
+ * Esta aplicação pode falar com esta conta, para esta ação?
57
+ *
58
+ * `resolve` cobre qualquer uso do adapter — inclusive receber webhook, que uma
59
+ * aplicação de homologação não deve processar de uma conta live. `charge` é mais
60
+ * estrito: soma a chave geral, porque pausar emissão nova não pode significar
61
+ * parar de reconhecer o dinheiro que já entrou.
62
+ */
63
+ export declare function assertLiveProviderAllowed(environment: string, runtime: LiveRuntime, action: LiveGuardAction, scope?: string | null): void;
64
+ //# sourceMappingURL=live-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-guard.d.ts","sourceRoot":"","sources":["../../src/billing/live-guard.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,8DAA8D;IAC9D,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;;;;;OAOG;IACH,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,CAUjF;AAMD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,eAAe,EACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,IAAI,CAkCN"}
@@ -0,0 +1,68 @@
1
+ import { ConflictError, ValidationError } from '@baruk/shared';
2
+ /**
3
+ * Lê o runtime a partir do ambiente do processo.
4
+ *
5
+ * `BARUK_APP_ENV` existe separado de `NODE_ENV` porque os dois respondem
6
+ * perguntas diferentes: `NODE_ENV=production` é o modo de build de QUALQUER
7
+ * deploy — inclusive homologação, inclusive um cron. Sem a distinção, o guard
8
+ * aprovaria live num ambiente de homologação, que é o caso que ele existe para
9
+ * barrar.
10
+ *
11
+ * Por isso não há mais fallback para `NODE_ENV`. Ele existia e era uma porta
12
+ * aberta: os dois cron jobs financeiros rodam com `NODE_ENV=production` e SEM
13
+ * `BARUK_APP_ENV`, então herdavam autoridade de produção por omissão — bastava
14
+ * alguém ligar o modo live para que cobrança real passasse por uma grade que
15
+ * ninguém configurou.
16
+ *
17
+ * Quem não declara não ganha permissão: ausência vira `unknown`, e `unknown`
18
+ * não é `production`. Configuração desconhecida bloqueia; nunca autoriza.
19
+ */
20
+ export function readLiveRuntime(env = process.env) {
21
+ return {
22
+ appEnv: env.BARUK_APP_ENV?.trim() || 'unknown',
23
+ // `VITEST` é posto pelo próprio runner. Depender só de `NODE_ENV=test`
24
+ // deixaria passar uma suíte rodada sem essa variável — e o custo do engano
25
+ // aqui é cobrança real emitida por um teste.
26
+ isTestRunner: env.NODE_ENV === 'test' || Boolean(env.VITEST) || Boolean(env.JEST_WORKER_ID),
27
+ liveChargesDisabled: isTruthy(env.BARUK_LIVE_CHARGES_DISABLED),
28
+ liveChargeAllowScope: env.BARUK_LIVE_CHARGE_ALLOW_SCOPE?.trim() || null,
29
+ };
30
+ }
31
+ function isTruthy(v) {
32
+ return v === '1' || v?.toLowerCase() === 'true';
33
+ }
34
+ /**
35
+ * Esta aplicação pode falar com esta conta, para esta ação?
36
+ *
37
+ * `resolve` cobre qualquer uso do adapter — inclusive receber webhook, que uma
38
+ * aplicação de homologação não deve processar de uma conta live. `charge` é mais
39
+ * estrito: soma a chave geral, porque pausar emissão nova não pode significar
40
+ * parar de reconhecer o dinheiro que já entrou.
41
+ */
42
+ export function assertLiveProviderAllowed(environment, runtime, action, scope) {
43
+ if (environment !== 'live')
44
+ return;
45
+ if (runtime.isTestRunner) {
46
+ throw new ValidationError('Teste automatizado não opera conta de pagamento em produção. ' +
47
+ 'Use uma conta `sandbox` no cenário.');
48
+ }
49
+ if (runtime.appEnv !== 'production') {
50
+ throw new ValidationError(`Esta aplicação está declarada como "${runtime.appEnv}" e não pode usar a conta de ` +
51
+ 'pagamento em produção. Conta `live` só opera em ambiente de produção.');
52
+ }
53
+ if (action === 'charge' && runtime.liveChargesDisabled) {
54
+ // Exceção nomeada: a chave geral continua ARMADA, e exatamente uma operação
55
+ // passa. Vem DEPOIS das checagens de ambiente e de test runner de propósito
56
+ // — nomear um escopo não pode comprar autoridade que a aplicação não tem.
57
+ // Comparação estrita e sem default: escopo vazio dos dois lados não casa,
58
+ // senão "não configurado" viraria "tudo liberado".
59
+ if (runtime.liveChargeAllowScope && scope && scope === runtime.liveChargeAllowScope) {
60
+ return;
61
+ }
62
+ // Conflito, não erro de validação: não há nada errado com o pedido — a
63
+ // emissão está pausada por decisão operacional, e volta quando for religada.
64
+ throw new ConflictError('A emissão de cobranças em produção está temporariamente pausada. ' +
65
+ 'Consultas, pagamentos e baixas seguem funcionando normalmente.', { code: 'LIVE_CHARGES_DISABLED' });
66
+ }
67
+ }
68
+ //# sourceMappingURL=live-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-guard.js","sourceRoot":"","sources":["../../src/billing/live-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAsC/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,SAAS;QAC9C,uEAAuE;QACvE,2EAA2E;QAC3E,6CAA6C;QAC7C,YAAY,EAAE,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3F,mBAAmB,EAAE,QAAQ,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC9D,oBAAoB,EAAE,GAAG,CAAC,6BAA6B,EAAE,IAAI,EAAE,IAAI,IAAI;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,CAAqB;IACrC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC;AAClD,CAAC;AAID;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAAmB,EACnB,OAAoB,EACpB,MAAuB,EACvB,KAAqB;IAErB,IAAI,WAAW,KAAK,MAAM;QAAE,OAAO;IAEnC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,eAAe,CACvB,+DAA+D;YAC7D,qCAAqC,CACxC,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpC,MAAM,IAAI,eAAe,CACvB,uCAAuC,OAAO,CAAC,MAAM,+BAA+B;YAClF,uEAAuE,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACvD,4EAA4E;QAC5E,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,mDAAmD;QACnD,IAAI,OAAO,CAAC,oBAAoB,IAAI,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACpF,OAAO;QACT,CAAC;QACD,uEAAuE;QACvE,6EAA6E;QAC7E,MAAM,IAAI,aAAa,CACrB,mEAAmE;YACjE,gEAAgE,EAClE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAClC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Quais meios de pagamento uma cobrança realmente oferece.
3
+ *
4
+ * Derivado das instruções que o gateway devolveu — nunca do `method` pedido na
5
+ * emissão. Os dois divergem na prática: pede-se PIX e o Asaas devolve também o
6
+ * boleto e o link da fatura. Mostrar o `method` faria a tela anunciar um meio a
7
+ * menos do que o cliente recebeu no e-mail.
8
+ *
9
+ * Mora no domínio porque a mesma pergunta é feita pela lista do console, pelo
10
+ * detalhe do recebível e pelo Portal. Já havia uma cópia na página de Cobranças;
11
+ * a segunda cópia é o momento em que duas telas passam a discordar sobre o que o
12
+ * cliente pode fazer.
13
+ */
14
+ export type PaymentMean = 'pix' | 'boleto' | 'link';
15
+ export declare function availableMeansOf(instructions: Record<string, unknown> | null): PaymentMean[];
16
+ export declare function meanLabel(m: PaymentMean): string;
17
+ //# sourceMappingURL=payment-means-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-means-catalog.d.ts","sourceRoot":"","sources":["../../src/billing/payment-means-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,WAAW,EAAE,CAW5F;AAID,wBAAgB,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAEhD"}
@@ -0,0 +1,21 @@
1
+ export function availableMeansOf(instructions) {
2
+ if (!instructions)
3
+ return [];
4
+ const has = (k) => Boolean(instructions[k]);
5
+ const means = [];
6
+ if (has('pixPayload') || has('pixQrCodeImage'))
7
+ means.push('pix');
8
+ // `bankSlipUrl` é o nome do Asaas e `boletoUrl` o nome do contrato interno.
9
+ // Cobranças emitidas antes da normalização guardaram o primeiro; ignorá-lo
10
+ // faria o boleto sumir da tela para quem já tem um.
11
+ if (has('boletoUrl') || has('bankSlipUrl') || has('identificationField'))
12
+ means.push('boleto');
13
+ if (has('invoiceUrl'))
14
+ means.push('link');
15
+ return means;
16
+ }
17
+ const LABEL = { pix: 'PIX', boleto: 'Boleto', link: 'Link' };
18
+ export function meanLabel(m) {
19
+ return LABEL[m];
20
+ }
21
+ //# sourceMappingURL=payment-means-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-means-catalog.js","sourceRoot":"","sources":["../../src/billing/payment-means-catalog.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,gBAAgB,CAAC,YAA4C;IAC3E,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,4EAA4E;IAC5E,2EAA2E;IAC3E,oDAAoD;IACpD,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,qBAAqB,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/F,IAAI,GAAG,CAAC,YAAY,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,KAAK,GAAgC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAE1F,MAAM,UAAU,SAAS,CAAC,CAAc;IACtC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { Tx } from '../db/client.js';
2
+ import type { PaymentBlock } from '../collection/payment-block.js';
3
+ import { type PayableCharge } from './payment-rail.js';
4
+ /**
5
+ * Meios de pagamento de uma cobrança — uma implementação, todos os canais.
6
+ *
7
+ * Antes desta função a mesma lógica existia em duas cópias, no cron de cobrança
8
+ * e na rota manual, com um comentário pedindo que não divergissem: *"mesmo
9
+ * resolvedor da rota manual: o cron não pode mandar um e-mail diferente do que o
10
+ * escritório vê ao simular o ciclo"*. Um pedido em comentário não é garantia. O
11
+ * console administrativo e o Portal seriam a terceira e a quarta cópia, e a
12
+ * primeira divergência apareceria como "o cliente recebeu um PIX diferente do
13
+ * que a tela mostra".
14
+ *
15
+ * A regra que justifica o lugar: **como se paga é assunto do domínio
16
+ * financeiro**, não do canal. O canal escolhe o que renderizar.
17
+ */
18
+ export interface PaymentMeansOptions {
19
+ /**
20
+ * Base pública da API, para servir o QR como imagem.
21
+ *
22
+ * Obrigatória e sem default: o QR do PIX precisa de URL `https` porque cliente
23
+ * de e-mail não desenha `data:` URI — foi o defeito da PR #90. Um default
24
+ * silencioso reintroduziria exatamente esse caminho.
25
+ */
26
+ publicApiBase: string;
27
+ tenantId: string;
28
+ }
29
+ /**
30
+ * Converte as instruções que o gateway devolveu no bloco agnóstico de canal.
31
+ *
32
+ * Devolve `null` quando não há **nenhum** meio de pagamento: um bloco vazio
33
+ * renderizaria um "Pagar agora" que não paga, o que é pior que não mostrar nada.
34
+ */
35
+ export declare function paymentMeansOfCharge(charge: Pick<PayableCharge, 'id' | 'instructions'>, opts: PaymentMeansOptions): PaymentBlock | null;
36
+ /** Meios de pagamento da cobrança VIVA de um recebível, se houver alguma. */
37
+ export declare function paymentMeansForReceivable(tx: Tx, receivableId: string, opts: PaymentMeansOptions): Promise<PaymentBlock | null>;
38
+ //# sourceMappingURL=payment-means.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-means.d.ts","sourceRoot":"","sources":["../../src/billing/payment-means.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,cAAc,CAAC,EAClD,IAAI,EAAE,mBAAmB,GACxB,YAAY,GAAG,IAAI,CAarB;AAED,6EAA6E;AAC7E,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,EAAE,EACN,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAI9B"}
@@ -0,0 +1,29 @@
1
+ import { findActiveCharge } from './payment-rail.js';
2
+ /**
3
+ * Converte as instruções que o gateway devolveu no bloco agnóstico de canal.
4
+ *
5
+ * Devolve `null` quando não há **nenhum** meio de pagamento: um bloco vazio
6
+ * renderizaria um "Pagar agora" que não paga, o que é pior que não mostrar nada.
7
+ */
8
+ export function paymentMeansOfCharge(charge, opts) {
9
+ const i = charge.instructions;
10
+ const block = {
11
+ url: i.invoiceUrl,
12
+ pixPayload: i.pixPayload,
13
+ // URL pública em vez do base64, pela razão registrada em `PaymentMeansOptions`.
14
+ pixQrCodeImage: i.pixQrCodeImage
15
+ ? `${opts.publicApiBase}/v1/billing/charges/${opts.tenantId}/${charge.id}/pix-qr.png`
16
+ : undefined,
17
+ boletoUrl: i.boletoUrl,
18
+ identificationField: i.identificationField,
19
+ };
20
+ return Object.values(block).some(Boolean) ? block : null;
21
+ }
22
+ /** Meios de pagamento da cobrança VIVA de um recebível, se houver alguma. */
23
+ export async function paymentMeansForReceivable(tx, receivableId, opts) {
24
+ const charge = await findActiveCharge(tx, receivableId);
25
+ if (!charge)
26
+ return null;
27
+ return paymentMeansOfCharge(charge, opts);
28
+ }
29
+ //# sourceMappingURL=payment-means.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-means.js","sourceRoot":"","sources":["../../src/billing/payment-means.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,mBAAmB,CAAC;AA6BzE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAkD,EAClD,IAAyB;IAEzB,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;IAC9B,MAAM,KAAK,GAAiB;QAC1B,GAAG,EAAE,CAAC,CAAC,UAAU;QACjB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,gFAAgF;QAChF,cAAc,EAAE,CAAC,CAAC,cAAc;YAC9B,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,uBAAuB,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,aAAa;YACrF,CAAC,CAAC,SAAS;QACb,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;KAC3C,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,EAAM,EACN,YAAoB,EACpB,IAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC"}