@baruk/core 0.3.1 → 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 (696) hide show
  1. package/.baruk-provenance.json +10 -0
  2. package/CHANGELOG.md +85 -0
  3. package/dist/auth/password-reset.d.ts +30 -1
  4. package/dist/auth/password-reset.d.ts.map +1 -1
  5. package/dist/auth/password-reset.js +139 -11
  6. package/dist/auth/password-reset.js.map +1 -1
  7. package/dist/auth/service.d.ts +39 -2
  8. package/dist/auth/service.d.ts.map +1 -1
  9. package/dist/auth/service.js +75 -10
  10. package/dist/auth/service.js.map +1 -1
  11. package/dist/billing/ar-repository.d.ts +334 -0
  12. package/dist/billing/ar-repository.d.ts.map +1 -0
  13. package/dist/billing/ar-repository.js +707 -0
  14. package/dist/billing/ar-repository.js.map +1 -0
  15. package/dist/billing/auto-generation.d.ts +87 -0
  16. package/dist/billing/auto-generation.d.ts.map +1 -0
  17. package/dist/billing/auto-generation.js +181 -0
  18. package/dist/billing/auto-generation.js.map +1 -0
  19. package/dist/billing/live-guard.d.ts +64 -0
  20. package/dist/billing/live-guard.d.ts.map +1 -0
  21. package/dist/billing/live-guard.js +68 -0
  22. package/dist/billing/live-guard.js.map +1 -0
  23. package/dist/billing/payment-means-catalog.d.ts +17 -0
  24. package/dist/billing/payment-means-catalog.d.ts.map +1 -0
  25. package/dist/billing/payment-means-catalog.js +21 -0
  26. package/dist/billing/payment-means-catalog.js.map +1 -0
  27. package/dist/billing/payment-means.d.ts +38 -0
  28. package/dist/billing/payment-means.d.ts.map +1 -0
  29. package/dist/billing/payment-means.js +29 -0
  30. package/dist/billing/payment-means.js.map +1 -0
  31. package/dist/billing/payment-rail.d.ts +118 -0
  32. package/dist/billing/payment-rail.d.ts.map +1 -0
  33. package/dist/billing/payment-rail.js +295 -0
  34. package/dist/billing/payment-rail.js.map +1 -0
  35. package/dist/billing/provider/asaas.d.ts +46 -1
  36. package/dist/billing/provider/asaas.d.ts.map +1 -1
  37. package/dist/billing/provider/asaas.js +194 -14
  38. package/dist/billing/provider/asaas.js.map +1 -1
  39. package/dist/billing/provider/manual.js +1 -1
  40. package/dist/billing/provider/manual.js.map +1 -1
  41. package/dist/billing/provider/types.d.ts +115 -8
  42. package/dist/billing/provider/types.d.ts.map +1 -1
  43. package/dist/billing/provider-account.d.ts +89 -0
  44. package/dist/billing/provider-account.d.ts.map +1 -0
  45. package/dist/billing/provider-account.js +161 -0
  46. package/dist/billing/provider-account.js.map +1 -0
  47. package/dist/billing/provider-onboarding.d.ts +67 -0
  48. package/dist/billing/provider-onboarding.d.ts.map +1 -0
  49. package/dist/billing/provider-onboarding.js +234 -0
  50. package/dist/billing/provider-onboarding.js.map +1 -0
  51. package/dist/billing/receivable.d.ts +5 -1
  52. package/dist/billing/receivable.d.ts.map +1 -1
  53. package/dist/billing/reconcile.d.ts +58 -0
  54. package/dist/billing/reconcile.d.ts.map +1 -0
  55. package/dist/billing/reconcile.js +138 -0
  56. package/dist/billing/reconcile.js.map +1 -0
  57. package/dist/billing/repository.d.ts +90 -1
  58. package/dist/billing/repository.d.ts.map +1 -1
  59. package/dist/billing/repository.js +148 -19
  60. package/dist/billing/repository.js.map +1 -1
  61. package/dist/cjs/auth/password-reset.js +141 -11
  62. package/dist/cjs/auth/password-reset.js.map +1 -1
  63. package/dist/cjs/auth/service.js +75 -9
  64. package/dist/cjs/auth/service.js.map +1 -1
  65. package/dist/cjs/billing/ar-repository.js +728 -0
  66. package/dist/cjs/billing/ar-repository.js.map +1 -0
  67. package/dist/cjs/billing/auto-generation.js +186 -0
  68. package/dist/cjs/billing/auto-generation.js.map +1 -0
  69. package/dist/cjs/billing/live-guard.js +72 -0
  70. package/dist/cjs/billing/live-guard.js.map +1 -0
  71. package/dist/cjs/billing/payment-means-catalog.js +25 -0
  72. package/dist/cjs/billing/payment-means-catalog.js.map +1 -0
  73. package/dist/cjs/billing/payment-means.js +33 -0
  74. package/dist/cjs/billing/payment-means.js.map +1 -0
  75. package/dist/cjs/billing/payment-rail.js +301 -0
  76. package/dist/cjs/billing/payment-rail.js.map +1 -0
  77. package/dist/cjs/billing/provider/asaas.js +194 -14
  78. package/dist/cjs/billing/provider/asaas.js.map +1 -1
  79. package/dist/cjs/billing/provider/manual.js +1 -1
  80. package/dist/cjs/billing/provider/manual.js.map +1 -1
  81. package/dist/cjs/billing/provider-account.js +170 -0
  82. package/dist/cjs/billing/provider-account.js.map +1 -0
  83. package/dist/cjs/billing/provider-onboarding.js +239 -0
  84. package/dist/cjs/billing/provider-onboarding.js.map +1 -0
  85. package/dist/cjs/billing/reconcile.js +143 -0
  86. package/dist/cjs/billing/reconcile.js.map +1 -0
  87. package/dist/cjs/billing/repository.js +150 -18
  88. package/dist/cjs/billing/repository.js.map +1 -1
  89. package/dist/cjs/clients/repository.js +96 -20
  90. package/dist/cjs/clients/repository.js.map +1 -1
  91. package/dist/cjs/collection/branding.js +140 -0
  92. package/dist/cjs/collection/branding.js.map +1 -0
  93. package/dist/cjs/collection/channel-accounts.js +137 -0
  94. package/dist/cjs/collection/channel-accounts.js.map +1 -0
  95. package/dist/cjs/collection/channel.js +17 -0
  96. package/dist/cjs/collection/channel.js.map +1 -0
  97. package/dist/cjs/collection/communication-bridge.js +140 -0
  98. package/dist/cjs/collection/communication-bridge.js.map +1 -0
  99. package/dist/cjs/collection/communication-runtime.js +193 -0
  100. package/dist/cjs/collection/communication-runtime.js.map +1 -0
  101. package/dist/cjs/collection/consent-repository.js +84 -0
  102. package/dist/cjs/collection/consent-repository.js.map +1 -0
  103. package/dist/cjs/collection/copy.js +125 -0
  104. package/dist/cjs/collection/copy.js.map +1 -0
  105. package/dist/cjs/collection/delivery-callback.js +151 -0
  106. package/dist/cjs/collection/delivery-callback.js.map +1 -0
  107. package/dist/cjs/collection/email-layout.js +252 -0
  108. package/dist/cjs/collection/email-layout.js.map +1 -0
  109. package/dist/cjs/collection/engine.js +414 -0
  110. package/dist/cjs/collection/engine.js.map +1 -0
  111. package/dist/cjs/collection/format.js +76 -0
  112. package/dist/cjs/collection/format.js.map +1 -0
  113. package/dist/cjs/collection/payment-block.js +3 -0
  114. package/dist/cjs/collection/payment-block.js.map +1 -0
  115. package/dist/cjs/collection/policy.js +147 -0
  116. package/dist/cjs/collection/policy.js.map +1 -0
  117. package/dist/cjs/collection/repository.js +260 -0
  118. package/dist/cjs/collection/repository.js.map +1 -0
  119. package/dist/cjs/collection/subject.js +104 -0
  120. package/dist/cjs/collection/subject.js.map +1 -0
  121. package/dist/cjs/collection/template-catalog.js +165 -0
  122. package/dist/cjs/collection/template-catalog.js.map +1 -0
  123. package/dist/cjs/collection/template.js +78 -0
  124. package/dist/cjs/collection/template.js.map +1 -0
  125. package/dist/cjs/communication/adapters/email.js +132 -0
  126. package/dist/cjs/communication/adapters/email.js.map +1 -0
  127. package/dist/cjs/communication/adapters/sms.js +127 -0
  128. package/dist/cjs/communication/adapters/sms.js.map +1 -0
  129. package/dist/cjs/communication/adapters/whatsapp-language.js +39 -0
  130. package/dist/cjs/communication/adapters/whatsapp-language.js.map +1 -0
  131. package/dist/cjs/communication/adapters/whatsapp-templates.js +100 -0
  132. package/dist/cjs/communication/adapters/whatsapp-templates.js.map +1 -0
  133. package/dist/cjs/communication/adapters/whatsapp.js +213 -0
  134. package/dist/cjs/communication/adapters/whatsapp.js.map +1 -0
  135. package/dist/cjs/communication/audit.js +61 -0
  136. package/dist/cjs/communication/audit.js.map +1 -0
  137. package/dist/cjs/communication/capabilities.js +76 -0
  138. package/dist/cjs/communication/capabilities.js.map +1 -0
  139. package/dist/cjs/communication/channel.js +53 -0
  140. package/dist/cjs/communication/channel.js.map +1 -0
  141. package/dist/cjs/communication/claim.js +228 -0
  142. package/dist/cjs/communication/claim.js.map +1 -0
  143. package/dist/cjs/communication/consent.js +43 -0
  144. package/dist/cjs/communication/consent.js.map +1 -0
  145. package/dist/cjs/communication/context.js +45 -0
  146. package/dist/cjs/communication/context.js.map +1 -0
  147. package/dist/cjs/communication/credentials.js +121 -0
  148. package/dist/cjs/communication/credentials.js.map +1 -0
  149. package/dist/cjs/communication/dry-run-scenario.js +161 -0
  150. package/dist/cjs/communication/dry-run-scenario.js.map +1 -0
  151. package/dist/cjs/communication/dry-run.js +97 -0
  152. package/dist/cjs/communication/dry-run.js.map +1 -0
  153. package/dist/cjs/communication/engine.js +483 -0
  154. package/dist/cjs/communication/engine.js.map +1 -0
  155. package/dist/cjs/communication/graph.js +50 -0
  156. package/dist/cjs/communication/graph.js.map +1 -0
  157. package/dist/cjs/communication/idempotency.js +26 -0
  158. package/dist/cjs/communication/idempotency.js.map +1 -0
  159. package/dist/cjs/communication/identity.js +110 -0
  160. package/dist/cjs/communication/identity.js.map +1 -0
  161. package/dist/cjs/communication/index.js +135 -0
  162. package/dist/cjs/communication/index.js.map +1 -0
  163. package/dist/cjs/communication/onboarding.js +297 -0
  164. package/dist/cjs/communication/onboarding.js.map +1 -0
  165. package/dist/cjs/communication/policy.js +16 -0
  166. package/dist/cjs/communication/policy.js.map +1 -0
  167. package/dist/cjs/communication/routing.js +77 -0
  168. package/dist/cjs/communication/routing.js.map +1 -0
  169. package/dist/cjs/communication/sender-profile.js +128 -0
  170. package/dist/cjs/communication/sender-profile.js.map +1 -0
  171. package/dist/cjs/communication/status.js +86 -0
  172. package/dist/cjs/communication/status.js.map +1 -0
  173. package/dist/cjs/communication/stores/onboarding.js +135 -0
  174. package/dist/cjs/communication/stores/onboarding.js.map +1 -0
  175. package/dist/cjs/communication/stores/postgres.js +458 -0
  176. package/dist/cjs/communication/stores/postgres.js.map +1 -0
  177. package/dist/cjs/communication/stores/routing.js +334 -0
  178. package/dist/cjs/communication/stores/routing.js.map +1 -0
  179. package/dist/cjs/communication/stores/secrets.js +126 -0
  180. package/dist/cjs/communication/stores/secrets.js.map +1 -0
  181. package/dist/cjs/communication/template-provider.js +22 -0
  182. package/dist/cjs/communication/template-provider.js.map +1 -0
  183. package/dist/cjs/communication/template.js +63 -0
  184. package/dist/cjs/communication/template.js.map +1 -0
  185. package/dist/cjs/communication/webhook-subscription.js +258 -0
  186. package/dist/cjs/communication/webhook-subscription.js.map +1 -0
  187. package/dist/cjs/communication/webhook.js +292 -0
  188. package/dist/cjs/communication/webhook.js.map +1 -0
  189. package/dist/cjs/competence/repository.js +309 -0
  190. package/dist/cjs/competence/repository.js.map +1 -0
  191. package/dist/cjs/contacts/phone.js +192 -0
  192. package/dist/cjs/contacts/phone.js.map +1 -0
  193. package/dist/cjs/db/seed-catalog.js +48 -0
  194. package/dist/cjs/db/seed-catalog.js.map +1 -0
  195. package/dist/cjs/db/seed.js +15 -7
  196. package/dist/cjs/db/seed.js.map +1 -1
  197. package/dist/cjs/documents/repository.js +244 -0
  198. package/dist/cjs/documents/repository.js.map +1 -0
  199. package/dist/cjs/documents/requests.js +136 -0
  200. package/dist/cjs/documents/requests.js.map +1 -0
  201. package/dist/cjs/index.js +406 -39
  202. package/dist/cjs/index.js.map +1 -1
  203. package/dist/cjs/legal/documents.js +125 -3
  204. package/dist/cjs/legal/documents.js.map +1 -1
  205. package/dist/cjs/legal/types.js +1 -0
  206. package/dist/cjs/legal/types.js.map +1 -1
  207. package/dist/cjs/mail/auth-templates.js +29 -0
  208. package/dist/cjs/mail/auth-templates.js.map +1 -0
  209. package/dist/cjs/mail/dedup-store.js +12 -51
  210. package/dist/cjs/mail/dedup-store.js.map +1 -1
  211. package/dist/cjs/mail/index.js +16 -4
  212. package/dist/cjs/mail/index.js.map +1 -1
  213. package/dist/cjs/mail/provider.js +12 -247
  214. package/dist/cjs/mail/provider.js.map +1 -1
  215. package/dist/cjs/mail/resend.js +14 -18
  216. package/dist/cjs/mail/resend.js.map +1 -1
  217. package/dist/cjs/mail/sender-resolver.js +12 -11
  218. package/dist/cjs/mail/sender-resolver.js.map +1 -1
  219. package/dist/cjs/mail/template-renderer.js +11 -16
  220. package/dist/cjs/mail/template-renderer.js.map +1 -1
  221. package/dist/cjs/mail/transactional-outbound.js +117 -0
  222. package/dist/cjs/mail/transactional-outbound.js.map +1 -0
  223. package/dist/cjs/mail/types.js +8 -35
  224. package/dist/cjs/mail/types.js.map +1 -1
  225. package/dist/cjs/portal/provisioning.js +144 -0
  226. package/dist/cjs/portal/provisioning.js.map +1 -0
  227. package/dist/cjs/pricing-engine/canonical.js +42 -0
  228. package/dist/cjs/pricing-engine/canonical.js.map +1 -0
  229. package/dist/cjs/pricing-engine/errors.js +6 -1
  230. package/dist/cjs/pricing-engine/errors.js.map +1 -1
  231. package/dist/cjs/pricing-engine/index.js +12 -1
  232. package/dist/cjs/pricing-engine/index.js.map +1 -1
  233. package/dist/cjs/pricing-engine/pipeline.js +200 -26
  234. package/dist/cjs/pricing-engine/pipeline.js.map +1 -1
  235. package/dist/cjs/pricing-engine/shadow-adapter.js +79 -0
  236. package/dist/cjs/pricing-engine/shadow-adapter.js.map +1 -0
  237. package/dist/cjs/pricing-engine/shadow-diff.js +55 -0
  238. package/dist/cjs/pricing-engine/shadow-diff.js.map +1 -0
  239. package/dist/cjs/pricing-engine/shadow-facade.js +85 -0
  240. package/dist/cjs/pricing-engine/shadow-facade.js.map +1 -0
  241. package/dist/cjs/pricing-engine/shadow-legacy-types.js +19 -0
  242. package/dist/cjs/pricing-engine/shadow-legacy-types.js.map +1 -0
  243. package/dist/cjs/pricing-engine/shadow-metrics.js +34 -0
  244. package/dist/cjs/pricing-engine/shadow-metrics.js.map +1 -0
  245. package/dist/cjs/pricing-engine/shadow-normalizer.js +42 -0
  246. package/dist/cjs/pricing-engine/shadow-normalizer.js.map +1 -0
  247. package/dist/cjs/rbac/authorize.js +28 -0
  248. package/dist/cjs/rbac/authorize.js.map +1 -1
  249. package/dist/cjs/rbac/catalog.js +67 -1
  250. package/dist/cjs/rbac/catalog.js.map +1 -1
  251. package/dist/cjs/rbac/workload-provisioning.js +160 -0
  252. package/dist/cjs/rbac/workload-provisioning.js.map +1 -0
  253. package/dist/cjs/rbac/workload.js +191 -0
  254. package/dist/cjs/rbac/workload.js.map +1 -0
  255. package/dist/cjs/storage/checksum.js +15 -0
  256. package/dist/cjs/storage/checksum.js.map +1 -0
  257. package/dist/cjs/storage/key.js +72 -0
  258. package/dist/cjs/storage/key.js.map +1 -0
  259. package/dist/cjs/storage/local.js +100 -0
  260. package/dist/cjs/storage/local.js.map +1 -0
  261. package/dist/cjs/storage/r2.js +181 -0
  262. package/dist/cjs/storage/r2.js.map +1 -0
  263. package/dist/cjs/storage/registry.js +41 -0
  264. package/dist/cjs/storage/registry.js.map +1 -0
  265. package/dist/cjs/storage/types.js +50 -0
  266. package/dist/cjs/storage/types.js.map +1 -0
  267. package/dist/cjs/subscription-billing/provider/asaas.js +32 -7
  268. package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -1
  269. package/dist/cjs/subscription-billing/provider/disabled.js +8 -0
  270. package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -1
  271. package/dist/cjs/subscription-billing/provider/registry.js +17 -0
  272. package/dist/cjs/subscription-billing/provider/registry.js.map +1 -1
  273. package/dist/cjs/subscription-billing/service.js +57 -8
  274. package/dist/cjs/subscription-billing/service.js.map +1 -1
  275. package/dist/cjs/subscription-billing/types.js.map +1 -1
  276. package/dist/cjs/tenancy/provisioning.js +32 -8
  277. package/dist/cjs/tenancy/provisioning.js.map +1 -1
  278. package/dist/cjs/users/repository.js +119 -2
  279. package/dist/cjs/users/repository.js.map +1 -1
  280. package/dist/cjs/vault/repository.js +81 -0
  281. package/dist/cjs/vault/repository.js.map +1 -1
  282. package/dist/clients/repository.d.ts +42 -0
  283. package/dist/clients/repository.d.ts.map +1 -1
  284. package/dist/clients/repository.js +94 -21
  285. package/dist/clients/repository.js.map +1 -1
  286. package/dist/collection/branding.d.ts +72 -0
  287. package/dist/collection/branding.d.ts.map +1 -0
  288. package/dist/collection/branding.js +136 -0
  289. package/dist/collection/branding.js.map +1 -0
  290. package/dist/collection/channel-accounts.d.ts +57 -0
  291. package/dist/collection/channel-accounts.d.ts.map +1 -0
  292. package/dist/collection/channel-accounts.js +133 -0
  293. package/dist/collection/channel-accounts.js.map +1 -0
  294. package/dist/collection/channel.d.ts +24 -0
  295. package/dist/collection/channel.d.ts.map +1 -0
  296. package/dist/collection/channel.js +16 -0
  297. package/dist/collection/channel.js.map +1 -0
  298. package/dist/collection/communication-bridge.d.ts +66 -0
  299. package/dist/collection/communication-bridge.d.ts.map +1 -0
  300. package/dist/collection/communication-bridge.js +134 -0
  301. package/dist/collection/communication-bridge.js.map +1 -0
  302. package/dist/collection/communication-runtime.d.ts +95 -0
  303. package/dist/collection/communication-runtime.d.ts.map +1 -0
  304. package/dist/collection/communication-runtime.js +187 -0
  305. package/dist/collection/communication-runtime.js.map +1 -0
  306. package/dist/collection/consent-repository.d.ts +32 -0
  307. package/dist/collection/consent-repository.d.ts.map +1 -0
  308. package/dist/collection/consent-repository.js +79 -0
  309. package/dist/collection/consent-repository.js.map +1 -0
  310. package/dist/collection/copy.d.ts +50 -0
  311. package/dist/collection/copy.d.ts.map +1 -0
  312. package/dist/collection/copy.js +122 -0
  313. package/dist/collection/copy.js.map +1 -0
  314. package/dist/collection/delivery-callback.d.ts +49 -0
  315. package/dist/collection/delivery-callback.d.ts.map +1 -0
  316. package/dist/collection/delivery-callback.js +147 -0
  317. package/dist/collection/delivery-callback.js.map +1 -0
  318. package/dist/collection/email-layout.d.ts +45 -0
  319. package/dist/collection/email-layout.d.ts.map +1 -0
  320. package/dist/collection/email-layout.js +247 -0
  321. package/dist/collection/email-layout.js.map +1 -0
  322. package/dist/collection/engine.d.ts +177 -0
  323. package/dist/collection/engine.d.ts.map +1 -0
  324. package/dist/collection/engine.js +407 -0
  325. package/dist/collection/engine.js.map +1 -0
  326. package/dist/collection/format.d.ts +32 -0
  327. package/dist/collection/format.d.ts.map +1 -0
  328. package/dist/collection/format.js +70 -0
  329. package/dist/collection/format.js.map +1 -0
  330. package/dist/collection/payment-block.d.ts +24 -0
  331. package/dist/collection/payment-block.d.ts.map +1 -0
  332. package/dist/collection/payment-block.js +2 -0
  333. package/dist/collection/payment-block.js.map +1 -0
  334. package/dist/collection/policy.d.ts +53 -0
  335. package/dist/collection/policy.d.ts.map +1 -0
  336. package/dist/collection/policy.js +141 -0
  337. package/dist/collection/policy.js.map +1 -0
  338. package/dist/collection/repository.d.ts +129 -0
  339. package/dist/collection/repository.d.ts.map +1 -0
  340. package/dist/collection/repository.js +246 -0
  341. package/dist/collection/repository.js.map +1 -0
  342. package/dist/collection/subject.d.ts +66 -0
  343. package/dist/collection/subject.d.ts.map +1 -0
  344. package/dist/collection/subject.js +99 -0
  345. package/dist/collection/subject.js.map +1 -0
  346. package/dist/collection/template-catalog.d.ts +16 -0
  347. package/dist/collection/template-catalog.d.ts.map +1 -0
  348. package/dist/collection/template-catalog.js +162 -0
  349. package/dist/collection/template-catalog.js.map +1 -0
  350. package/dist/collection/template.d.ts +37 -0
  351. package/dist/collection/template.d.ts.map +1 -0
  352. package/dist/collection/template.js +73 -0
  353. package/dist/collection/template.js.map +1 -0
  354. package/dist/communication/adapters/email.d.ts +28 -0
  355. package/dist/communication/adapters/email.d.ts.map +1 -0
  356. package/dist/communication/adapters/email.js +129 -0
  357. package/dist/communication/adapters/email.js.map +1 -0
  358. package/dist/communication/adapters/sms.d.ts +95 -0
  359. package/dist/communication/adapters/sms.d.ts.map +1 -0
  360. package/dist/communication/adapters/sms.js +121 -0
  361. package/dist/communication/adapters/sms.js.map +1 -0
  362. package/dist/communication/adapters/whatsapp-language.d.ts +34 -0
  363. package/dist/communication/adapters/whatsapp-language.d.ts.map +1 -0
  364. package/dist/communication/adapters/whatsapp-language.js +36 -0
  365. package/dist/communication/adapters/whatsapp-language.js.map +1 -0
  366. package/dist/communication/adapters/whatsapp-templates.d.ts +18 -0
  367. package/dist/communication/adapters/whatsapp-templates.d.ts.map +1 -0
  368. package/dist/communication/adapters/whatsapp-templates.js +97 -0
  369. package/dist/communication/adapters/whatsapp-templates.js.map +1 -0
  370. package/dist/communication/adapters/whatsapp.d.ts +29 -0
  371. package/dist/communication/adapters/whatsapp.d.ts.map +1 -0
  372. package/dist/communication/adapters/whatsapp.js +210 -0
  373. package/dist/communication/adapters/whatsapp.js.map +1 -0
  374. package/dist/communication/audit.d.ts +105 -0
  375. package/dist/communication/audit.d.ts.map +1 -0
  376. package/dist/communication/audit.js +56 -0
  377. package/dist/communication/audit.js.map +1 -0
  378. package/dist/communication/capabilities.d.ts +88 -0
  379. package/dist/communication/capabilities.d.ts.map +1 -0
  380. package/dist/communication/capabilities.js +72 -0
  381. package/dist/communication/capabilities.js.map +1 -0
  382. package/dist/communication/channel.d.ts +125 -0
  383. package/dist/communication/channel.d.ts.map +1 -0
  384. package/dist/communication/channel.js +47 -0
  385. package/dist/communication/channel.js.map +1 -0
  386. package/dist/communication/claim.d.ts +368 -0
  387. package/dist/communication/claim.d.ts.map +1 -0
  388. package/dist/communication/claim.js +224 -0
  389. package/dist/communication/claim.js.map +1 -0
  390. package/dist/communication/consent.d.ts +65 -0
  391. package/dist/communication/consent.d.ts.map +1 -0
  392. package/dist/communication/consent.js +40 -0
  393. package/dist/communication/consent.js.map +1 -0
  394. package/dist/communication/context.d.ts +48 -0
  395. package/dist/communication/context.d.ts.map +1 -0
  396. package/dist/communication/context.js +41 -0
  397. package/dist/communication/context.js.map +1 -0
  398. package/dist/communication/credentials.d.ts +74 -0
  399. package/dist/communication/credentials.d.ts.map +1 -0
  400. package/dist/communication/credentials.js +115 -0
  401. package/dist/communication/credentials.js.map +1 -0
  402. package/dist/communication/dry-run-scenario.d.ts +37 -0
  403. package/dist/communication/dry-run-scenario.d.ts.map +1 -0
  404. package/dist/communication/dry-run-scenario.js +158 -0
  405. package/dist/communication/dry-run-scenario.js.map +1 -0
  406. package/dist/communication/dry-run.d.ts +40 -0
  407. package/dist/communication/dry-run.d.ts.map +1 -0
  408. package/dist/communication/dry-run.js +92 -0
  409. package/dist/communication/dry-run.js.map +1 -0
  410. package/dist/communication/engine.d.ts +153 -0
  411. package/dist/communication/engine.d.ts.map +1 -0
  412. package/dist/communication/engine.js +480 -0
  413. package/dist/communication/engine.js.map +1 -0
  414. package/dist/communication/graph.d.ts +38 -0
  415. package/dist/communication/graph.d.ts.map +1 -0
  416. package/dist/communication/graph.js +45 -0
  417. package/dist/communication/graph.js.map +1 -0
  418. package/dist/communication/idempotency.d.ts +33 -0
  419. package/dist/communication/idempotency.d.ts.map +1 -0
  420. package/dist/communication/idempotency.js +23 -0
  421. package/dist/communication/idempotency.js.map +1 -0
  422. package/dist/communication/identity.d.ts +127 -0
  423. package/dist/communication/identity.d.ts.map +1 -0
  424. package/dist/communication/identity.js +105 -0
  425. package/dist/communication/identity.js.map +1 -0
  426. package/dist/communication/index.d.ts +66 -0
  427. package/dist/communication/index.d.ts.map +1 -0
  428. package/dist/communication/index.js +42 -0
  429. package/dist/communication/index.js.map +1 -0
  430. package/dist/communication/onboarding.d.ts +223 -0
  431. package/dist/communication/onboarding.d.ts.map +1 -0
  432. package/dist/communication/onboarding.js +287 -0
  433. package/dist/communication/onboarding.js.map +1 -0
  434. package/dist/communication/policy.d.ts +99 -0
  435. package/dist/communication/policy.d.ts.map +1 -0
  436. package/dist/communication/policy.js +13 -0
  437. package/dist/communication/policy.js.map +1 -0
  438. package/dist/communication/routing.d.ts +99 -0
  439. package/dist/communication/routing.d.ts.map +1 -0
  440. package/dist/communication/routing.js +73 -0
  441. package/dist/communication/routing.js.map +1 -0
  442. package/dist/communication/sender-profile.d.ts +100 -0
  443. package/dist/communication/sender-profile.d.ts.map +1 -0
  444. package/dist/communication/sender-profile.js +123 -0
  445. package/dist/communication/sender-profile.js.map +1 -0
  446. package/dist/communication/status.d.ts +48 -0
  447. package/dist/communication/status.d.ts.map +1 -0
  448. package/dist/communication/status.js +79 -0
  449. package/dist/communication/status.js.map +1 -0
  450. package/dist/communication/stores/onboarding.d.ts +88 -0
  451. package/dist/communication/stores/onboarding.d.ts.map +1 -0
  452. package/dist/communication/stores/onboarding.js +127 -0
  453. package/dist/communication/stores/onboarding.js.map +1 -0
  454. package/dist/communication/stores/postgres.d.ts +81 -0
  455. package/dist/communication/stores/postgres.d.ts.map +1 -0
  456. package/dist/communication/stores/postgres.js +453 -0
  457. package/dist/communication/stores/postgres.js.map +1 -0
  458. package/dist/communication/stores/routing.d.ts +169 -0
  459. package/dist/communication/stores/routing.d.ts.map +1 -0
  460. package/dist/communication/stores/routing.js +324 -0
  461. package/dist/communication/stores/routing.js.map +1 -0
  462. package/dist/communication/stores/secrets.d.ts +89 -0
  463. package/dist/communication/stores/secrets.d.ts.map +1 -0
  464. package/dist/communication/stores/secrets.js +122 -0
  465. package/dist/communication/stores/secrets.js.map +1 -0
  466. package/dist/communication/template-provider.d.ts +85 -0
  467. package/dist/communication/template-provider.d.ts.map +1 -0
  468. package/dist/communication/template-provider.js +21 -0
  469. package/dist/communication/template-provider.js.map +1 -0
  470. package/dist/communication/template.d.ts +87 -0
  471. package/dist/communication/template.d.ts.map +1 -0
  472. package/dist/communication/template.js +59 -0
  473. package/dist/communication/template.js.map +1 -0
  474. package/dist/communication/webhook-subscription.d.ts +156 -0
  475. package/dist/communication/webhook-subscription.d.ts.map +1 -0
  476. package/dist/communication/webhook-subscription.js +252 -0
  477. package/dist/communication/webhook-subscription.js.map +1 -0
  478. package/dist/communication/webhook.d.ts +121 -0
  479. package/dist/communication/webhook.d.ts.map +1 -0
  480. package/dist/communication/webhook.js +283 -0
  481. package/dist/communication/webhook.js.map +1 -0
  482. package/dist/competence/repository.d.ts +147 -0
  483. package/dist/competence/repository.d.ts.map +1 -0
  484. package/dist/competence/repository.js +294 -0
  485. package/dist/competence/repository.js.map +1 -0
  486. package/dist/contacts/phone.d.ts +70 -0
  487. package/dist/contacts/phone.d.ts.map +1 -0
  488. package/dist/contacts/phone.js +186 -0
  489. package/dist/contacts/phone.js.map +1 -0
  490. package/dist/db/migrate.js +17 -11
  491. package/dist/db/migrate.js.map +1 -1
  492. package/dist/db/seed-catalog.d.ts +18 -0
  493. package/dist/db/seed-catalog.d.ts.map +1 -0
  494. package/dist/db/seed-catalog.js +45 -0
  495. package/dist/db/seed-catalog.js.map +1 -0
  496. package/dist/db/seed.js +16 -8
  497. package/dist/db/seed.js.map +1 -1
  498. package/dist/documents/repository.d.ts +97 -0
  499. package/dist/documents/repository.d.ts.map +1 -0
  500. package/dist/documents/repository.js +236 -0
  501. package/dist/documents/repository.js.map +1 -0
  502. package/dist/documents/requests.d.ts +73 -0
  503. package/dist/documents/requests.d.ts.map +1 -0
  504. package/dist/documents/requests.js +127 -0
  505. package/dist/documents/requests.js.map +1 -0
  506. package/dist/index.d.ts +109 -13
  507. package/dist/index.d.ts.map +1 -1
  508. package/dist/index.js +100 -8
  509. package/dist/index.js.map +1 -1
  510. package/dist/legal/documents.d.ts.map +1 -1
  511. package/dist/legal/documents.js +125 -3
  512. package/dist/legal/documents.js.map +1 -1
  513. package/dist/legal/index.d.ts +1 -1
  514. package/dist/legal/index.d.ts.map +1 -1
  515. package/dist/legal/types.d.ts +32 -1
  516. package/dist/legal/types.d.ts.map +1 -1
  517. package/dist/legal/types.js +1 -0
  518. package/dist/legal/types.js.map +1 -1
  519. package/dist/mail/auth-templates.d.ts +15 -0
  520. package/dist/mail/auth-templates.d.ts.map +1 -0
  521. package/dist/mail/auth-templates.js +26 -0
  522. package/dist/mail/auth-templates.js.map +1 -0
  523. package/dist/mail/dedup-store.d.ts +1 -24
  524. package/dist/mail/dedup-store.d.ts.map +1 -1
  525. package/dist/mail/dedup-store.js +9 -48
  526. package/dist/mail/dedup-store.js.map +1 -1
  527. package/dist/mail/index.d.ts +2 -1
  528. package/dist/mail/index.d.ts.map +1 -1
  529. package/dist/mail/index.js +13 -2
  530. package/dist/mail/index.js.map +1 -1
  531. package/dist/mail/provider.d.ts +2 -30
  532. package/dist/mail/provider.d.ts.map +1 -1
  533. package/dist/mail/provider.js +10 -246
  534. package/dist/mail/provider.js.map +1 -1
  535. package/dist/mail/resend.d.ts +2 -12
  536. package/dist/mail/resend.d.ts.map +1 -1
  537. package/dist/mail/resend.js +11 -17
  538. package/dist/mail/resend.js.map +1 -1
  539. package/dist/mail/sender-resolver.d.ts +1 -7
  540. package/dist/mail/sender-resolver.d.ts.map +1 -1
  541. package/dist/mail/sender-resolver.js +11 -10
  542. package/dist/mail/sender-resolver.js.map +1 -1
  543. package/dist/mail/template-renderer.d.ts +1 -9
  544. package/dist/mail/template-renderer.d.ts.map +1 -1
  545. package/dist/mail/template-renderer.js +10 -15
  546. package/dist/mail/template-renderer.js.map +1 -1
  547. package/dist/mail/transactional-outbound.d.ts +115 -0
  548. package/dist/mail/transactional-outbound.d.ts.map +1 -0
  549. package/dist/mail/transactional-outbound.js +113 -0
  550. package/dist/mail/transactional-outbound.js.map +1 -0
  551. package/dist/mail/types.d.ts +2 -142
  552. package/dist/mail/types.d.ts.map +1 -1
  553. package/dist/mail/types.js +1 -33
  554. package/dist/mail/types.js.map +1 -1
  555. package/dist/portal/provisioning.d.ts +58 -0
  556. package/dist/portal/provisioning.d.ts.map +1 -0
  557. package/dist/portal/provisioning.js +139 -0
  558. package/dist/portal/provisioning.js.map +1 -0
  559. package/dist/pricing-engine/canonical.d.ts +14 -0
  560. package/dist/pricing-engine/canonical.d.ts.map +1 -0
  561. package/dist/pricing-engine/canonical.js +39 -0
  562. package/dist/pricing-engine/canonical.js.map +1 -0
  563. package/dist/pricing-engine/errors.d.ts.map +1 -1
  564. package/dist/pricing-engine/errors.js +6 -1
  565. package/dist/pricing-engine/errors.js.map +1 -1
  566. package/dist/pricing-engine/index.d.ts +12 -2
  567. package/dist/pricing-engine/index.d.ts.map +1 -1
  568. package/dist/pricing-engine/index.js +6 -1
  569. package/dist/pricing-engine/index.js.map +1 -1
  570. package/dist/pricing-engine/pipeline.d.ts.map +1 -1
  571. package/dist/pricing-engine/pipeline.js +202 -28
  572. package/dist/pricing-engine/pipeline.js.map +1 -1
  573. package/dist/pricing-engine/shadow-adapter.d.ts +37 -0
  574. package/dist/pricing-engine/shadow-adapter.d.ts.map +1 -0
  575. package/dist/pricing-engine/shadow-adapter.js +75 -0
  576. package/dist/pricing-engine/shadow-adapter.js.map +1 -0
  577. package/dist/pricing-engine/shadow-diff.d.ts +26 -0
  578. package/dist/pricing-engine/shadow-diff.d.ts.map +1 -0
  579. package/dist/pricing-engine/shadow-diff.js +52 -0
  580. package/dist/pricing-engine/shadow-diff.js.map +1 -0
  581. package/dist/pricing-engine/shadow-facade.d.ts +42 -0
  582. package/dist/pricing-engine/shadow-facade.d.ts.map +1 -0
  583. package/dist/pricing-engine/shadow-facade.js +82 -0
  584. package/dist/pricing-engine/shadow-facade.js.map +1 -0
  585. package/dist/pricing-engine/shadow-legacy-types.d.ts +64 -0
  586. package/dist/pricing-engine/shadow-legacy-types.d.ts.map +1 -0
  587. package/dist/pricing-engine/shadow-legacy-types.js +18 -0
  588. package/dist/pricing-engine/shadow-legacy-types.js.map +1 -0
  589. package/dist/pricing-engine/shadow-metrics.d.ts +33 -0
  590. package/dist/pricing-engine/shadow-metrics.d.ts.map +1 -0
  591. package/dist/pricing-engine/shadow-metrics.js +31 -0
  592. package/dist/pricing-engine/shadow-metrics.js.map +1 -0
  593. package/dist/pricing-engine/shadow-normalizer.d.ts +17 -0
  594. package/dist/pricing-engine/shadow-normalizer.d.ts.map +1 -0
  595. package/dist/pricing-engine/shadow-normalizer.js +39 -0
  596. package/dist/pricing-engine/shadow-normalizer.js.map +1 -0
  597. package/dist/pricing-engine/types.d.ts +2 -0
  598. package/dist/pricing-engine/types.d.ts.map +1 -1
  599. package/dist/rbac/authorize.d.ts +12 -0
  600. package/dist/rbac/authorize.d.ts.map +1 -1
  601. package/dist/rbac/authorize.js +27 -0
  602. package/dist/rbac/authorize.js.map +1 -1
  603. package/dist/rbac/catalog.d.ts.map +1 -1
  604. package/dist/rbac/catalog.js +67 -1
  605. package/dist/rbac/catalog.js.map +1 -1
  606. package/dist/rbac/workload-provisioning.d.ts +66 -0
  607. package/dist/rbac/workload-provisioning.d.ts.map +1 -0
  608. package/dist/rbac/workload-provisioning.js +153 -0
  609. package/dist/rbac/workload-provisioning.js.map +1 -0
  610. package/dist/rbac/workload.d.ts +124 -0
  611. package/dist/rbac/workload.d.ts.map +1 -0
  612. package/dist/rbac/workload.js +184 -0
  613. package/dist/rbac/workload.js.map +1 -0
  614. package/dist/storage/checksum.d.ts +9 -0
  615. package/dist/storage/checksum.d.ts.map +1 -0
  616. package/dist/storage/checksum.js +12 -0
  617. package/dist/storage/checksum.js.map +1 -0
  618. package/dist/storage/key.d.ts +37 -0
  619. package/dist/storage/key.d.ts.map +1 -0
  620. package/dist/storage/key.js +67 -0
  621. package/dist/storage/key.js.map +1 -0
  622. package/dist/storage/local.d.ts +40 -0
  623. package/dist/storage/local.d.ts.map +1 -0
  624. package/dist/storage/local.js +96 -0
  625. package/dist/storage/local.js.map +1 -0
  626. package/dist/storage/r2.d.ts +43 -0
  627. package/dist/storage/r2.d.ts.map +1 -0
  628. package/dist/storage/r2.js +177 -0
  629. package/dist/storage/r2.js.map +1 -0
  630. package/dist/storage/registry.d.ts +23 -0
  631. package/dist/storage/registry.d.ts.map +1 -0
  632. package/dist/storage/registry.js +37 -0
  633. package/dist/storage/registry.js.map +1 -0
  634. package/dist/storage/types.d.ts +67 -0
  635. package/dist/storage/types.d.ts.map +1 -0
  636. package/dist/storage/types.js +45 -0
  637. package/dist/storage/types.js.map +1 -0
  638. package/dist/subscription-billing/provider/asaas.d.ts +14 -0
  639. package/dist/subscription-billing/provider/asaas.d.ts.map +1 -1
  640. package/dist/subscription-billing/provider/asaas.js +32 -7
  641. package/dist/subscription-billing/provider/asaas.js.map +1 -1
  642. package/dist/subscription-billing/provider/disabled.d.ts +9 -0
  643. package/dist/subscription-billing/provider/disabled.d.ts.map +1 -1
  644. package/dist/subscription-billing/provider/disabled.js +8 -0
  645. package/dist/subscription-billing/provider/disabled.js.map +1 -1
  646. package/dist/subscription-billing/provider/registry.d.ts +10 -0
  647. package/dist/subscription-billing/provider/registry.d.ts.map +1 -1
  648. package/dist/subscription-billing/provider/registry.js +17 -0
  649. package/dist/subscription-billing/provider/registry.js.map +1 -1
  650. package/dist/subscription-billing/service.d.ts +17 -1
  651. package/dist/subscription-billing/service.d.ts.map +1 -1
  652. package/dist/subscription-billing/service.js +57 -8
  653. package/dist/subscription-billing/service.js.map +1 -1
  654. package/dist/subscription-billing/types.d.ts +13 -0
  655. package/dist/subscription-billing/types.d.ts.map +1 -1
  656. package/dist/subscription-billing/types.js.map +1 -1
  657. package/dist/tenancy/provisioning.d.ts.map +1 -1
  658. package/dist/tenancy/provisioning.js +32 -8
  659. package/dist/tenancy/provisioning.js.map +1 -1
  660. package/dist/users/repository.d.ts +38 -0
  661. package/dist/users/repository.d.ts.map +1 -1
  662. package/dist/users/repository.js +118 -3
  663. package/dist/users/repository.js.map +1 -1
  664. package/dist/vault/repository.d.ts +67 -0
  665. package/dist/vault/repository.d.ts.map +1 -1
  666. package/dist/vault/repository.js +78 -0
  667. package/dist/vault/repository.js.map +1 -1
  668. package/package.json +13 -4
  669. package/src/db/migrations/0023_user_invite_activation.sql +15 -0
  670. package/src/db/migrations/0024_set_user_password_function.sql +32 -0
  671. package/src/db/migrations/0025_revoke_user_session_function.sql +28 -0
  672. package/src/db/migrations/0026_documents_and_competence.sql +353 -0
  673. package/src/db/migrations/0027_receivable_client_isolation.sql +58 -0
  674. package/src/db/migrations/0028_collection_engine.sql +94 -0
  675. package/src/db/migrations/0029_payment_rail.sql +107 -0
  676. package/src/db/migrations/0030_provider_account_uniqueness.sql +22 -0
  677. package/src/db/migrations/0031_provider_account_environment_scope.sql +21 -0
  678. package/src/db/migrations/0032_settlement_reversal.sql +76 -0
  679. package/src/db/migrations/0033_receivable_idempotency.sql +28 -0
  680. package/src/db/migrations/0034_payment_customer_reconcile.sql +30 -0
  681. package/src/db/migrations/0035_payment_account_environments.sql +61 -0
  682. package/src/db/migrations/0036_primary_backfill_under_force_rls.sql +41 -0
  683. package/src/db/migrations/0037_receivable_generation_source.sql +29 -0
  684. package/src/db/migrations/0038_notification_channels.sql +175 -0
  685. package/src/db/migrations/0039_communication_dispatch_claim.sql +193 -0
  686. package/src/db/migrations/0040_communication_unknown_outcome.sql +99 -0
  687. package/src/db/migrations/0041_channel_binding_routing.sql +146 -0
  688. package/src/db/migrations/0042_channel_route_read_isolation.sql +165 -0
  689. package/src/db/migrations/0043_workload_identity.sql +105 -0
  690. package/src/db/migrations/0044_channel_onboarding_session.sql +96 -0
  691. package/dist/cjs/mail/resend-client.js +0 -103
  692. package/dist/cjs/mail/resend-client.js.map +0 -1
  693. package/dist/mail/resend-client.d.ts +0 -16
  694. package/dist/mail/resend-client.d.ts.map +0 -1
  695. package/dist/mail/resend-client.js +0 -100
  696. package/dist/mail/resend-client.js.map +0 -1
