@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.
- package/.baruk-provenance.json +10 -0
- package/CHANGELOG.md +97 -0
- package/README.md +9 -2
- package/dist/auth/password-reset.d.ts +30 -1
- package/dist/auth/password-reset.d.ts.map +1 -1
- package/dist/auth/password-reset.js +139 -11
- package/dist/auth/password-reset.js.map +1 -1
- package/dist/auth/service.d.ts +39 -2
- package/dist/auth/service.d.ts.map +1 -1
- package/dist/auth/service.js +75 -10
- package/dist/auth/service.js.map +1 -1
- package/dist/billing/ar-repository.d.ts +334 -0
- package/dist/billing/ar-repository.d.ts.map +1 -0
- package/dist/billing/ar-repository.js +707 -0
- package/dist/billing/ar-repository.js.map +1 -0
- package/dist/billing/auto-generation.d.ts +87 -0
- package/dist/billing/auto-generation.d.ts.map +1 -0
- package/dist/billing/auto-generation.js +181 -0
- package/dist/billing/auto-generation.js.map +1 -0
- package/dist/billing/live-guard.d.ts +64 -0
- package/dist/billing/live-guard.d.ts.map +1 -0
- package/dist/billing/live-guard.js +68 -0
- package/dist/billing/live-guard.js.map +1 -0
- package/dist/billing/payment-means-catalog.d.ts +17 -0
- package/dist/billing/payment-means-catalog.d.ts.map +1 -0
- package/dist/billing/payment-means-catalog.js +21 -0
- package/dist/billing/payment-means-catalog.js.map +1 -0
- package/dist/billing/payment-means.d.ts +38 -0
- package/dist/billing/payment-means.d.ts.map +1 -0
- package/dist/billing/payment-means.js +29 -0
- package/dist/billing/payment-means.js.map +1 -0
- package/dist/billing/payment-rail.d.ts +118 -0
- package/dist/billing/payment-rail.d.ts.map +1 -0
- package/dist/billing/payment-rail.js +295 -0
- package/dist/billing/payment-rail.js.map +1 -0
- package/dist/billing/provider/asaas.d.ts +46 -1
- package/dist/billing/provider/asaas.d.ts.map +1 -1
- package/dist/billing/provider/asaas.js +194 -14
- package/dist/billing/provider/asaas.js.map +1 -1
- package/dist/billing/provider/manual.js +1 -1
- package/dist/billing/provider/manual.js.map +1 -1
- package/dist/billing/provider/types.d.ts +115 -8
- package/dist/billing/provider/types.d.ts.map +1 -1
- package/dist/billing/provider-account.d.ts +89 -0
- package/dist/billing/provider-account.d.ts.map +1 -0
- package/dist/billing/provider-account.js +161 -0
- package/dist/billing/provider-account.js.map +1 -0
- package/dist/billing/provider-onboarding.d.ts +67 -0
- package/dist/billing/provider-onboarding.d.ts.map +1 -0
- package/dist/billing/provider-onboarding.js +234 -0
- package/dist/billing/provider-onboarding.js.map +1 -0
- package/dist/billing/receivable.d.ts +5 -1
- package/dist/billing/receivable.d.ts.map +1 -1
- package/dist/billing/reconcile.d.ts +58 -0
- package/dist/billing/reconcile.d.ts.map +1 -0
- package/dist/billing/reconcile.js +138 -0
- package/dist/billing/reconcile.js.map +1 -0
- package/dist/billing/repository.d.ts +90 -1
- package/dist/billing/repository.d.ts.map +1 -1
- package/dist/billing/repository.js +148 -19
- package/dist/billing/repository.js.map +1 -1
- package/dist/cjs/auth/password-reset.js +141 -11
- package/dist/cjs/auth/password-reset.js.map +1 -1
- package/dist/cjs/auth/service.js +75 -9
- package/dist/cjs/auth/service.js.map +1 -1
- package/dist/cjs/billing/ar-repository.js +728 -0
- package/dist/cjs/billing/ar-repository.js.map +1 -0
- package/dist/cjs/billing/auto-generation.js +186 -0
- package/dist/cjs/billing/auto-generation.js.map +1 -0
- package/dist/cjs/billing/live-guard.js +72 -0
- package/dist/cjs/billing/live-guard.js.map +1 -0
- package/dist/cjs/billing/payment-means-catalog.js +25 -0
- package/dist/cjs/billing/payment-means-catalog.js.map +1 -0
- package/dist/cjs/billing/payment-means.js +33 -0
- package/dist/cjs/billing/payment-means.js.map +1 -0
- package/dist/cjs/billing/payment-rail.js +301 -0
- package/dist/cjs/billing/payment-rail.js.map +1 -0
- package/dist/cjs/billing/provider/asaas.js +194 -14
- package/dist/cjs/billing/provider/asaas.js.map +1 -1
- package/dist/cjs/billing/provider/manual.js +1 -1
- package/dist/cjs/billing/provider/manual.js.map +1 -1
- package/dist/cjs/billing/provider-account.js +170 -0
- package/dist/cjs/billing/provider-account.js.map +1 -0
- package/dist/cjs/billing/provider-onboarding.js +239 -0
- package/dist/cjs/billing/provider-onboarding.js.map +1 -0
- package/dist/cjs/billing/reconcile.js +143 -0
- package/dist/cjs/billing/reconcile.js.map +1 -0
- package/dist/cjs/billing/repository.js +150 -18
- package/dist/cjs/billing/repository.js.map +1 -1
- package/dist/cjs/clients/repository.js +96 -20
- package/dist/cjs/clients/repository.js.map +1 -1
- package/dist/cjs/collection/branding.js +140 -0
- package/dist/cjs/collection/branding.js.map +1 -0
- package/dist/cjs/collection/channel-accounts.js +137 -0
- package/dist/cjs/collection/channel-accounts.js.map +1 -0
- package/dist/cjs/collection/channel.js +17 -0
- package/dist/cjs/collection/channel.js.map +1 -0
- package/dist/cjs/collection/communication-bridge.js +140 -0
- package/dist/cjs/collection/communication-bridge.js.map +1 -0
- package/dist/cjs/collection/communication-runtime.js +193 -0
- package/dist/cjs/collection/communication-runtime.js.map +1 -0
- package/dist/cjs/collection/consent-repository.js +84 -0
- package/dist/cjs/collection/consent-repository.js.map +1 -0
- package/dist/cjs/collection/copy.js +125 -0
- package/dist/cjs/collection/copy.js.map +1 -0
- package/dist/cjs/collection/delivery-callback.js +151 -0
- package/dist/cjs/collection/delivery-callback.js.map +1 -0
- package/dist/cjs/collection/email-layout.js +252 -0
- package/dist/cjs/collection/email-layout.js.map +1 -0
- package/dist/cjs/collection/engine.js +414 -0
- package/dist/cjs/collection/engine.js.map +1 -0
- package/dist/cjs/collection/format.js +76 -0
- package/dist/cjs/collection/format.js.map +1 -0
- package/dist/cjs/collection/payment-block.js +3 -0
- package/dist/cjs/collection/payment-block.js.map +1 -0
- package/dist/cjs/collection/policy.js +147 -0
- package/dist/cjs/collection/policy.js.map +1 -0
- package/dist/cjs/collection/repository.js +260 -0
- package/dist/cjs/collection/repository.js.map +1 -0
- package/dist/cjs/collection/subject.js +104 -0
- package/dist/cjs/collection/subject.js.map +1 -0
- package/dist/cjs/collection/template-catalog.js +165 -0
- package/dist/cjs/collection/template-catalog.js.map +1 -0
- package/dist/cjs/collection/template.js +78 -0
- package/dist/cjs/collection/template.js.map +1 -0
- package/dist/cjs/communication/adapters/email.js +132 -0
- package/dist/cjs/communication/adapters/email.js.map +1 -0
- package/dist/cjs/communication/adapters/sms.js +127 -0
- package/dist/cjs/communication/adapters/sms.js.map +1 -0
- package/dist/cjs/communication/adapters/whatsapp-language.js +39 -0
- package/dist/cjs/communication/adapters/whatsapp-language.js.map +1 -0
- package/dist/cjs/communication/adapters/whatsapp-templates.js +100 -0
- package/dist/cjs/communication/adapters/whatsapp-templates.js.map +1 -0
- package/dist/cjs/communication/adapters/whatsapp.js +213 -0
- package/dist/cjs/communication/adapters/whatsapp.js.map +1 -0
- package/dist/cjs/communication/audit.js +61 -0
- package/dist/cjs/communication/audit.js.map +1 -0
- package/dist/cjs/communication/capabilities.js +76 -0
- package/dist/cjs/communication/capabilities.js.map +1 -0
- package/dist/cjs/communication/channel.js +53 -0
- package/dist/cjs/communication/channel.js.map +1 -0
- package/dist/cjs/communication/claim.js +228 -0
- package/dist/cjs/communication/claim.js.map +1 -0
- package/dist/cjs/communication/consent.js +43 -0
- package/dist/cjs/communication/consent.js.map +1 -0
- package/dist/cjs/communication/context.js +45 -0
- package/dist/cjs/communication/context.js.map +1 -0
- package/dist/cjs/communication/credentials.js +121 -0
- package/dist/cjs/communication/credentials.js.map +1 -0
- package/dist/cjs/communication/dry-run-scenario.js +161 -0
- package/dist/cjs/communication/dry-run-scenario.js.map +1 -0
- package/dist/cjs/communication/dry-run.js +97 -0
- package/dist/cjs/communication/dry-run.js.map +1 -0
- package/dist/cjs/communication/engine.js +483 -0
- package/dist/cjs/communication/engine.js.map +1 -0
- package/dist/cjs/communication/graph.js +50 -0
- package/dist/cjs/communication/graph.js.map +1 -0
- package/dist/cjs/communication/idempotency.js +26 -0
- package/dist/cjs/communication/idempotency.js.map +1 -0
- package/dist/cjs/communication/identity.js +110 -0
- package/dist/cjs/communication/identity.js.map +1 -0
- package/dist/cjs/communication/index.js +135 -0
- package/dist/cjs/communication/index.js.map +1 -0
- package/dist/cjs/communication/onboarding.js +297 -0
- package/dist/cjs/communication/onboarding.js.map +1 -0
- package/dist/cjs/communication/policy.js +16 -0
- package/dist/cjs/communication/policy.js.map +1 -0
- package/dist/cjs/communication/routing.js +77 -0
- package/dist/cjs/communication/routing.js.map +1 -0
- package/dist/cjs/communication/sender-profile.js +128 -0
- package/dist/cjs/communication/sender-profile.js.map +1 -0
- package/dist/cjs/communication/status.js +86 -0
- package/dist/cjs/communication/status.js.map +1 -0
- package/dist/cjs/communication/stores/onboarding.js +135 -0
- package/dist/cjs/communication/stores/onboarding.js.map +1 -0
- package/dist/cjs/communication/stores/postgres.js +458 -0
- package/dist/cjs/communication/stores/postgres.js.map +1 -0
- package/dist/cjs/communication/stores/routing.js +334 -0
- package/dist/cjs/communication/stores/routing.js.map +1 -0
- package/dist/cjs/communication/stores/secrets.js +126 -0
- package/dist/cjs/communication/stores/secrets.js.map +1 -0
- package/dist/cjs/communication/template-provider.js +22 -0
- package/dist/cjs/communication/template-provider.js.map +1 -0
- package/dist/cjs/communication/template.js +63 -0
- package/dist/cjs/communication/template.js.map +1 -0
- package/dist/cjs/communication/webhook-subscription.js +258 -0
- package/dist/cjs/communication/webhook-subscription.js.map +1 -0
- package/dist/cjs/communication/webhook.js +292 -0
- package/dist/cjs/communication/webhook.js.map +1 -0
- package/dist/cjs/competence/repository.js +309 -0
- package/dist/cjs/competence/repository.js.map +1 -0
- package/dist/cjs/contacts/phone.js +192 -0
- package/dist/cjs/contacts/phone.js.map +1 -0
- package/dist/cjs/db/seed-catalog.js +48 -0
- package/dist/cjs/db/seed-catalog.js.map +1 -0
- package/dist/cjs/db/seed.js +15 -7
- package/dist/cjs/db/seed.js.map +1 -1
- package/dist/cjs/documents/repository.js +244 -0
- package/dist/cjs/documents/repository.js.map +1 -0
- package/dist/cjs/documents/requests.js +136 -0
- package/dist/cjs/documents/requests.js.map +1 -0
- package/dist/cjs/index.js +427 -48
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/legal/company.js +36 -0
- package/dist/cjs/legal/company.js.map +1 -0
- package/dist/cjs/legal/documents.js +671 -0
- package/dist/cjs/legal/documents.js.map +1 -0
- package/dist/cjs/legal/index.js +15 -0
- package/dist/cjs/legal/index.js.map +1 -0
- package/dist/cjs/legal/types.js +34 -0
- package/dist/cjs/legal/types.js.map +1 -0
- package/dist/cjs/mail/auth-templates.js +29 -0
- package/dist/cjs/mail/auth-templates.js.map +1 -0
- package/dist/cjs/mail/dedup-store.js +12 -51
- package/dist/cjs/mail/dedup-store.js.map +1 -1
- package/dist/cjs/mail/index.js +16 -4
- package/dist/cjs/mail/index.js.map +1 -1
- package/dist/cjs/mail/provider.js +12 -247
- package/dist/cjs/mail/provider.js.map +1 -1
- package/dist/cjs/mail/resend.js +14 -18
- package/dist/cjs/mail/resend.js.map +1 -1
- package/dist/cjs/mail/sender-resolver.js +12 -11
- package/dist/cjs/mail/sender-resolver.js.map +1 -1
- package/dist/cjs/mail/template-renderer.js +11 -16
- package/dist/cjs/mail/template-renderer.js.map +1 -1
- package/dist/cjs/mail/transactional-outbound.js +117 -0
- package/dist/cjs/mail/transactional-outbound.js.map +1 -0
- package/dist/cjs/mail/types.js +8 -35
- package/dist/cjs/mail/types.js.map +1 -1
- package/dist/cjs/portal/provisioning.js +144 -0
- package/dist/cjs/portal/provisioning.js.map +1 -0
- package/dist/cjs/pricing-engine/canonical.js +42 -0
- package/dist/cjs/pricing-engine/canonical.js.map +1 -0
- package/dist/cjs/pricing-engine/errors.js +6 -1
- package/dist/cjs/pricing-engine/errors.js.map +1 -1
- package/dist/cjs/pricing-engine/index.js +12 -1
- package/dist/cjs/pricing-engine/index.js.map +1 -1
- package/dist/cjs/pricing-engine/pipeline.js +200 -26
- package/dist/cjs/pricing-engine/pipeline.js.map +1 -1
- package/dist/cjs/pricing-engine/shadow-adapter.js +79 -0
- package/dist/cjs/pricing-engine/shadow-adapter.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-diff.js +55 -0
- package/dist/cjs/pricing-engine/shadow-diff.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-facade.js +85 -0
- package/dist/cjs/pricing-engine/shadow-facade.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-legacy-types.js +19 -0
- package/dist/cjs/pricing-engine/shadow-legacy-types.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-metrics.js +34 -0
- package/dist/cjs/pricing-engine/shadow-metrics.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow-normalizer.js +42 -0
- package/dist/cjs/pricing-engine/shadow-normalizer.js.map +1 -0
- package/dist/cjs/rbac/authorize.js +28 -0
- package/dist/cjs/rbac/authorize.js.map +1 -1
- package/dist/cjs/rbac/catalog.js +67 -1
- package/dist/cjs/rbac/catalog.js.map +1 -1
- package/dist/cjs/rbac/workload-provisioning.js +160 -0
- package/dist/cjs/rbac/workload-provisioning.js.map +1 -0
- package/dist/cjs/rbac/workload.js +191 -0
- package/dist/cjs/rbac/workload.js.map +1 -0
- package/dist/cjs/storage/checksum.js +15 -0
- package/dist/cjs/storage/checksum.js.map +1 -0
- package/dist/cjs/storage/key.js +72 -0
- package/dist/cjs/storage/key.js.map +1 -0
- package/dist/cjs/storage/local.js +100 -0
- package/dist/cjs/storage/local.js.map +1 -0
- package/dist/cjs/storage/r2.js +181 -0
- package/dist/cjs/storage/r2.js.map +1 -0
- package/dist/cjs/storage/registry.js +41 -0
- package/dist/cjs/storage/registry.js.map +1 -0
- package/dist/cjs/storage/types.js +50 -0
- package/dist/cjs/storage/types.js.map +1 -0
- package/dist/cjs/subscription-billing/provider/asaas.js +32 -7
- package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -1
- package/dist/cjs/subscription-billing/provider/disabled.js +8 -0
- package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -1
- package/dist/cjs/subscription-billing/provider/registry.js +17 -0
- package/dist/cjs/subscription-billing/provider/registry.js.map +1 -1
- package/dist/cjs/subscription-billing/service.js +57 -8
- package/dist/cjs/subscription-billing/service.js.map +1 -1
- package/dist/cjs/subscription-billing/types.js.map +1 -1
- package/dist/cjs/tenancy/provisioning.js +32 -8
- package/dist/cjs/tenancy/provisioning.js.map +1 -1
- package/dist/cjs/users/repository.js +119 -2
- package/dist/cjs/users/repository.js.map +1 -1
- package/dist/cjs/vault/repository.js +81 -0
- package/dist/cjs/vault/repository.js.map +1 -1
- package/dist/clients/repository.d.ts +42 -0
- package/dist/clients/repository.d.ts.map +1 -1
- package/dist/clients/repository.js +94 -21
- package/dist/clients/repository.js.map +1 -1
- package/dist/collection/branding.d.ts +72 -0
- package/dist/collection/branding.d.ts.map +1 -0
- package/dist/collection/branding.js +136 -0
- package/dist/collection/branding.js.map +1 -0
- package/dist/collection/channel-accounts.d.ts +57 -0
- package/dist/collection/channel-accounts.d.ts.map +1 -0
- package/dist/collection/channel-accounts.js +133 -0
- package/dist/collection/channel-accounts.js.map +1 -0
- package/dist/collection/channel.d.ts +24 -0
- package/dist/collection/channel.d.ts.map +1 -0
- package/dist/collection/channel.js +16 -0
- package/dist/collection/channel.js.map +1 -0
- package/dist/collection/communication-bridge.d.ts +66 -0
- package/dist/collection/communication-bridge.d.ts.map +1 -0
- package/dist/collection/communication-bridge.js +134 -0
- package/dist/collection/communication-bridge.js.map +1 -0
- package/dist/collection/communication-runtime.d.ts +95 -0
- package/dist/collection/communication-runtime.d.ts.map +1 -0
- package/dist/collection/communication-runtime.js +187 -0
- package/dist/collection/communication-runtime.js.map +1 -0
- package/dist/collection/consent-repository.d.ts +32 -0
- package/dist/collection/consent-repository.d.ts.map +1 -0
- package/dist/collection/consent-repository.js +79 -0
- package/dist/collection/consent-repository.js.map +1 -0
- package/dist/collection/copy.d.ts +50 -0
- package/dist/collection/copy.d.ts.map +1 -0
- package/dist/collection/copy.js +122 -0
- package/dist/collection/copy.js.map +1 -0
- package/dist/collection/delivery-callback.d.ts +49 -0
- package/dist/collection/delivery-callback.d.ts.map +1 -0
- package/dist/collection/delivery-callback.js +147 -0
- package/dist/collection/delivery-callback.js.map +1 -0
- package/dist/collection/email-layout.d.ts +45 -0
- package/dist/collection/email-layout.d.ts.map +1 -0
- package/dist/collection/email-layout.js +247 -0
- package/dist/collection/email-layout.js.map +1 -0
- package/dist/collection/engine.d.ts +177 -0
- package/dist/collection/engine.d.ts.map +1 -0
- package/dist/collection/engine.js +407 -0
- package/dist/collection/engine.js.map +1 -0
- package/dist/collection/format.d.ts +32 -0
- package/dist/collection/format.d.ts.map +1 -0
- package/dist/collection/format.js +70 -0
- package/dist/collection/format.js.map +1 -0
- package/dist/collection/payment-block.d.ts +24 -0
- package/dist/collection/payment-block.d.ts.map +1 -0
- package/dist/collection/payment-block.js +2 -0
- package/dist/collection/payment-block.js.map +1 -0
- package/dist/collection/policy.d.ts +53 -0
- package/dist/collection/policy.d.ts.map +1 -0
- package/dist/collection/policy.js +141 -0
- package/dist/collection/policy.js.map +1 -0
- package/dist/collection/repository.d.ts +129 -0
- package/dist/collection/repository.d.ts.map +1 -0
- package/dist/collection/repository.js +246 -0
- package/dist/collection/repository.js.map +1 -0
- package/dist/collection/subject.d.ts +66 -0
- package/dist/collection/subject.d.ts.map +1 -0
- package/dist/collection/subject.js +99 -0
- package/dist/collection/subject.js.map +1 -0
- package/dist/collection/template-catalog.d.ts +16 -0
- package/dist/collection/template-catalog.d.ts.map +1 -0
- package/dist/collection/template-catalog.js +162 -0
- package/dist/collection/template-catalog.js.map +1 -0
- package/dist/collection/template.d.ts +37 -0
- package/dist/collection/template.d.ts.map +1 -0
- package/dist/collection/template.js +73 -0
- package/dist/collection/template.js.map +1 -0
- package/dist/communication/adapters/email.d.ts +28 -0
- package/dist/communication/adapters/email.d.ts.map +1 -0
- package/dist/communication/adapters/email.js +129 -0
- package/dist/communication/adapters/email.js.map +1 -0
- package/dist/communication/adapters/sms.d.ts +95 -0
- package/dist/communication/adapters/sms.d.ts.map +1 -0
- package/dist/communication/adapters/sms.js +121 -0
- package/dist/communication/adapters/sms.js.map +1 -0
- package/dist/communication/adapters/whatsapp-language.d.ts +34 -0
- package/dist/communication/adapters/whatsapp-language.d.ts.map +1 -0
- package/dist/communication/adapters/whatsapp-language.js +36 -0
- package/dist/communication/adapters/whatsapp-language.js.map +1 -0
- package/dist/communication/adapters/whatsapp-templates.d.ts +18 -0
- package/dist/communication/adapters/whatsapp-templates.d.ts.map +1 -0
- package/dist/communication/adapters/whatsapp-templates.js +97 -0
- package/dist/communication/adapters/whatsapp-templates.js.map +1 -0
- package/dist/communication/adapters/whatsapp.d.ts +29 -0
- package/dist/communication/adapters/whatsapp.d.ts.map +1 -0
- package/dist/communication/adapters/whatsapp.js +210 -0
- package/dist/communication/adapters/whatsapp.js.map +1 -0
- package/dist/communication/audit.d.ts +105 -0
- package/dist/communication/audit.d.ts.map +1 -0
- package/dist/communication/audit.js +56 -0
- package/dist/communication/audit.js.map +1 -0
- package/dist/communication/capabilities.d.ts +88 -0
- package/dist/communication/capabilities.d.ts.map +1 -0
- package/dist/communication/capabilities.js +72 -0
- package/dist/communication/capabilities.js.map +1 -0
- package/dist/communication/channel.d.ts +125 -0
- package/dist/communication/channel.d.ts.map +1 -0
- package/dist/communication/channel.js +47 -0
- package/dist/communication/channel.js.map +1 -0
- package/dist/communication/claim.d.ts +368 -0
- package/dist/communication/claim.d.ts.map +1 -0
- package/dist/communication/claim.js +224 -0
- package/dist/communication/claim.js.map +1 -0
- package/dist/communication/consent.d.ts +65 -0
- package/dist/communication/consent.d.ts.map +1 -0
- package/dist/communication/consent.js +40 -0
- package/dist/communication/consent.js.map +1 -0
- package/dist/communication/context.d.ts +48 -0
- package/dist/communication/context.d.ts.map +1 -0
- package/dist/communication/context.js +41 -0
- package/dist/communication/context.js.map +1 -0
- package/dist/communication/credentials.d.ts +74 -0
- package/dist/communication/credentials.d.ts.map +1 -0
- package/dist/communication/credentials.js +115 -0
- package/dist/communication/credentials.js.map +1 -0
- package/dist/communication/dry-run-scenario.d.ts +37 -0
- package/dist/communication/dry-run-scenario.d.ts.map +1 -0
- package/dist/communication/dry-run-scenario.js +158 -0
- package/dist/communication/dry-run-scenario.js.map +1 -0
- package/dist/communication/dry-run.d.ts +40 -0
- package/dist/communication/dry-run.d.ts.map +1 -0
- package/dist/communication/dry-run.js +92 -0
- package/dist/communication/dry-run.js.map +1 -0
- package/dist/communication/engine.d.ts +153 -0
- package/dist/communication/engine.d.ts.map +1 -0
- package/dist/communication/engine.js +480 -0
- package/dist/communication/engine.js.map +1 -0
- package/dist/communication/graph.d.ts +38 -0
- package/dist/communication/graph.d.ts.map +1 -0
- package/dist/communication/graph.js +45 -0
- package/dist/communication/graph.js.map +1 -0
- package/dist/communication/idempotency.d.ts +33 -0
- package/dist/communication/idempotency.d.ts.map +1 -0
- package/dist/communication/idempotency.js +23 -0
- package/dist/communication/idempotency.js.map +1 -0
- package/dist/communication/identity.d.ts +127 -0
- package/dist/communication/identity.d.ts.map +1 -0
- package/dist/communication/identity.js +105 -0
- package/dist/communication/identity.js.map +1 -0
- package/dist/communication/index.d.ts +66 -0
- package/dist/communication/index.d.ts.map +1 -0
- package/dist/communication/index.js +42 -0
- package/dist/communication/index.js.map +1 -0
- package/dist/communication/onboarding.d.ts +223 -0
- package/dist/communication/onboarding.d.ts.map +1 -0
- package/dist/communication/onboarding.js +287 -0
- package/dist/communication/onboarding.js.map +1 -0
- package/dist/communication/policy.d.ts +99 -0
- package/dist/communication/policy.d.ts.map +1 -0
- package/dist/communication/policy.js +13 -0
- package/dist/communication/policy.js.map +1 -0
- package/dist/communication/routing.d.ts +99 -0
- package/dist/communication/routing.d.ts.map +1 -0
- package/dist/communication/routing.js +73 -0
- package/dist/communication/routing.js.map +1 -0
- package/dist/communication/sender-profile.d.ts +100 -0
- package/dist/communication/sender-profile.d.ts.map +1 -0
- package/dist/communication/sender-profile.js +123 -0
- package/dist/communication/sender-profile.js.map +1 -0
- package/dist/communication/status.d.ts +48 -0
- package/dist/communication/status.d.ts.map +1 -0
- package/dist/communication/status.js +79 -0
- package/dist/communication/status.js.map +1 -0
- package/dist/communication/stores/onboarding.d.ts +88 -0
- package/dist/communication/stores/onboarding.d.ts.map +1 -0
- package/dist/communication/stores/onboarding.js +127 -0
- package/dist/communication/stores/onboarding.js.map +1 -0
- package/dist/communication/stores/postgres.d.ts +81 -0
- package/dist/communication/stores/postgres.d.ts.map +1 -0
- package/dist/communication/stores/postgres.js +453 -0
- package/dist/communication/stores/postgres.js.map +1 -0
- package/dist/communication/stores/routing.d.ts +169 -0
- package/dist/communication/stores/routing.d.ts.map +1 -0
- package/dist/communication/stores/routing.js +324 -0
- package/dist/communication/stores/routing.js.map +1 -0
- package/dist/communication/stores/secrets.d.ts +89 -0
- package/dist/communication/stores/secrets.d.ts.map +1 -0
- package/dist/communication/stores/secrets.js +122 -0
- package/dist/communication/stores/secrets.js.map +1 -0
- package/dist/communication/template-provider.d.ts +85 -0
- package/dist/communication/template-provider.d.ts.map +1 -0
- package/dist/communication/template-provider.js +21 -0
- package/dist/communication/template-provider.js.map +1 -0
- package/dist/communication/template.d.ts +87 -0
- package/dist/communication/template.d.ts.map +1 -0
- package/dist/communication/template.js +59 -0
- package/dist/communication/template.js.map +1 -0
- package/dist/communication/webhook-subscription.d.ts +156 -0
- package/dist/communication/webhook-subscription.d.ts.map +1 -0
- package/dist/communication/webhook-subscription.js +252 -0
- package/dist/communication/webhook-subscription.js.map +1 -0
- package/dist/communication/webhook.d.ts +121 -0
- package/dist/communication/webhook.d.ts.map +1 -0
- package/dist/communication/webhook.js +283 -0
- package/dist/communication/webhook.js.map +1 -0
- package/dist/competence/repository.d.ts +147 -0
- package/dist/competence/repository.d.ts.map +1 -0
- package/dist/competence/repository.js +294 -0
- package/dist/competence/repository.js.map +1 -0
- package/dist/contacts/phone.d.ts +70 -0
- package/dist/contacts/phone.d.ts.map +1 -0
- package/dist/contacts/phone.js +186 -0
- package/dist/contacts/phone.js.map +1 -0
- package/dist/db/migrate.js +17 -11
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/seed-catalog.d.ts +18 -0
- package/dist/db/seed-catalog.d.ts.map +1 -0
- package/dist/db/seed-catalog.js +45 -0
- package/dist/db/seed-catalog.js.map +1 -0
- package/dist/db/seed.js +16 -8
- package/dist/db/seed.js.map +1 -1
- package/dist/documents/repository.d.ts +97 -0
- package/dist/documents/repository.d.ts.map +1 -0
- package/dist/documents/repository.js +236 -0
- package/dist/documents/repository.js.map +1 -0
- package/dist/documents/requests.d.ts +73 -0
- package/dist/documents/requests.d.ts.map +1 -0
- package/dist/documents/requests.js +127 -0
- package/dist/documents/requests.js.map +1 -0
- package/dist/index.d.ts +113 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +104 -8
- package/dist/index.js.map +1 -1
- package/dist/legal/company.d.ts +32 -0
- package/dist/legal/company.d.ts.map +1 -0
- package/dist/legal/company.js +33 -0
- package/dist/legal/company.js.map +1 -0
- package/dist/legal/documents.d.ts +30 -0
- package/dist/legal/documents.d.ts.map +1 -0
- package/dist/legal/documents.js +666 -0
- package/dist/legal/documents.js.map +1 -0
- package/dist/legal/index.d.ts +5 -0
- package/dist/legal/index.d.ts.map +1 -0
- package/dist/legal/index.js +4 -0
- package/dist/legal/index.js.map +1 -0
- package/dist/legal/types.d.ts +145 -0
- package/dist/legal/types.d.ts.map +1 -0
- package/dist/legal/types.js +31 -0
- package/dist/legal/types.js.map +1 -0
- package/dist/mail/auth-templates.d.ts +15 -0
- package/dist/mail/auth-templates.d.ts.map +1 -0
- package/dist/mail/auth-templates.js +26 -0
- package/dist/mail/auth-templates.js.map +1 -0
- package/dist/mail/dedup-store.d.ts +1 -24
- package/dist/mail/dedup-store.d.ts.map +1 -1
- package/dist/mail/dedup-store.js +9 -48
- package/dist/mail/dedup-store.js.map +1 -1
- package/dist/mail/index.d.ts +2 -1
- package/dist/mail/index.d.ts.map +1 -1
- package/dist/mail/index.js +13 -2
- package/dist/mail/index.js.map +1 -1
- package/dist/mail/provider.d.ts +2 -30
- package/dist/mail/provider.d.ts.map +1 -1
- package/dist/mail/provider.js +10 -246
- package/dist/mail/provider.js.map +1 -1
- package/dist/mail/resend.d.ts +2 -12
- package/dist/mail/resend.d.ts.map +1 -1
- package/dist/mail/resend.js +11 -17
- package/dist/mail/resend.js.map +1 -1
- package/dist/mail/sender-resolver.d.ts +1 -7
- package/dist/mail/sender-resolver.d.ts.map +1 -1
- package/dist/mail/sender-resolver.js +11 -10
- package/dist/mail/sender-resolver.js.map +1 -1
- package/dist/mail/template-renderer.d.ts +1 -9
- package/dist/mail/template-renderer.d.ts.map +1 -1
- package/dist/mail/template-renderer.js +10 -15
- package/dist/mail/template-renderer.js.map +1 -1
- package/dist/mail/transactional-outbound.d.ts +115 -0
- package/dist/mail/transactional-outbound.d.ts.map +1 -0
- package/dist/mail/transactional-outbound.js +113 -0
- package/dist/mail/transactional-outbound.js.map +1 -0
- package/dist/mail/types.d.ts +2 -142
- package/dist/mail/types.d.ts.map +1 -1
- package/dist/mail/types.js +1 -33
- package/dist/mail/types.js.map +1 -1
- package/dist/portal/provisioning.d.ts +58 -0
- package/dist/portal/provisioning.d.ts.map +1 -0
- package/dist/portal/provisioning.js +139 -0
- package/dist/portal/provisioning.js.map +1 -0
- package/dist/pricing-engine/canonical.d.ts +14 -0
- package/dist/pricing-engine/canonical.d.ts.map +1 -0
- package/dist/pricing-engine/canonical.js +39 -0
- package/dist/pricing-engine/canonical.js.map +1 -0
- package/dist/pricing-engine/errors.d.ts.map +1 -1
- package/dist/pricing-engine/errors.js +6 -1
- package/dist/pricing-engine/errors.js.map +1 -1
- package/dist/pricing-engine/index.d.ts +12 -2
- package/dist/pricing-engine/index.d.ts.map +1 -1
- package/dist/pricing-engine/index.js +6 -1
- package/dist/pricing-engine/index.js.map +1 -1
- package/dist/pricing-engine/pipeline.d.ts.map +1 -1
- package/dist/pricing-engine/pipeline.js +202 -28
- package/dist/pricing-engine/pipeline.js.map +1 -1
- package/dist/pricing-engine/shadow-adapter.d.ts +37 -0
- package/dist/pricing-engine/shadow-adapter.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-adapter.js +75 -0
- package/dist/pricing-engine/shadow-adapter.js.map +1 -0
- package/dist/pricing-engine/shadow-diff.d.ts +26 -0
- package/dist/pricing-engine/shadow-diff.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-diff.js +52 -0
- package/dist/pricing-engine/shadow-diff.js.map +1 -0
- package/dist/pricing-engine/shadow-facade.d.ts +42 -0
- package/dist/pricing-engine/shadow-facade.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-facade.js +82 -0
- package/dist/pricing-engine/shadow-facade.js.map +1 -0
- package/dist/pricing-engine/shadow-legacy-types.d.ts +64 -0
- package/dist/pricing-engine/shadow-legacy-types.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-legacy-types.js +18 -0
- package/dist/pricing-engine/shadow-legacy-types.js.map +1 -0
- package/dist/pricing-engine/shadow-metrics.d.ts +33 -0
- package/dist/pricing-engine/shadow-metrics.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-metrics.js +31 -0
- package/dist/pricing-engine/shadow-metrics.js.map +1 -0
- package/dist/pricing-engine/shadow-normalizer.d.ts +17 -0
- package/dist/pricing-engine/shadow-normalizer.d.ts.map +1 -0
- package/dist/pricing-engine/shadow-normalizer.js +39 -0
- package/dist/pricing-engine/shadow-normalizer.js.map +1 -0
- package/dist/pricing-engine/types.d.ts +2 -0
- package/dist/pricing-engine/types.d.ts.map +1 -1
- package/dist/rbac/authorize.d.ts +12 -0
- package/dist/rbac/authorize.d.ts.map +1 -1
- package/dist/rbac/authorize.js +27 -0
- package/dist/rbac/authorize.js.map +1 -1
- package/dist/rbac/catalog.d.ts.map +1 -1
- package/dist/rbac/catalog.js +67 -1
- package/dist/rbac/catalog.js.map +1 -1
- package/dist/rbac/workload-provisioning.d.ts +66 -0
- package/dist/rbac/workload-provisioning.d.ts.map +1 -0
- package/dist/rbac/workload-provisioning.js +153 -0
- package/dist/rbac/workload-provisioning.js.map +1 -0
- package/dist/rbac/workload.d.ts +124 -0
- package/dist/rbac/workload.d.ts.map +1 -0
- package/dist/rbac/workload.js +184 -0
- package/dist/rbac/workload.js.map +1 -0
- package/dist/storage/checksum.d.ts +9 -0
- package/dist/storage/checksum.d.ts.map +1 -0
- package/dist/storage/checksum.js +12 -0
- package/dist/storage/checksum.js.map +1 -0
- package/dist/storage/key.d.ts +37 -0
- package/dist/storage/key.d.ts.map +1 -0
- package/dist/storage/key.js +67 -0
- package/dist/storage/key.js.map +1 -0
- package/dist/storage/local.d.ts +40 -0
- package/dist/storage/local.d.ts.map +1 -0
- package/dist/storage/local.js +96 -0
- package/dist/storage/local.js.map +1 -0
- package/dist/storage/r2.d.ts +43 -0
- package/dist/storage/r2.d.ts.map +1 -0
- package/dist/storage/r2.js +177 -0
- package/dist/storage/r2.js.map +1 -0
- package/dist/storage/registry.d.ts +23 -0
- package/dist/storage/registry.d.ts.map +1 -0
- package/dist/storage/registry.js +37 -0
- package/dist/storage/registry.js.map +1 -0
- package/dist/storage/types.d.ts +67 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +45 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/subscription-billing/provider/asaas.d.ts +14 -0
- package/dist/subscription-billing/provider/asaas.d.ts.map +1 -1
- package/dist/subscription-billing/provider/asaas.js +32 -7
- package/dist/subscription-billing/provider/asaas.js.map +1 -1
- package/dist/subscription-billing/provider/disabled.d.ts +9 -0
- package/dist/subscription-billing/provider/disabled.d.ts.map +1 -1
- package/dist/subscription-billing/provider/disabled.js +8 -0
- package/dist/subscription-billing/provider/disabled.js.map +1 -1
- package/dist/subscription-billing/provider/registry.d.ts +10 -0
- package/dist/subscription-billing/provider/registry.d.ts.map +1 -1
- package/dist/subscription-billing/provider/registry.js +17 -0
- package/dist/subscription-billing/provider/registry.js.map +1 -1
- package/dist/subscription-billing/service.d.ts +17 -1
- package/dist/subscription-billing/service.d.ts.map +1 -1
- package/dist/subscription-billing/service.js +57 -8
- package/dist/subscription-billing/service.js.map +1 -1
- package/dist/subscription-billing/types.d.ts +13 -0
- package/dist/subscription-billing/types.d.ts.map +1 -1
- package/dist/subscription-billing/types.js.map +1 -1
- package/dist/tenancy/provisioning.d.ts.map +1 -1
- package/dist/tenancy/provisioning.js +32 -8
- package/dist/tenancy/provisioning.js.map +1 -1
- package/dist/users/repository.d.ts +38 -0
- package/dist/users/repository.d.ts.map +1 -1
- package/dist/users/repository.js +118 -3
- package/dist/users/repository.js.map +1 -1
- package/dist/vault/repository.d.ts +67 -0
- package/dist/vault/repository.d.ts.map +1 -1
- package/dist/vault/repository.js +78 -0
- package/dist/vault/repository.js.map +1 -1
- package/package.json +19 -4
- package/src/db/migrations/0023_user_invite_activation.sql +15 -0
- package/src/db/migrations/0024_set_user_password_function.sql +32 -0
- package/src/db/migrations/0025_revoke_user_session_function.sql +28 -0
- package/src/db/migrations/0026_documents_and_competence.sql +353 -0
- package/src/db/migrations/0027_receivable_client_isolation.sql +58 -0
- package/src/db/migrations/0028_collection_engine.sql +94 -0
- package/src/db/migrations/0029_payment_rail.sql +107 -0
- package/src/db/migrations/0030_provider_account_uniqueness.sql +22 -0
- package/src/db/migrations/0031_provider_account_environment_scope.sql +21 -0
- package/src/db/migrations/0032_settlement_reversal.sql +76 -0
- package/src/db/migrations/0033_receivable_idempotency.sql +28 -0
- package/src/db/migrations/0034_payment_customer_reconcile.sql +30 -0
- package/src/db/migrations/0035_payment_account_environments.sql +61 -0
- package/src/db/migrations/0036_primary_backfill_under_force_rls.sql +41 -0
- package/src/db/migrations/0037_receivable_generation_source.sql +29 -0
- package/src/db/migrations/0038_notification_channels.sql +175 -0
- package/src/db/migrations/0039_communication_dispatch_claim.sql +193 -0
- package/src/db/migrations/0040_communication_unknown_outcome.sql +99 -0
- package/src/db/migrations/0041_channel_binding_routing.sql +146 -0
- package/src/db/migrations/0042_channel_route_read_isolation.sql +165 -0
- package/src/db/migrations/0043_workload_identity.sql +105 -0
- package/src/db/migrations/0044_channel_onboarding_session.sql +96 -0
- package/dist/cjs/mail/resend-client.js +0 -103
- package/dist/cjs/mail/resend-client.js.map +0 -1
- package/dist/mail/resend-client.d.ts +0 -16
- package/dist/mail/resend-client.d.ts.map +0 -1
- package/dist/mail/resend-client.js +0 -100
- package/dist/mail/resend-client.js.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runShadowComparison = runShadowComparison;
|
|
4
|
+
const sanitize_js_1 = require("../mail/sanitize.js");
|
|
5
|
+
const pipeline_js_1 = require("./pipeline.js");
|
|
6
|
+
const shadow_adapter_js_1 = require("./shadow-adapter.js");
|
|
7
|
+
const shadow_normalizer_js_1 = require("./shadow-normalizer.js");
|
|
8
|
+
const shadow_js_1 = require("./shadow.js");
|
|
9
|
+
const shadow_diff_js_1 = require("./shadow-diff.js");
|
|
10
|
+
const shadow_metrics_js_1 = require("./shadow-metrics.js");
|
|
11
|
+
function runShadowComparison(snapshot, catalog, productLine, now) {
|
|
12
|
+
const warnings = [];
|
|
13
|
+
const tenantId = snapshot.subscription.tenantId;
|
|
14
|
+
const request = (0, shadow_adapter_js_1.toPricingRequest)(snapshot, catalog, productLine, now);
|
|
15
|
+
const canonicalStartedAt = performance.now();
|
|
16
|
+
const result = (0, pipeline_js_1.computePricingQuote)(request);
|
|
17
|
+
const canonicalComputeDurationMs = Math.round(performance.now() - canonicalStartedAt);
|
|
18
|
+
if (!result.ok) {
|
|
19
|
+
(0, sanitize_js_1.logSanitizedInfo)('[shadow-comparison] canonical-error', { tenantId, code: result.error.code }, []);
|
|
20
|
+
return {
|
|
21
|
+
quoteId: null,
|
|
22
|
+
status: 'error',
|
|
23
|
+
canonicalQuote: null,
|
|
24
|
+
comparison: null,
|
|
25
|
+
categorizedDiffs: [],
|
|
26
|
+
metrics: null,
|
|
27
|
+
warnings,
|
|
28
|
+
errorCode: result.error.code,
|
|
29
|
+
errorMessage: result.error.message,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const canonicalQuote = result.value;
|
|
33
|
+
const canonicalNormalized = (0, shadow_js_1.normalizeCanonicalQuote)(canonicalQuote);
|
|
34
|
+
const legacyNormalized = (0, shadow_normalizer_js_1.normalizeLegacyQuote)(snapshot);
|
|
35
|
+
if (!legacyNormalized) {
|
|
36
|
+
const message = `Sem cálculo legado disponível (BillingCycle ainda não computado) para o tenant "${tenantId}" — comparação não realizável.`;
|
|
37
|
+
warnings.push(message);
|
|
38
|
+
(0, sanitize_js_1.logSanitizedInfo)('[shadow-comparison] not-comparable', { tenantId, quoteId: canonicalQuote.quoteId, reason: 'legacy-billing-cycle-absent' }, []);
|
|
39
|
+
return {
|
|
40
|
+
quoteId: canonicalQuote.quoteId,
|
|
41
|
+
status: 'not-comparable',
|
|
42
|
+
canonicalQuote,
|
|
43
|
+
comparison: null,
|
|
44
|
+
categorizedDiffs: [
|
|
45
|
+
{
|
|
46
|
+
category: 'not-comparable',
|
|
47
|
+
targetCode: null,
|
|
48
|
+
description: message,
|
|
49
|
+
canonicalCents: null,
|
|
50
|
+
legacyCents: null,
|
|
51
|
+
diffCents: null,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
metrics: null,
|
|
55
|
+
warnings,
|
|
56
|
+
errorCode: null,
|
|
57
|
+
errorMessage: null,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const comparison = (0, shadow_js_1.compareQuotes)(canonicalQuote.quoteId, canonicalNormalized, legacyNormalized);
|
|
61
|
+
const categorizedDiffs = (0, shadow_diff_js_1.categorizeDiffs)(comparison);
|
|
62
|
+
const metrics = (0, shadow_metrics_js_1.computeShadowMetrics)(comparison, categorizedDiffs, canonicalQuote, {
|
|
63
|
+
legacyComputeDurationMs: snapshot.legacyComputeDurationMs ?? null,
|
|
64
|
+
canonicalComputeDurationMs,
|
|
65
|
+
});
|
|
66
|
+
(0, sanitize_js_1.logSanitizedInfo)('[shadow-comparison] result', {
|
|
67
|
+
tenantId,
|
|
68
|
+
quoteId: canonicalQuote.quoteId,
|
|
69
|
+
status: comparison.status,
|
|
70
|
+
matchPercentage: metrics.matchPercentage,
|
|
71
|
+
totalDiffCents: comparison.totalDiffCents,
|
|
72
|
+
}, []);
|
|
73
|
+
return {
|
|
74
|
+
quoteId: canonicalQuote.quoteId,
|
|
75
|
+
status: comparison.status,
|
|
76
|
+
canonicalQuote,
|
|
77
|
+
comparison,
|
|
78
|
+
categorizedDiffs,
|
|
79
|
+
metrics,
|
|
80
|
+
warnings,
|
|
81
|
+
errorCode: null,
|
|
82
|
+
errorMessage: null,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=shadow-facade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-facade.js","sourceRoot":"","sources":["../../../src/pricing-engine/shadow-facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tipos do lado "legado" (manga-verde-bi) para o Shadow Comparison (Track A
|
|
4
|
+
* P4). Informados PELO SCHEMA REAL — leitura read-only de
|
|
5
|
+
* `products/manga-verde-bi/backend/prisma/schema.prisma` (models `Plan`,
|
|
6
|
+
* `Module`, `Coupon`, `Subscription`, `SubscriptionItem`, `BillingCycle`) —
|
|
7
|
+
* nenhum campo inventado. `manga-verde-bi` NÃO foi modificado.
|
|
8
|
+
*
|
|
9
|
+
* ACHADO REALITY-FIRST (registrado no relatório de entrega): `BillingCycle.
|
|
10
|
+
* subtotalCents/discountCents/usageCents/totalCents` são campos de schema
|
|
11
|
+
* que NENHUM serviço em `backend/src` popula hoje (busca completa não achou
|
|
12
|
+
* nenhum cálculo combinando `Plan.priceCents` + `Module.addonPriceCents` +
|
|
13
|
+
* `Coupon.percentOff`/`amountOffCents` em um total) — o legado hoje só
|
|
14
|
+
* INICIA trial (`beta-onboarding.service.ts`), nunca cobra. Por isso
|
|
15
|
+
* `billingCycle` é `null`-ável: o comparador trata "ainda não há cálculo
|
|
16
|
+
* legado" como `not-comparable`, nunca um total zero inventado.
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
//# sourceMappingURL=shadow-legacy-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-legacy-types.js","sourceRoot":"","sources":["../../../src/pricing-engine/shadow-legacy-types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.computeShadowMetrics = computeShadowMetrics;
|
|
4
|
+
function computeShadowMetrics(comparison, categorized, canonicalQuote, timing) {
|
|
5
|
+
const totalItems = Math.max(1, comparison.itemDiffs.length);
|
|
6
|
+
const divergentItems = comparison.divergentRules.length;
|
|
7
|
+
const matchPercentage = comparison.status === 'not-comparable'
|
|
8
|
+
? 0
|
|
9
|
+
: roundTo2(((totalItems - divergentItems) / totalItems) * 100);
|
|
10
|
+
const financialDiffCount = categorized.filter((d) => d.category === 'financial').length;
|
|
11
|
+
const structuralDiffCount = categorized.filter((d) => d.category === 'structural').length;
|
|
12
|
+
const financialDiffAbsCents = Math.abs(comparison.totalDiffCents);
|
|
13
|
+
const financialDiffRelativePercent = canonicalQuote.totalCents === 0
|
|
14
|
+
? null
|
|
15
|
+
: roundTo2((financialDiffAbsCents / canonicalQuote.totalCents) * 100);
|
|
16
|
+
return {
|
|
17
|
+
status: comparison.status,
|
|
18
|
+
matchPercentage,
|
|
19
|
+
financialDiffAbsCents,
|
|
20
|
+
financialDiffRelativePercent,
|
|
21
|
+
financialDiffCount,
|
|
22
|
+
structuralDiffCount,
|
|
23
|
+
fingerprint: canonicalQuote.fingerprint,
|
|
24
|
+
catalogVersion: canonicalQuote.catalogVersion,
|
|
25
|
+
priceTableVersion: canonicalQuote.priceTableVersion,
|
|
26
|
+
engineVersion: canonicalQuote.engineVersion,
|
|
27
|
+
legacyComputeDurationMs: timing.legacyComputeDurationMs,
|
|
28
|
+
canonicalComputeDurationMs: timing.canonicalComputeDurationMs,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function roundTo2(value) {
|
|
32
|
+
return Math.round(value * 100) / 100;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=shadow-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-metrics.js","sourceRoot":"","sources":["../../../src/pricing-engine/shadow-metrics.ts"],"names":[],"mappings":";;AAkCA,oDAoCC;AApCD,SAAgB,oBAAoB,CAClC,UAAkC,EAClC,WAA8B,EAC9B,cAA4B,EAC5B,MAAoB;IAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC;IACxD,MAAM,eAAe,GACnB,UAAU,CAAC,MAAM,KAAK,gBAAgB;QACpC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,cAAc,CAAC,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;IAEnE,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IACxF,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC;IAE1F,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAClE,MAAM,4BAA4B,GAChC,cAAc,CAAC,UAAU,KAAK,CAAC;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,QAAQ,CAAC,CAAC,qBAAqB,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;IAE1E,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,eAAe;QACf,qBAAqB;QACrB,4BAA4B;QAC5B,kBAAkB;QAClB,mBAAmB;QACnB,WAAW,EAAE,cAAc,CAAC,WAAW;QACvC,cAAc,EAAE,cAAc,CAAC,cAAc;QAC7C,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;QACnD,aAAa,EAAE,cAAc,CAAC,aAAa;QAC3C,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeLegacyQuote = normalizeLegacyQuote;
|
|
4
|
+
/**
|
|
5
|
+
* Normaliza o lado legado (RFC §22.8, ETAPA 2 do Track A P4) — elimina ruído
|
|
6
|
+
* não-semântico (timestamps, IDs de assinatura/tenant, ordem dos
|
|
7
|
+
* `SubscriptionItem`) antes de comparar. O lado canônico já tem seu
|
|
8
|
+
* normalizador (`normalizeCanonicalQuote`, `shadow.ts`) — este é o
|
|
9
|
+
* complemento para o lado legado, mesma forma de saída
|
|
10
|
+
* (`NormalizedQuoteForComparison`), para que o Diff Engine nunca precise
|
|
11
|
+
* conhecer os dois formatos de origem.
|
|
12
|
+
*
|
|
13
|
+
* Quando `billingCycle` é `null` (achado real: nenhum cálculo legado ainda
|
|
14
|
+
* existe em manga-verde-bi — ver `shadow-legacy-types.ts`), retorna `null` —
|
|
15
|
+
* o chamador (facade) trata como `not-comparable`, nunca finge um total.
|
|
16
|
+
*/
|
|
17
|
+
function normalizeLegacyQuote(snapshot) {
|
|
18
|
+
if (!snapshot.billingCycle)
|
|
19
|
+
return null;
|
|
20
|
+
const items = snapshot.subscription.items
|
|
21
|
+
.map((item) => ({
|
|
22
|
+
targetCode: targetCodeFor(item, snapshot.subscription.planCode),
|
|
23
|
+
amountCents: item.unitPriceCents * item.quantity,
|
|
24
|
+
}))
|
|
25
|
+
.sort((a, b) => a.targetCode.localeCompare(b.targetCode));
|
|
26
|
+
return {
|
|
27
|
+
currency: snapshot.billingCycle.currency,
|
|
28
|
+
items,
|
|
29
|
+
totalDiscountCents: snapshot.billingCycle.discountCents,
|
|
30
|
+
totalCents: snapshot.billingCycle.totalCents,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function targetCodeFor(item, planCode) {
|
|
34
|
+
if (item.itemType === 'PLAN')
|
|
35
|
+
return planCode;
|
|
36
|
+
if (item.itemType === 'MODULE_ADDON')
|
|
37
|
+
return item.moduleCode ?? 'unknown_module';
|
|
38
|
+
if (item.itemType === 'EXTRA_SEATS')
|
|
39
|
+
return 'extra_seat';
|
|
40
|
+
return 'storage_addon';
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=shadow-normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-normalizer.js","sourceRoot":"","sources":["../../../src/pricing-engine/shadow-normalizer.ts"],"names":[],"mappings":";;AAgBA,oDAkBC;AA/BD;;;;;;;;;;;;GAYG;AACH,SAAgB,oBAAoB,CAClC,QAA6B;IAE7B,IAAI,CAAC,QAAQ,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK;SACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC/D,WAAW,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;KACjD,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAE5D,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ;QACxC,KAAK;QACL,kBAAkB,EAAE,QAAQ,CAAC,YAAY,CAAC,aAAa;QACvD,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,UAAU;KAC7C,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,IAA0D,EAC1D,QAAgB;IAEhB,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC,UAAU,IAAI,gBAAgB,CAAC;IACjF,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa;QAAE,OAAO,YAAY,CAAC;IACzD,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.canDo = canDo;
|
|
4
4
|
exports.assertPermission = assertPermission;
|
|
5
5
|
exports.loadUserPermissions = loadUserPermissions;
|
|
6
|
+
exports.listStaffWithPermission = listStaffWithPermission;
|
|
6
7
|
const shared_1 = require("@baruk/shared");
|
|
7
8
|
/**
|
|
8
9
|
* Avaliação de permissão (04-rbac §6). Decisão sempre no backend; a RLS no banco
|
|
@@ -33,4 +34,31 @@ async function loadUserPermissions(tx, userId) {
|
|
|
33
34
|
`;
|
|
34
35
|
return new Set(rows.map((r) => r.key));
|
|
35
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Quem, no tenant corrente, é staff ATIVO e tem a permissão pedida.
|
|
39
|
+
*
|
|
40
|
+
* Existe para os avisos que nascem sem ator — webhook do gateway, cron, job —
|
|
41
|
+
* onde não há "usuário que fez" e ainda assim alguém precisa ser avisado. Sem
|
|
42
|
+
* isso, o único destino possível seria um log que ninguém lê.
|
|
43
|
+
*
|
|
44
|
+
* Filtra `user_type = 'staff'` de propósito: um contribuinte jamais pode ser
|
|
45
|
+
* destinatário de aviso operacional do escritório, mesmo que uma permissão
|
|
46
|
+
* compartilhada o alcançasse por outro caminho.
|
|
47
|
+
*/
|
|
48
|
+
async function listStaffWithPermission(tx, permission) {
|
|
49
|
+
const rows = await tx `
|
|
50
|
+
SELECT DISTINCT m.user_id
|
|
51
|
+
FROM membership m
|
|
52
|
+
JOIN "user" u ON u.id = m.user_id
|
|
53
|
+
JOIN user_role ur ON ur.user_id = m.user_id AND ur.tenant_id = m.tenant_id
|
|
54
|
+
JOIN role_permission rp ON rp.role_id = ur.role_id
|
|
55
|
+
JOIN permission p ON p.id = rp.permission_id
|
|
56
|
+
WHERE m.tenant_id = current_setting('app.current_tenant')::uuid
|
|
57
|
+
AND m.status = 'active' AND m.deleted_at IS NULL
|
|
58
|
+
AND u.status = 'active' AND u.user_type = 'staff'
|
|
59
|
+
AND ur.deleted_at IS NULL
|
|
60
|
+
AND p.key = ${permission}
|
|
61
|
+
`;
|
|
62
|
+
return rows.map((r) => r.user_id);
|
|
63
|
+
}
|
|
36
64
|
//# sourceMappingURL=authorize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../../src/rbac/authorize.ts"],"names":[],"mappings":";;AAQA,sBAEC;AAED,4CAIC;AAOD,kDAUC;
|
|
1
|
+
{"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../../src/rbac/authorize.ts"],"names":[],"mappings":";;AAQA,sBAEC;AAED,4CAIC;AAOD,kDAUC;AAaD,0DAeC;AA7DD,0CAA+C;AAG/C;;;;GAIG;AACH,SAAgB,KAAK,CAAC,WAAgC,EAAE,QAAgB;IACtE,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAgC,EAAE,QAAgB;IACjF,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAc,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,mBAAmB,CAAC,EAAM,EAAE,MAAc;IAC9D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAmB;;;;;yBAKjB,MAAM;;GAE5B,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,uBAAuB,CAAC,EAAM,EAAE,UAAkB;IACtE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAuB;;;;;;;;;;;oBAW1B,UAAU;GAC3B,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/cjs/rbac/catalog.js
CHANGED
|
@@ -171,6 +171,19 @@ exports.PERMISSIONS = [
|
|
|
171
171
|
action: 'manage',
|
|
172
172
|
description: 'Gerenciar régua de inadimplência',
|
|
173
173
|
},
|
|
174
|
+
{
|
|
175
|
+
// Permissão DEDICADA ao Portal, deliberadamente separada de `billing.read`.
|
|
176
|
+
//
|
|
177
|
+
// Dar `billing.read` ao contribuinte reproduziria o defeito corrigido na
|
|
178
|
+
// PR #69: o papel passaria a alcançar as rotas de staff que exigem essa
|
|
179
|
+
// mesma permissão, e o escopo por cliente voltaria a depender de cada
|
|
180
|
+
// chamador lembrar do `clientId`. Uma permissão que só o Portal possui
|
|
181
|
+
// mantém as duas superfícies separadas por construção.
|
|
182
|
+
key: 'portal.finance.read',
|
|
183
|
+
resource: 'portal',
|
|
184
|
+
action: 'read',
|
|
185
|
+
description: 'Ver os próprios recebíveis pelo Portal do Contribuinte',
|
|
186
|
+
},
|
|
174
187
|
{
|
|
175
188
|
key: 'vault.read',
|
|
176
189
|
resource: 'vault',
|
|
@@ -195,6 +208,38 @@ exports.PERMISSIONS = [
|
|
|
195
208
|
action: 'manage',
|
|
196
209
|
description: 'Gerenciar modelos de mensagem',
|
|
197
210
|
},
|
|
211
|
+
{
|
|
212
|
+
/**
|
|
213
|
+
* Permissão DEDICADA à permissão de contato, deliberadamente separada de
|
|
214
|
+
* `communication.send`.
|
|
215
|
+
*
|
|
216
|
+
* `communication.send` está no papel `client_titular` — o contribuinte do
|
|
217
|
+
* Portal. Proteger o registro de consentimento com ela deixaria o próprio
|
|
218
|
+
* cliente alterar quem pode ser cobrado, que é o mesmo defeito de permissão
|
|
219
|
+
* compartilhada alcançando rota de staff corrigido na PR #69. Uma permissão
|
|
220
|
+
* que só o escritório tem mantém as duas superfícies separadas por
|
|
221
|
+
* construção, não por atenção de quem escreve a próxima rota.
|
|
222
|
+
*/
|
|
223
|
+
key: 'communication.consent.manage',
|
|
224
|
+
resource: 'communication',
|
|
225
|
+
action: 'manage',
|
|
226
|
+
description: 'Registrar e alterar permissão de contato por canal',
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
/**
|
|
230
|
+
* Configuração de canal do escritório: remetente, conta de provider e
|
|
231
|
+
* referência lógica de credencial.
|
|
232
|
+
*
|
|
233
|
+
* Separada de `tenant.settings.update` porque alcança a identidade de envio
|
|
234
|
+
* — quem a tem decide sob qual conta as mensagens saem. `admin` não tem
|
|
235
|
+
* `tenant.settings.update`, e não faria sentido que por isso perdesse a
|
|
236
|
+
* capacidade de ver a configuração de canal; são decisões diferentes.
|
|
237
|
+
*/
|
|
238
|
+
key: 'communication.config.manage',
|
|
239
|
+
resource: 'communication',
|
|
240
|
+
action: 'manage',
|
|
241
|
+
description: 'Configurar contas e remetentes de canal do escritório',
|
|
242
|
+
},
|
|
198
243
|
{
|
|
199
244
|
key: 'automation.read',
|
|
200
245
|
resource: 'automation',
|
|
@@ -337,6 +382,10 @@ exports.SYSTEM_ROLES = [
|
|
|
337
382
|
'document.write',
|
|
338
383
|
'communication.send',
|
|
339
384
|
'communication.read',
|
|
385
|
+
// O contador é quem ouve "não me mande mais WhatsApp" ao telefone. Sem
|
|
386
|
+
// esta permissão ele teria de pedir a outro papel para registrar — e um
|
|
387
|
+
// opt-out que depende de repasse é um opt-out que não é registrado.
|
|
388
|
+
'communication.consent.manage',
|
|
340
389
|
'vault.credential.decrypt',
|
|
341
390
|
'vault.read',
|
|
342
391
|
'request.read',
|
|
@@ -401,6 +450,11 @@ exports.SYSTEM_ROLES = [
|
|
|
401
450
|
'billing.fee.manage',
|
|
402
451
|
'billing.dunning.manage',
|
|
403
452
|
'communication.send',
|
|
453
|
+
'communication.read',
|
|
454
|
+
// Quem opera a régua precisa registrar "este cliente pediu para não
|
|
455
|
+
// receber por WhatsApp" no momento em que o cliente diz isso — mandar
|
|
456
|
+
// pedir para outro papel garante que ninguém registre.
|
|
457
|
+
'communication.consent.manage',
|
|
404
458
|
],
|
|
405
459
|
},
|
|
406
460
|
{
|
|
@@ -411,6 +465,8 @@ exports.SYSTEM_ROLES = [
|
|
|
411
465
|
'communication.send',
|
|
412
466
|
'communication.read',
|
|
413
467
|
'communication.template.manage',
|
|
468
|
+
'communication.consent.manage',
|
|
469
|
+
'communication.config.manage',
|
|
414
470
|
'request.read',
|
|
415
471
|
'request.comment',
|
|
416
472
|
'crm.read',
|
|
@@ -438,7 +494,16 @@ exports.SYSTEM_ROLES = [
|
|
|
438
494
|
name: 'Cliente — Titular',
|
|
439
495
|
permissions: [
|
|
440
496
|
'document.read',
|
|
441
|
-
|
|
497
|
+
// `communication.send` SAIU daqui.
|
|
498
|
+
//
|
|
499
|
+
// Estava concedida ao contribuinte desde o seed original e nunca foi
|
|
500
|
+
// exercida por rota nenhuma — o que a tornava inofensiva e invisível ao
|
|
501
|
+
// mesmo tempo. Deixou de ser inofensiva no momento em que este produto
|
|
502
|
+
// ganhou superfície administrativa de comunicação: a primeira rota de
|
|
503
|
+
// staff protegida por ela seria alcançável pelo Portal do cliente.
|
|
504
|
+
//
|
|
505
|
+
// É a mesma classe de defeito da PR #69 (`billing.read` no Portal),
|
|
506
|
+
// corrigida antes de existir a rota que a exploraria em vez de depois.
|
|
442
507
|
'request.read',
|
|
443
508
|
'request.comment',
|
|
444
509
|
'portal.onboarding.read',
|
|
@@ -449,6 +514,7 @@ exports.SYSTEM_ROLES = [
|
|
|
449
514
|
'portal.onboarding.comment.create',
|
|
450
515
|
'portal.onboarding.comment.read',
|
|
451
516
|
'portal.onboarding.external_delivery.confirm',
|
|
517
|
+
'portal.finance.read',
|
|
452
518
|
],
|
|
453
519
|
},
|
|
454
520
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/rbac/catalog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/rbac/catalog.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AASU,QAAA,WAAW,GAA6B;IACnD;QACE,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,mBAAmB;QAC7B,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,oCAAoC;KAClD;IACD;QACE,GAAG,EAAE,iCAAiC;QACtC,QAAQ,EAAE,4BAA4B;QACtC,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,8CAA8C;KAC5D;IACD;QACE,GAAG,EAAE,6CAA6C;QAClD,QAAQ,EAAE,wCAAwC;QAClD,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,GAAG,EAAE,mCAAmC;QACxC,QAAQ,EAAE,4BAA4B;QACtC,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,GAAG,EAAE,iCAAiC;QACtC,QAAQ,EAAE,4BAA4B;QACtC,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,8CAA8C;KAC5D;IACD;QACE,GAAG,EAAE,kCAAkC;QACvC,QAAQ,EAAE,2BAA2B;QACrC,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,iDAAiD;KAC/D;IACD;QACE,GAAG,EAAE,gCAAgC;QACrC,QAAQ,EAAE,2BAA2B;QACrC,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,GAAG,EAAE,6CAA6C;QAClD,QAAQ,EAAE,qCAAqC;QAC/C,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,gDAAgD;KAC9D;IACD,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE;IACvF;QACE,GAAG,EAAE,cAAc;QACnB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,uBAAuB;KACrC;IACD,EAAE,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;IAC/F;QACE,GAAG,EAAE,eAAe;QACpB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,yBAAyB;KACvC;IACD,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;IAC7F;QACE,GAAG,EAAE,gBAAgB;QACrB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,oBAAoB;KAClC;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,uBAAuB;KACrC;IACD;QACE,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,gCAAgC;KAC9C;IACD;QACE,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,kCAAkC;KAChD;IACD,EAAE,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE;IAC7F;QACE,GAAG,EAAE,gBAAgB;QACrB,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,mBAAmB;KACjC;IACD;QACE,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,kBAAkB;KAChC;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,qBAAqB;KACnC;IACD,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE;IAChG;QACE,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,+BAA+B;KAC7C;IACD,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;IAC5F,6EAA6E;IAC7E;QACE,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,gCAAgC;KAC9C;IACD;QACE,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,+BAA+B;KAC7C;IACD,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACjG;QACE,GAAG,EAAE,cAAc;QACnB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,yCAAyC;KACvD;IACD;QACE,GAAG,EAAE,eAAe;QACpB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,mCAAmC;KACjD;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,kCAAkC;KAChD;IACD;QACE,4EAA4E;QAC5E,EAAE;QACF,yEAAyE;QACzE,wEAAwE;QACxE,sEAAsE;QACtE,uEAAuE;QACvE,uDAAuD;QACvD,GAAG,EAAE,qBAAqB;QAC1B,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,wDAAwD;KACtE;IACD;QACE,GAAG,EAAE,YAAY;QACjB,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,yCAAyC;KACvD;IACD;QACE,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,mCAAmC;KACjD;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,wBAAwB;KACtC;IACD;QACE,GAAG,EAAE,+BAA+B;QACpC,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,+BAA+B;KAC7C;IACD;QACE;;;;;;;;;;WAUG;QACH,GAAG,EAAE,8BAA8B;QACnC,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE;;;;;;;;WAQG;QACH,GAAG,EAAE,6BAA6B;QAClC,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,uDAAuD;KACrE;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,uBAAuB;KACrC;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,6BAA6B;KAC3C;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,8BAA8B;KAC5C;IACD;QACE,GAAG,EAAE,oBAAoB;QACzB,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,kDAAkD;KAChE;IACD;QACE,GAAG,EAAE,wBAAwB;QAC7B,QAAQ,EAAE,mBAAmB;QAC7B,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,2BAA2B;KACzC;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,mBAAmB;QAC7B,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,6BAA6B;KAC3C;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,mBAAmB;QAC7B,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,4CAA4C;KAC1D;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,QAAQ,EAAE,mBAAmB;QAC7B,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,gCAAgC;KAC9C;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,QAAQ,EAAE,mBAAmB;QAC7B,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,gCAAgC;KAC9C;IACD;QACE,GAAG,EAAE,+BAA+B;QACpC,QAAQ,EAAE,wBAAwB;QAClC,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,GAAG,EAAE,mCAAmC;QACxC,QAAQ,EAAE,4BAA4B;QACtC,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,GAAG,EAAE,iCAAiC;QACtC,QAAQ,EAAE,4BAA4B;QACtC,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,4BAA4B;KAC1C;IACD;QACE,GAAG,EAAE,oCAAoC;QACzC,QAAQ,EAAE,+BAA+B;QACzC,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,uCAAuC;KACrD;IACD;QACE,GAAG,EAAE,sCAAsC;QAC3C,QAAQ,EAAE,+BAA+B;QACzC,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,GAAG,EAAE,sCAAsC;QAC3C,QAAQ,EAAE,+BAA+B;QACzC,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,+BAA+B;KAC7C;IACD;QACE,GAAG,EAAE,qCAAqC;QAC1C,QAAQ,EAAE,+BAA+B;QACzC,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,wCAAwC;KACtD;IACD;QACE,GAAG,EAAE,uCAAuC;QAC5C,QAAQ,EAAE,+BAA+B;QACzC,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,GAAG,EAAE,oDAAoD;QACzD,QAAQ,EAAE,6CAA6C;QACvD,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,wCAAwC;KACtD;CACF,CAAC;AAEW,QAAA,mBAAmB,GAAsB,mBAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAQpF,MAAM,GAAG,GAAG,2BAAmB,CAAC;AAEhC,mFAAmF;AACtE,QAAA,YAAY,GAAuB;IAC9C,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE;IACjD;QACE,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,wBAAwB,CAAC;KAC/D;IACD;QACE,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE;YACX,aAAa;YACb,cAAc;YACd,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,oBAAoB;YACpB,oBAAoB;YACpB,uEAAuE;YACvE,wEAAwE;YACxE,oEAAoE;YACpE,8BAA8B;YAC9B,0BAA0B;YAC1B,YAAY;YACZ,cAAc;YACd,gBAAgB;YAChB,iBAAiB;YACjB,uBAAuB;YACvB,UAAU;YACV,WAAW;YACX,cAAc;YACd,eAAe;YACf,oBAAoB;YACpB,iBAAiB;YACjB,kBAAkB;YAClB,wBAAwB;YACxB,0BAA0B;YAC1B,0BAA0B;YAC1B,4BAA4B;YAC5B,0BAA0B;YAC1B,+BAA+B;YAC/B,mCAAmC;YACnC,iCAAiC;YACjC,oCAAoC;YACpC,sCAAsC;YACtC,sCAAsC;YACtC,qCAAqC;YACrC,uCAAuC;YACvC,oDAAoD;YACpD,iBAAiB;SAClB;KACF;IACD;QACE,GAAG,EAAE,WAAW;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE;YACX,aAAa;YACb,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,iBAAiB;YACjB,UAAU;YACV,cAAc;YACd,iBAAiB;YACjB,oBAAoB;YACpB,wBAAwB;YACxB,iCAAiC;YACjC,oCAAoC;YACpC,sCAAsC;YACtC,sCAAsC;YACtC,qCAAqC;YACrC,uCAAuC;YACvC,oDAAoD;SACrD;KACF;IACD;QACE,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE;YACX,aAAa;YACb,uBAAuB;YACvB,cAAc;YACd,eAAe;YACf,oBAAoB;YACpB,wBAAwB;YACxB,oBAAoB;YACpB,oBAAoB;YACpB,oEAAoE;YACpE,sEAAsE;YACtE,uDAAuD;YACvD,8BAA8B;SAC/B;KACF;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE;YACX,aAAa;YACb,oBAAoB;YACpB,oBAAoB;YACpB,+BAA+B;YAC/B,8BAA8B;YAC9B,6BAA6B;YAC7B,cAAc;YACd,iBAAiB;YACjB,UAAU;SACX;KACF;IACD;QACE,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE;YACX,aAAa;YACb,eAAe;YACf,cAAc;YACd,UAAU;YACV,cAAc;YACd,iBAAiB;YACjB,oBAAoB;YACpB,iBAAiB;YACjB,kBAAkB;YAClB,wBAAwB;YACxB,iCAAiC;SAClC;KACF;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE;YACX,eAAe;YACf,mCAAmC;YACnC,EAAE;YACF,qEAAqE;YACrE,wEAAwE;YACxE,uEAAuE;YACvE,sEAAsE;YACtE,mEAAmE;YACnE,EAAE;YACF,oEAAoE;YACpE,uEAAuE;YACvE,cAAc;YACd,iBAAiB;YACjB,wBAAwB;YACxB,iCAAiC;YACjC,6CAA6C;YAC7C,mCAAmC;YACnC,iCAAiC;YACjC,kCAAkC;YAClC,gCAAgC;YAChC,6CAA6C;YAC7C,qBAAqB;SACtB;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Provisionamento de identidade e autoridade de workload — **lado owner**.
|
|
4
|
+
*
|
|
5
|
+
* Tudo aqui escreve em `service_principal` / `service_principal_grant`, e o
|
|
6
|
+
* papel `baruk_app` não tem INSERT/UPDATE/DELETE nessas tabelas. Chamar estas
|
|
7
|
+
* funções com a conexão da aplicação falha no Postgres, não numa checagem de
|
|
8
|
+
* aplicação que alguém possa remover: é essa assimetria que sustenta
|
|
9
|
+
* `GRANT_FORGEABLE_BY_INTERNAL_CALLER = false`.
|
|
10
|
+
*
|
|
11
|
+
* O caminho previsto é o provisionamento operado com a credencial de migração
|
|
12
|
+
* (mesma que aplica `db:migrate`), ou — quando existir tela — uma rota de admin
|
|
13
|
+
* que já exija RBAC humano. Nos dois casos a autoridade nasce FORA do processo
|
|
14
|
+
* que a consome.
|
|
15
|
+
*
|
|
16
|
+
* Nenhuma função daqui é importada pelo runtime do motor. Se um dia for, o
|
|
17
|
+
* privilégio do banco continua negando.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.createServicePrincipal = createServicePrincipal;
|
|
21
|
+
exports.rotateServicePrincipalSecret = rotateServicePrincipalSecret;
|
|
22
|
+
exports.disableServicePrincipal = disableServicePrincipal;
|
|
23
|
+
exports.grantWorkloadPermission = grantWorkloadPermission;
|
|
24
|
+
exports.revokeWorkloadGrant = revokeWorkloadGrant;
|
|
25
|
+
const shared_1 = require("@baruk/shared");
|
|
26
|
+
const password_js_1 = require("../auth/password.js");
|
|
27
|
+
const context_js_1 = require("../db/context.js");
|
|
28
|
+
const workload_js_1 = require("./workload.js");
|
|
29
|
+
function assertKey(key) {
|
|
30
|
+
const k = key?.trim() ?? '';
|
|
31
|
+
// Slug conservador: é identificador operacional, aparece em trilha e em
|
|
32
|
+
// configuração de deploy. Espaço e maiúscula viram divergência silenciosa.
|
|
33
|
+
if (!/^[a-z0-9][a-z0-9-]{2,62}$/.test(k)) {
|
|
34
|
+
throw new shared_1.ValidationError('key do service principal deve ser slug minúsculo (a-z, 0-9, hífen), 3..63 caracteres.');
|
|
35
|
+
}
|
|
36
|
+
return k;
|
|
37
|
+
}
|
|
38
|
+
function assertSecret(secret) {
|
|
39
|
+
// 32 caracteres é o piso para um segredo gerado por máquina. Não há usuário
|
|
40
|
+
// humano digitando isto — não há motivo para aceitar menos.
|
|
41
|
+
if (typeof secret !== 'string' || secret.length < 32) {
|
|
42
|
+
throw new shared_1.ValidationError('secret do service principal precisa de ao menos 32 caracteres.');
|
|
43
|
+
}
|
|
44
|
+
return secret;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Cria (ou reabilita) um principal de workload. **Idempotente por `key`**, e
|
|
48
|
+
* o segredo de um principal existente é PRESERVADO por padrão — a mesma
|
|
49
|
+
* armadilha que `upsertUserWithPassword` já documenta: um provisionamento que
|
|
50
|
+
* roda de novo e troca o segredo em silêncio derruba o workload sem erro.
|
|
51
|
+
*/
|
|
52
|
+
async function createServicePrincipal(owner, input) {
|
|
53
|
+
const key = assertKey(input.key);
|
|
54
|
+
const secret = assertSecret(input.secret);
|
|
55
|
+
const displayName = input.displayName?.trim() ?? '';
|
|
56
|
+
if (!displayName)
|
|
57
|
+
throw new shared_1.ValidationError('displayName é obrigatório.');
|
|
58
|
+
const existing = await owner `
|
|
59
|
+
SELECT id, key FROM service_principal WHERE lower(key) = lower(${key}) AND deleted_at IS NULL
|
|
60
|
+
`;
|
|
61
|
+
if (existing[0]) {
|
|
62
|
+
if (input.overwriteSecret) {
|
|
63
|
+
await owner `
|
|
64
|
+
UPDATE service_principal
|
|
65
|
+
SET secret_hash = ${(0, password_js_1.hashPassword)(secret)}, secret_rotated_at = now(),
|
|
66
|
+
display_name = ${displayName}, status = 'active', disabled_at = NULL,
|
|
67
|
+
updated_at = now()
|
|
68
|
+
WHERE id = ${existing[0].id}
|
|
69
|
+
`;
|
|
70
|
+
}
|
|
71
|
+
return existing[0];
|
|
72
|
+
}
|
|
73
|
+
const id = (0, shared_1.uuidv7)();
|
|
74
|
+
await owner `
|
|
75
|
+
INSERT INTO service_principal (id, key, display_name, secret_hash)
|
|
76
|
+
VALUES (${id}, ${key}, ${displayName}, ${(0, password_js_1.hashPassword)(secret)})
|
|
77
|
+
`;
|
|
78
|
+
return { id, key };
|
|
79
|
+
}
|
|
80
|
+
/** Rotação de segredo. O valor antigo para de autenticar na próxima chamada. */
|
|
81
|
+
async function rotateServicePrincipalSecret(owner, key, newSecret) {
|
|
82
|
+
const rows = await owner `
|
|
83
|
+
UPDATE service_principal
|
|
84
|
+
SET secret_hash = ${(0, password_js_1.hashPassword)(assertSecret(newSecret))},
|
|
85
|
+
secret_rotated_at = now(), updated_at = now()
|
|
86
|
+
WHERE lower(key) = lower(${assertKey(key)}) AND deleted_at IS NULL
|
|
87
|
+
RETURNING id
|
|
88
|
+
`;
|
|
89
|
+
if (rows.count === 0)
|
|
90
|
+
throw new shared_1.NotFoundError('service principal não encontrado');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Revoga a IDENTIDADE inteira. Vale na próxima chamada, sem esperar a sessão
|
|
94
|
+
* em memória expirar — `authorizeWorkload` relê o principal a cada decisão.
|
|
95
|
+
*/
|
|
96
|
+
async function disableServicePrincipal(owner, key) {
|
|
97
|
+
const rows = await owner `
|
|
98
|
+
UPDATE service_principal
|
|
99
|
+
SET status = 'disabled', disabled_at = now(), updated_at = now()
|
|
100
|
+
WHERE lower(key) = lower(${assertKey(key)}) AND deleted_at IS NULL
|
|
101
|
+
RETURNING id
|
|
102
|
+
`;
|
|
103
|
+
if (rows.count === 0)
|
|
104
|
+
throw new shared_1.NotFoundError('service principal não encontrado');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Concede a um principal uma permissão ESCOPADA a tenant + propósito + recurso.
|
|
108
|
+
*
|
|
109
|
+
* Roda dentro do contexto do tenant porque `service_principal_grant` está sob
|
|
110
|
+
* RLS FORCE — inclusive para o owner. Uma concessão para um tenant que não é o
|
|
111
|
+
* do contexto é recusada pelo banco, não por um `if`.
|
|
112
|
+
*/
|
|
113
|
+
async function grantWorkloadPermission(owner, input) {
|
|
114
|
+
const key = assertKey(input.principalKey);
|
|
115
|
+
const permission = input.permission?.trim() ?? '';
|
|
116
|
+
const resourceValue = input.resourceValue?.trim() ?? '';
|
|
117
|
+
if (!permission)
|
|
118
|
+
throw new shared_1.ValidationError('permission é obrigatória.');
|
|
119
|
+
if (!workload_js_1.WORKLOAD_PURPOSES.includes(input.purpose)) {
|
|
120
|
+
throw new shared_1.ValidationError(`purpose inválido: ${String(input.purpose)}.`);
|
|
121
|
+
}
|
|
122
|
+
if (input.resourceKind !== 'exact' && input.resourceKind !== 'prefix') {
|
|
123
|
+
throw new shared_1.ValidationError('resourceKind precisa ser "exact" ou "prefix".');
|
|
124
|
+
}
|
|
125
|
+
if (resourceValue.length < 3) {
|
|
126
|
+
throw new shared_1.ValidationError('resourceValue precisa de ao menos 3 caracteres — um escopo vazio alcançaria tudo.');
|
|
127
|
+
}
|
|
128
|
+
const principal = await owner `
|
|
129
|
+
SELECT id FROM service_principal WHERE lower(key) = lower(${key}) AND deleted_at IS NULL
|
|
130
|
+
`;
|
|
131
|
+
if (!principal[0])
|
|
132
|
+
throw new shared_1.NotFoundError('service principal não encontrado');
|
|
133
|
+
const id = (0, shared_1.uuidv7)();
|
|
134
|
+
await (0, context_js_1.withContext)(owner, { tenantId: input.tenantId }, async (tx) => {
|
|
135
|
+
await tx `
|
|
136
|
+
INSERT INTO service_principal_grant (
|
|
137
|
+
id, tenant_id, principal_id, permission_key, purpose,
|
|
138
|
+
resource_kind, resource_value, granted_by, granted_reason, expires_at
|
|
139
|
+
) VALUES (
|
|
140
|
+
${id}, ${input.tenantId}, ${principal[0].id}, ${permission}, ${input.purpose},
|
|
141
|
+
${input.resourceKind}, ${resourceValue}, ${input.grantedBy ?? null},
|
|
142
|
+
${input.grantedReason ?? null}, ${input.expiresAt ?? null}
|
|
143
|
+
)
|
|
144
|
+
`;
|
|
145
|
+
});
|
|
146
|
+
return id;
|
|
147
|
+
}
|
|
148
|
+
/** Revoga UMA concessão. Vale na próxima chamada. */
|
|
149
|
+
async function revokeWorkloadGrant(owner, tenantId, grantId) {
|
|
150
|
+
await (0, context_js_1.withContext)(owner, { tenantId }, async (tx) => {
|
|
151
|
+
const rows = await tx `
|
|
152
|
+
UPDATE service_principal_grant SET revoked_at = now()
|
|
153
|
+
WHERE id = ${grantId} AND revoked_at IS NULL
|
|
154
|
+
RETURNING id
|
|
155
|
+
`;
|
|
156
|
+
if (rows.count === 0)
|
|
157
|
+
throw new shared_1.NotFoundError('grant não encontrado ou já revogado');
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=workload-provisioning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workload-provisioning.js","sourceRoot":"","sources":["../../../src/rbac/workload-provisioning.ts"],"names":[],"mappings":"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"}
|