@@ -1,251 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTransactionalEmailProvider = createTransactionalEmailProvider;
4
- const dedup_store_js_1 = require("./dedup-store.js");
5
- const resend_client_js_1 = require("./resend-client.js");
6
- const sanitize_js_1 = require("./sanitize.js");
7
- const sender_resolver_js_1 = require("./sender-resolver.js");
8
- const template_renderer_js_1 = require("./template-renderer.js");
9
- const types_js_1 = require("./types.js");
10
- /** Validação prática de endereço (RFC §4 — borda do Provider): local@domínio.tld, sem espaços, um único "@". */
11
- const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
12
- function isValidEmailAddress(address) {
13
- return EMAIL_PATTERN.test(address);
14
- }
15
- /**
16
- * Valida os endereços que o Provider efetivamente usará na chamada ao provider externo
17
- * (Correção 3 — Auditoria Codex). Roda depois de `from` resolvido, para pegar também
18
- * remetentes vindos do `SenderResolver`/`defaultFrom`, não só o `input.from` explícito.
3
+ exports.createTransactionalEmailProvider = void 0;
4
+ /*
5
+ * RE-EXPORT — a implementação vive em `@baruk/communication`.
6
+ *
7
+ * Este arquivo era uma cópia da capability `cap.communication.transactional-email`. A
8
+ * mesma implementação existia aqui e no engine canônico, e duas cópias de um provider de
9
+ * comunicação divergem: uma ganha a correção, a outra não, e ninguém percebe até um
10
+ * consumidor receber o comportamento antigo.
11
+ *
12
+ * O caminho de import é preservado de propósito: nenhum consumidor muda uma linha.
19
13
  */
20
- function validateAddresses(fields) {
21
- const invalidFields = [];
22
- if (!isValidEmailAddress(fields.to))
23
- invalidFields.push('to');
24
- if (!isValidEmailAddress(fields.from))
25
- invalidFields.push('from');
26
- if (fields.replyTo !== undefined && !isValidEmailAddress(fields.replyTo))
27
- invalidFields.push('replyTo');
28
- if (invalidFields.length === 0)
29
- return undefined;
30
- return {
31
- code: 'invalid-recipient',
32
- message: `Endereço(s) de e-mail inválido(s): ${invalidFields.join(', ')}.`,
33
- };
34
- }
35
- /**
36
- * Provider canônico de `cap.communication.transactional-email` (RFC-CAPABILITY-TRANSACTIONAL-EMAIL-001 v0.2).
37
- * Extensões (`templateRenderer`/`senderResolver`/`hooks`/`dedupStore`) são injetadas na construção,
38
- * nunca descobertas por convenção (RFC §4.7).
39
- */
40
- function createTransactionalEmailProvider(config) {
41
- const templateRenderer = config.templateRenderer ?? new template_renderer_js_1.PassthroughTemplateRenderer();
42
- const senderResolver = config.senderResolver ?? new sender_resolver_js_1.StaticSenderResolver(config.defaultFrom);
43
- const hooks = config.hooks ?? [];
44
- const dedupStore = config.dedupStore ?? new dedup_store_js_1.InMemoryDedupStore();
45
- const timeoutMs = config.timeoutMs ?? types_js_1.DEFAULT_TIMEOUT_MS;
46
- const remoteReservationPollIntervalMs = config.remoteReservationPollIntervalMs ?? types_js_1.DEFAULT_REMOTE_RESERVATION_POLL_INTERVAL_MS;
47
- const remoteReservationMaxWaitMs = config.remoteReservationMaxWaitMs ?? types_js_1.DEFAULT_REMOTE_RESERVATION_MAX_WAIT_MS;
48
- const apiKey = config.apiKey;
49
- /**
50
- * Nenhuma chamada ao `DedupStore` (`reserve`/`get`/`set`) pode escapar sem tratamento
51
- * (Bloqueador 1 — Certification Round 2: sanitização não pode se limitar ao `DeliveryResult`;
52
- * uma implementação de store real — Redis/Postgres — pode lançar erros de rede/conexão cuja
53
- * mensagem contém credenciais, ex.: uma connection string). Toda chamada passa por aqui:
54
- * nunca propaga a exceção, sempre loga sanitizado, sempre devolve um fallback seguro.
55
- */
56
- async function safeDedupCall(operation, fn, fallback) {
57
- try {
58
- return await fn();
59
- }
60
- catch (err) {
61
- (0, sanitize_js_1.logSanitized)(`[transactional-email] DedupStore.${operation} falhou (ignorado):`, errorMessage(err), [apiKey]);
62
- return fallback;
63
- }
64
- }
65
- function sleep(ms) {
66
- return new Promise((resolve) => setTimeout(resolve, ms));
67
- }
68
- /**
69
- * Aguarda, de forma limitada, o resultado de uma reserva mantida por outra instância/réplica
70
- * (`DedupStore` `mode: 'shared'`) — é o mecanismo real de coalescência distribuída (Bloqueador 2).
71
- * Nunca espera indefinidamente: `maxWaitMs` limita o tempo total, sempre com um valor determinístico
72
- * ao final (achou o resultado, ou desistiu — nunca fica pendurado).
73
- */
74
- async function waitForRemoteResult(dedupKey, pollIntervalMs, maxWaitMs) {
75
- const deadline = Date.now() + maxWaitMs;
76
- while (Date.now() < deadline) {
77
- await sleep(pollIntervalMs);
78
- const entry = await safeDedupCall('get', () => dedupStore.get(dedupKey), null);
79
- if (entry)
80
- return entry;
81
- }
82
- return null;
83
- }
84
- /**
85
- * Coalescência local de envios em andamento por `dedupKey` (Bloqueador 2 — Auditoria Codex).
86
- * A checagem (`get`) e a reserva (criar e guardar a Promise) acontecem no mesmo trecho
87
- * síncrono — sem `await` entre elas — então duas chamadas concorrentes (`Promise.all`)
88
- * nunca observam um estado intermediário: a segunda sempre encontra a Promise da primeira
89
- * já registrada e aguarda o mesmo resultado, em vez de disparar um segundo envio.
90
- * Garantia real: só dentro deste processo Node (mesma instância do Provider). Atomicidade
91
- * entre processos/réplicas depende do `dedupStore.reserve` fornecido (RFC §4.2).
92
- */
93
- const localSendsInFlight = new Map();
94
- /** Resolve `from` e renderiza o template com segurança (Correção 4) — nunca deixa exceção escapar do contrato. */
95
- function prepareSend(input) {
96
- let from;
97
- try {
98
- from = input.from ?? senderResolver.resolveFrom(input.brand);
99
- }
100
- catch (err) {
101
- (0, sanitize_js_1.logSanitized)('[transactional-email] SenderResolver falhou:', errorMessage(err), [apiKey]);
102
- return {
103
- status: 'failed',
104
- error: { code: 'unknown', message: 'Falha ao resolver o remetente do e-mail.' },
105
- };
106
- }
107
- const addressError = validateAddresses({ to: input.to, from, replyTo: input.replyTo });
108
- if (addressError) {
109
- return { status: 'failed', error: addressError };
110
- }
111
- let rendered;
112
- try {
113
- rendered = templateRenderer.render(input.template, input.data);
114
- }
115
- catch (err) {
116
- (0, sanitize_js_1.logSanitized)('[transactional-email] TemplateRenderer falhou:', errorMessage(err), [apiKey]);
117
- return {
118
- status: 'failed',
119
- error: { code: 'unknown', message: 'Falha ao renderizar o template do e-mail.' },
120
- };
121
- }
122
- return { from, rendered };
123
- }
124
- async function performSend(input) {
125
- const prepared = prepareSend(input);
126
- if ('status' in prepared) {
127
- return prepared;
128
- }
129
- return (0, resend_client_js_1.sendViaResend)({
130
- apiKey: apiKey,
131
- from: prepared.from,
132
- to: input.to,
133
- replyTo: input.replyTo,
134
- tag: input.tag,
135
- rendered: prepared.rendered,
136
- timeoutMs,
137
- });
138
- }
139
- async function sendDeduplicated(input, dedupKey) {
140
- const existingInFlight = localSendsInFlight.get(dedupKey);
141
- if (existingInFlight) {
142
- return existingInFlight;
143
- }
144
- const sendPromise = (async () => {
145
- try {
146
- let reservation = await safeDedupCall('reserve', () => dedupStore.reserve(dedupKey, types_js_1.MIN_DEDUP_WINDOW_MS), { acquired: true });
147
- if (!reservation.acquired && reservation.entry) {
148
- return reservation.entry.result;
149
- }
150
- if (!reservation.acquired) {
151
- // Reserva de outra instância/réplica em andamento, sem resultado ainda disponível
152
- // (só ocorre com um DedupStore `mode: 'shared'` real — `InMemoryDedupStore` nunca
153
- // devolve esse caso, ver seu jsdoc). Bloqueador 2 (Certification Round 2): a versão
154
- // anterior caía direto em `performSend` aqui, reenviando às cegas. Agora espera de
155
- // forma limitada pelo resultado real da outra instância antes de decidir qualquer coisa.
156
- const remoteEntry = await waitForRemoteResult(dedupKey, remoteReservationPollIntervalMs, remoteReservationMaxWaitMs);
157
- if (remoteEntry) {
158
- return remoteEntry.result;
159
- }
160
- // Esgotado o tempo de espera: a reserva remota pode estar órfã (a instância que a
161
- // detinha morreu sem liberar) — tenta assumir. Se o TTL da reserva remota já expirou
162
- // no store, esta chamada adquire; caso contrário, ainda pertence a outra instância viva.
163
- reservation = await safeDedupCall('reserve', () => dedupStore.reserve(dedupKey, types_js_1.MIN_DEDUP_WINDOW_MS), { acquired: true });
164
- if (!reservation.acquired) {
165
- if (reservation.entry) {
166
- return reservation.entry.result;
167
- }
168
- // Ainda sem dono claro após a espera + nova tentativa: nunca reenviar às cegas
169
- // (romperia o invariante de dedup). Falha determinística e retryable — o consumidor
170
- // decide se tenta de novo (RFC §5, taxonomia por retryability).
171
- return {
172
- status: 'failed',
173
- error: {
174
- code: 'provider-unavailable',
175
- message: 'Coordenação de deduplicação não respondeu a tempo; tente novamente.',
176
- },
177
- };
178
- }
179
- }
180
- // `reservation.acquired === true`: este chamador é o dono do envio.
181
- const result = await performSend(input);
182
- await safeDedupCall('set', () => dedupStore.set(dedupKey, { result, expiresAt: Date.now() + types_js_1.MIN_DEDUP_WINDOW_MS }), undefined);
183
- return result;
184
- }
185
- finally {
186
- localSendsInFlight.delete(dedupKey);
187
- }
188
- })();
189
- localSendsInFlight.set(dedupKey, sendPromise);
190
- return sendPromise;
191
- }
192
- async function sendTransactionalEmail(rawInput) {
193
- let input = rawInput;
194
- for (const hook of hooks) {
195
- if (hook.beforeSend) {
196
- input = runSafely(() => hook.beforeSend(input), apiKey) ?? input;
197
- }
198
- }
199
- const startedAt = Date.now();
200
- if (!apiKey) {
201
- const result = { status: 'skipped' };
202
- logOutcome(input, result, startedAt, apiKey);
203
- notifyAfterSend(hooks, input, result, apiKey);
204
- return result;
205
- }
206
- const dedupKey = input.idempotencyKey
207
- ? (0, dedup_store_js_1.buildDedupKey)(input.to, input.template, input.idempotencyKey)
208
- : null;
209
- const result = dedupKey ? await sendDeduplicated(input, dedupKey) : await performSend(input);
210
- logOutcome(input, result, startedAt, apiKey);
211
- notifyAfterSend(hooks, input, result, apiKey);
212
- return result;
213
- }
214
- return { sendTransactionalEmail };
215
- }
216
- function errorMessage(err) {
217
- return err instanceof Error ? err.message : String(err);
218
- }
219
- /**
220
- * Log estruturado mínimo de observabilidade (validação operacional pré-certificação).
221
- * Sempre sanitizado — nunca inclui a apiKey nem o corpo bruto do provider (Bloqueador 1).
222
- * Não inclui identificador de correlação porque o contrato atual (`SendTransactionalEmailInput`)
223
- * não define um — não é inventado aqui (RFC não estende o contrato nesta correção).
224
- */
225
- function logOutcome(input, result, startedAt, apiKey) {
226
- (0, sanitize_js_1.logSanitizedInfo)('[transactional-email] outcome', {
227
- status: result.status,
228
- errorCode: result.error?.code,
229
- durationMs: Date.now() - startedAt,
230
- template: input.template,
231
- deduplicated: Boolean(input.idempotencyKey),
232
- }, [apiKey]);
233
- }
234
- /** Hooks nunca podem quebrar o envio principal — falha de um hook é ignorada (logada), não propagada. */
235
- function runSafely(fn, apiKey) {
236
- try {
237
- return fn();
238
- }
239
- catch (err) {
240
- (0, sanitize_js_1.logSanitized)('[transactional-email] hook falhou (ignorado):', errorMessage(err), [apiKey]);
241
- return undefined;
242
- }
243
- }
244
- function notifyAfterSend(hooks, input, result, apiKey) {
245
- for (const hook of hooks) {
246
- if (hook.afterSend) {
247
- runSafely(() => hook.afterSend(input, result), apiKey);
248
- }
249
- }
250
- }
14
+ var communication_1 = require("@baruk/communication");
15
+ Object.defineProperty(exports, "createTransactionalEmailProvider", { enumerable: true, get: function () { return communication_1.createTransactionalEmailProvider; } });
251
16
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/mail/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/mail/provider.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,sDAAwE;AAA/D,iIAAA,gCAAgC,OAAA"}
@@ -1,21 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sendEmail = sendEmail;
4
- async function sendEmail(apiKey, msg) {
5
- if (!apiKey)
6
- return false;
7
- try {
8
- const res = await fetch('https://api.resend.com/emails', {
9
- method: 'POST',
10
- headers: { authorization: `Bearer ${apiKey}`, 'content-type': 'application/json' },
11
- body: JSON.stringify(msg),
12
- // Best-effort com teto: um Resend pendurado não pode segurar o chamador.
13
- signal: AbortSignal.timeout(8000),
14
- });
15
- return res.ok;
16
- }
17
- catch {
18
- return false;
19
- }
20
- }
3
+ exports.sendEmailWithResult = exports.sendEmail = void 0;
4
+ /*
5
+ * RE-EXPORT — a implementação vive em `@baruk/communication`.
6
+ *
7
+ * Este arquivo era uma cópia da capability `cap.communication.transactional-email`. A
8
+ * mesma implementação existia aqui e no engine canônico, e duas cópias de um provider de
9
+ * comunicação divergem: uma ganha a correção, a outra não, e ninguém percebe até um
10
+ * consumidor receber o comportamento antigo.
11
+ *
12
+ * O caminho de import é preservado de propósito: nenhum consumidor muda uma linha.
13
+ */
14
+ var communication_1 = require("@baruk/communication");
15
+ Object.defineProperty(exports, "sendEmail", { enumerable: true, get: function () { return communication_1.sendEmail; } });
16
+ Object.defineProperty(exports, "sendEmailWithResult", { enumerable: true, get: function () { return communication_1.sendEmailWithResult; } });
21
17
  //# sourceMappingURL=resend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resend.js","sourceRoot":"","sources":["../../../src/mail/resend.ts"],"names":[],"mappings":";;AAYA,8BAcC;AAdM,KAAK,UAAU,SAAS,CAAC,MAA0B,EAAE,GAAiB;IAC3E,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,+BAA+B,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAClF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACzB,yEAAyE;YACzE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"resend.js","sourceRoot":"","sources":["../../../src/mail/resend.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,sDAAsE;AAA7D,0GAAA,SAAS,OAAA;AAAE,oHAAA,mBAAmB,OAAA"}
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StaticSenderResolver = void 0;
4
- /** Default — sempre retorna o `from` configurado no Provider, ignorando `brand` (RFC §4.5, precedência 3). */
5
- class StaticSenderResolver {
6
- defaultFrom;
7
- constructor(defaultFrom) {
8
- this.defaultFrom = defaultFrom;
9
- }
10
- resolveFrom() {
11
- return this.defaultFrom;
12
- }
13
- }
14
- exports.StaticSenderResolver = StaticSenderResolver;
4
+ /*
5
+ * RE-EXPORT — a implementação vive em `@baruk/communication`.
6
+ *
7
+ * Este arquivo era uma cópia da capability `cap.communication.transactional-email`. A
8
+ * mesma implementação existia aqui e no engine canônico, e duas cópias de um provider de
9
+ * comunicação divergem: uma ganha a correção, a outra não, e ninguém percebe até um
10
+ * consumidor receber o comportamento antigo.
11
+ *
12
+ * O caminho de import é preservado de propósito: nenhum consumidor muda uma linha.
13
+ */
14
+ var communication_1 = require("@baruk/communication");
15
+ Object.defineProperty(exports, "StaticSenderResolver", { enumerable: true, get: function () { return communication_1.StaticSenderResolver; } });
15
16
  //# sourceMappingURL=sender-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sender-resolver.js","sourceRoot":"","sources":["../../../src/mail/sender-resolver.ts"],"names":[],"mappings":";;;AAEA,8GAA8G;AAC9G,MAAa,oBAAoB;IACF;IAA7B,YAA6B,WAAyB;QAAzB,gBAAW,GAAX,WAAW,CAAc;IAAG,CAAC;IAE1D,WAAW;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAND,oDAMC"}
1
+ {"version":3,"file":"sender-resolver.js","sourceRoot":"","sources":["../../../src/mail/sender-resolver.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,sDAA4D;AAAnD,qHAAA,oBAAoB,OAAA"}
@@ -1,21 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PassthroughTemplateRenderer = void 0;
4
- /**
5
- * Defaultescape hatch para consumidores sem motor de template (RFC §4.3, melhoria recomendada).
6
- * `data` já deve chegar como `{ subject, html, text? }` pronto; `template` é usado só como
7
- * rótulo opaco (logging/tag), nunca resolvido.
4
+ /*
5
+ * RE-EXPORTa implementação vive em `@baruk/communication`.
6
+ *
7
+ * Este arquivo era uma cópia da capability `cap.communication.transactional-email`. A
8
+ * mesma implementação existia aqui e no engine canônico, e duas cópias de um provider de
9
+ * comunicação divergem: uma ganha a correção, a outra não, e ninguém percebe até um
10
+ * consumidor receber o comportamento antigo.
11
+ *
12
+ * O caminho de import é preservado de propósito: nenhum consumidor muda uma linha.
8
13
  */
9
- class PassthroughTemplateRenderer {
10
- render(template, data) {
11
- const subject = data['subject'];
12
- const html = data['html'];
13
- const text = data['text'];
14
- if (typeof subject !== 'string' || typeof html !== 'string') {
15
- throw new Error(`PassthroughTemplateRenderer: template "${template}" exige data.subject e data.html como string`);
16
- }
17
- return { subject, html, text: typeof text === 'string' ? text : undefined };
18
- }
19
- }
20
- exports.PassthroughTemplateRenderer = PassthroughTemplateRenderer;
14
+ var communication_1 = require("@baruk/communication");
15
+ Object.defineProperty(exports, "PassthroughTemplateRenderer", { enumerable: true, get: function () { return communication_1.PassthroughTemplateRenderer; } });
21
16
  //# sourceMappingURL=template-renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template-renderer.js","sourceRoot":"","sources":["../../../src/mail/template-renderer.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,MAAa,2BAA2B;IACtC,MAAM,CAAC,QAAgB,EAAE,IAA6B;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CACb,0CAA0C,QAAQ,8CAA8C,CACjG,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC9E,CAAC;CACF;AAdD,kEAcC"}
1
+ {"version":3,"file":"template-renderer.js","sourceRoot":"","sources":["../../../src/mail/template-renderer.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,sDAAmE;AAA1D,4HAAA,2BAA2B,OAAA"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ /**
3
+ * A porta ÚNICA de e-mail para os fluxos que não passam pelo motor multicanal.
4
+ *
5
+ * ## O bloqueador que este arquivo fecha
6
+ *
7
+ * `SINGLE_DISPATCH_AUTHORITY=FAIL`. O guard da rodada anterior varria só
8
+ * `packages/core/src` e não enxergava o que estava do lado de fora:
9
+ *
10
+ * apps/api/src/routes/admin.ts → sendEmail(process.env.RESEND_API_KEY, …)
11
+ * apps/api/src/routes/documents.ts → sendEmail(process.env.RESEND_API_KEY, …)
12
+ * apps/api/src/routes/auth.ts → sendEmail(process.env.RESEND_API_KEY, …)
13
+ * packages/core/src/subscription-billing/service.ts → sendEmail(cfg.resendApiKey, …)
14
+ *
15
+ * Quatro caminhos de APLICAÇÃO chamando o transporte direto, cada um lendo a
16
+ * credencial e o remetente por conta própria. Não é um cliente provider paralelo
17
+ * — é o mesmo transporte —, mas é código de domínio alcançando a borda de envio
18
+ * sem passar por autoridade nenhuma, que é o que o adendo §12 proíbe.
19
+ *
20
+ * ## O que ela NÃO é
21
+ *
22
+ * **Não é o motor multicanal, e não finge ser.** Convite, reconvite, acesso ao
23
+ * Portal e recuperação de senha são comunicação de IDENTIDADE: acontecem antes de
24
+ * existir cliente, antes de existir consentimento de contribuinte, e — no caso do
25
+ * `forgot-password` — antes de existir sessão de onde tirar um tenant. Passá-los
26
+ * pelo `dispatch` exigiria inventar `recipientRef`, `subjectRef`, template
27
+ * aprovado e conta de canal para cada um; a fase que fizer isso é própria, e
28
+ * `AUTH_EMAIL_NOT_ON_SHARED_ENGINE` fica registrada como dívida.
29
+ *
30
+ * O que ela é: um **adapter de entrada** (§13). Fluxo legado sem cliente provider
31
+ * próprio, com uma porta só, nominal e vigiada.
32
+ *
33
+ * ## O que ela acrescenta de verdade
34
+ *
35
+ * Uma barreira que só renomeia o caminho não é correção. Estes fluxos ganham,
36
+ * aqui, três coisas que nenhum deles tinha:
37
+ *
38
+ * 1. **Idempotência de provider.** Nenhum dos quatro mandava `Idempotency-Key`.
39
+ * Duplo-clique em "convidar" ou retry de cron produzia duas mensagens
40
+ * idênticas na caixa de quem recebe. A chave é derivada do CONTEÚDO (ver
41
+ * `identityFor`), então retry idêntico dedupe e reconvite legítimo — que
42
+ * carrega um token novo — passa.
43
+ * 2. **Um lugar só para a credencial.** `process.env.RESEND_API_KEY` deixa de
44
+ * ser lido em quatro arquivos. Quatro leituras é onde uma delas fica para
45
+ * trás no dia da rotação.
46
+ * 3. **Um alvo só para o guard.** O guard de fronteira global proíbe `sendEmail*`
47
+ * em todo o repositório exceto no transporte, nos adapters do motor e aqui.
48
+ */
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.sendTransactionalOutboundWithResult = sendTransactionalOutboundWithResult;
51
+ exports.sendTransactionalOutbound = sendTransactionalOutbound;
52
+ const node_crypto_1 = require("node:crypto");
53
+ const resend_js_1 = require("./resend.js");
54
+ /**
55
+ * A chave que o provider vai deduplicar.
56
+ *
57
+ * Derivada do CONTEÚDO — destinatário, assunto, remetente e corpo — e não de um
58
+ * identificador de negócio. A escolha decide o comportamento em produção:
59
+ *
60
+ * • retry idêntico (duplo-clique, reexecução de cron) produz a MESMA chave, e o
61
+ * Resend devolve a resposta original sem mandar a segunda mensagem;
62
+ * • reconvite legítimo carrega um token novo no corpo, logo uma chave nova, e
63
+ * sai normalmente.
64
+ *
65
+ * Derivar de `kind + destinatário` faria o oposto e seria pior que não ter chave:
66
+ * o reconvite legítimo seria silenciosamente descartado pelo provider dentro da
67
+ * janela de 24 h, e ninguém veria — a resposta de um replay é `200`.
68
+ *
69
+ * `sha256` hexadecimal, 64 caracteres, dentro do limite de 1 a 256 do provider.
70
+ */
71
+ function identityFor(req) {
72
+ /*
73
+ * Serializado como ARRAY, e não concatenado com um separador.
74
+ *
75
+ * Concatenar campos com um caractere qualquer é ambíguo: `to='a b'` com
76
+ * `from='c'` produz a mesma cadeia que `to='a'` com `from='b c'`, e duas
77
+ * mensagens diferentes ganhariam a mesma chave — o provider descartaria a
78
+ * segunda como replay. `JSON.stringify` de um array escapa os campos e o
79
+ * comprimento fica implícito na estrutura, então nenhum conteúdo consegue
80
+ * imitar a fronteira entre dois campos.
81
+ */
82
+ const material = JSON.stringify([
83
+ req.kind,
84
+ req.message.to,
85
+ req.message.from,
86
+ req.message.subject,
87
+ req.message.html,
88
+ req.message.text ?? null,
89
+ ]);
90
+ return (0, node_crypto_1.createHash)('sha256').update(material, 'utf8').digest('hex');
91
+ }
92
+ /**
93
+ * Envia, com o desfecho detalhado.
94
+ *
95
+ * Best-effort como sempre foi: devolve o resultado, nunca lança. Quem chama
96
+ * decide o que fazer — e continua podendo distinguir "o provider recusou" de "a
97
+ * mensagem saiu", que é a distinção que fez o Portal ficar meses sem acesso
98
+ * ativo quando ela não existia.
99
+ */
100
+ async function sendTransactionalOutboundWithResult(req) {
101
+ return (0, resend_js_1.sendEmailWithResult)(req.apiKey ?? process.env.RESEND_API_KEY, req.message, {
102
+ idempotencyKey: identityFor(req),
103
+ fetchImpl: req.fetchImpl,
104
+ });
105
+ }
106
+ /**
107
+ * Envia e devolve só se saiu.
108
+ *
109
+ * A forma que os quatro chamadores legados já usavam (`boolean`), preservada para
110
+ * que a consolidação não mude a resposta de nenhuma rota — nem o `201` do
111
+ * convite, nem o campo `invitationEmailSent` que a tela lê.
112
+ */
113
+ async function sendTransactionalOutbound(req) {
114
+ const result = await sendTransactionalOutboundWithResult(req);
115
+ return result.ok;
116
+ }
117
+ //# sourceMappingURL=transactional-outbound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-outbound.js","sourceRoot":"","sources":["../../../src/mail/transactional-outbound.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;;AAuGH,kFAOC;AASD,8DAGC;AAxHD,6CAAyC;AACzC,2CAA2F;AAqD3F;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,WAAW,CAAC,GAA8B;IACjD;;;;;;;;;OASG;IACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,GAAG,CAAC,IAAI;QACR,GAAG,CAAC,OAAO,CAAC,EAAE;QACd,GAAG,CAAC,OAAO,CAAC,IAAI;QAChB,GAAG,CAAC,OAAO,CAAC,OAAO;QACnB,GAAG,CAAC,OAAO,CAAC,IAAI;QAChB,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI;KACzB,CAAC,CAAC;IACH,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,mCAAmC,CACvD,GAA8B;IAE9B,OAAO,IAAA,+BAAmB,EAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE;QAChF,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;KACzB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,yBAAyB,CAAC,GAA8B;IAC5E,MAAM,MAAM,GAAG,MAAM,mCAAmC,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC"}
@@ -1,38 +1,11 @@
1
1
  "use strict";
2
- // cap.communication.transactional-email — contrato canônico (RFC-CAPABILITY-TRANSACTIONAL-EMAIL-001 v0.2).
3
- // Ver docs/governance/RFC-CAPABILITY-TRANSACTIONAL-EMAIL-001.md no repo baruk-ecosystem.
4
2
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.DEFAULT_REMOTE_RESERVATION_MAX_WAIT_MS = exports.DEFAULT_REMOTE_RESERVATION_POLL_INTERVAL_MS = exports.DEFAULT_TIMEOUT_MS = exports.MIN_DEDUP_WINDOW_MS = exports.TRANSACTIONAL_EMAIL_CONTRACT_VERSION = void 0;
6
- exports.isRetryableError = isRetryableError;
7
- /**
8
- * Versão do contrato público desta capability (RFC-CAPABILITY-TRANSACTIONAL-EMAIL-001 §12, SemVer próprio
9
- * de capability independente da versão do pacote `@baruk/core`, que versiona o motor inteiro, não uma
10
- * capability isolada). `0.2.1`: hardening pré-certificação (Capability Certification 001, Auditoria Codex)
11
- * sanitização de segredos, dedup atômica, validação de endereço, exceções internas contidas. `0.2.2`:
12
- * hardening pós-Certification Round 2 sanitização genérica estendida (URI-embedded credentials, token
13
- * estruturado, alta entropia) e coalescência distribuída real (espera limitada por reserva remota em
14
- * andamento, nunca reenvio às cegas). Nenhuma das duas mudou assinatura pública (patch, não minor/major).
15
- */
16
- exports.TRANSACTIONAL_EMAIL_CONTRACT_VERSION = '0.2.2';
17
- /** Janela mínima de deduplicação exigida pela RFC §4.2 (24h) — implementações podem manter por mais tempo, nunca menos. */
18
- exports.MIN_DEDUP_WINDOW_MS = 24 * 60 * 60 * 1000;
19
- /** Timeout padrão do Provider (RFC §5 — herdado empiricamente da implementação mais madura do inventário). */
20
- exports.DEFAULT_TIMEOUT_MS = 12_000;
21
- /**
22
- * Default de poll ao aguardar uma reserva remota em andamento num `DedupStore` `mode: 'shared'`
23
- * (Bloqueador 2 — Certification Round 2). Baixo o suficiente para não atrasar percebivelmente
24
- * o caso comum (reserva local, sem espera nenhuma).
25
- */
26
- exports.DEFAULT_REMOTE_RESERVATION_POLL_INTERVAL_MS = 200;
27
- /**
28
- * Default de tempo máximo de espera por uma reserva remota antes de tentar assumi-la e,
29
- * falhando isso, devolver falha determinística retryable (Bloqueador 2 — Certification Round 2).
30
- * Maior que `DEFAULT_TIMEOUT_MS` — dá à instância dona tempo de terminar o próprio envio
31
- * (que pode levar até `DEFAULT_TIMEOUT_MS`) antes desta instância desistir de esperar.
32
- */
33
- exports.DEFAULT_REMOTE_RESERVATION_MAX_WAIT_MS = 15_000;
34
- /** Utilitário de conveniência para o consumidor decidir retry — não usado internamente pelo core (RFC §5). */
35
- function isRetryableError(code) {
36
- return code === 'timeout' || code === 'provider-unavailable';
37
- }
3
+ exports.isRetryableError = exports.DEFAULT_REMOTE_RESERVATION_MAX_WAIT_MS = exports.DEFAULT_REMOTE_RESERVATION_POLL_INTERVAL_MS = exports.TRANSACTIONAL_EMAIL_CONTRACT_VERSION = exports.MIN_DEDUP_WINDOW_MS = exports.DEFAULT_TIMEOUT_MS = void 0;
4
+ var communication_1 = require("@baruk/communication");
5
+ Object.defineProperty(exports, "DEFAULT_TIMEOUT_MS", { enumerable: true, get: function () { return communication_1.DEFAULT_TIMEOUT_MS; } });
6
+ Object.defineProperty(exports, "MIN_DEDUP_WINDOW_MS", { enumerable: true, get: function () { return communication_1.MIN_DEDUP_WINDOW_MS; } });
7
+ Object.defineProperty(exports, "TRANSACTIONAL_EMAIL_CONTRACT_VERSION", { enumerable: true, get: function () { return communication_1.TRANSACTIONAL_EMAIL_CONTRACT_VERSION; } });
8
+ Object.defineProperty(exports, "DEFAULT_REMOTE_RESERVATION_POLL_INTERVAL_MS", { enumerable: true, get: function () { return communication_1.DEFAULT_REMOTE_RESERVATION_POLL_INTERVAL_MS; } });
9
+ Object.defineProperty(exports, "DEFAULT_REMOTE_RESERVATION_MAX_WAIT_MS", { enumerable: true, get: function () { return communication_1.DEFAULT_REMOTE_RESERVATION_MAX_WAIT_MS; } });
10
+ Object.defineProperty(exports, "isRetryableError", { enumerable: true, get: function () { return communication_1.isRetryableError; } });
38
11
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mail/types.ts"],"names":[],"mappings":";AAAA,2GAA2G;AAC3G,yFAAyF;;;AA8JzF,4CAEC;AAnCD;;;;;;;;GAQG;AACU,QAAA,oCAAoC,GAAG,OAAO,CAAC;AAE5D,2HAA2H;AAC9G,QAAA,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvD,8GAA8G;AACjG,QAAA,kBAAkB,GAAG,MAAM,CAAC;AAEzC;;;;GAIG;AACU,QAAA,2CAA2C,GAAG,GAAG,CAAC;AAE/D;;;;;GAKG;AACU,QAAA,sCAAsC,GAAG,MAAM,CAAC;AAE7D,8GAA8G;AAC9G,SAAgB,gBAAgB,CAAC,IAAuB;IACtD,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,sBAAsB,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mail/types.ts"],"names":[],"mappings":";;;AA0BA,sDAO8B;AAN5B,mHAAA,kBAAkB,OAAA;AAClB,oHAAA,mBAAmB,OAAA;AACnB,qIAAA,oCAAoC,OAAA;AACpC,4IAAA,2CAA2C,OAAA;AAC3C,uIAAA,sCAAsC,OAAA;AACtC,iHAAA,gBAAgB,OAAA"}