@baruk/core 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/dist/auth/password-reset.d.ts.map +1 -1
- package/dist/auth/password-reset.js +2 -4
- package/dist/auth/password-reset.js.map +1 -1
- package/dist/auth/password.d.ts +2 -18
- package/dist/auth/password.d.ts.map +1 -1
- package/dist/auth/password.js +12 -51
- package/dist/auth/password.js.map +1 -1
- package/dist/auth/service.d.ts +0 -12
- package/dist/auth/service.d.ts.map +1 -1
- package/dist/auth/service.js +3 -36
- package/dist/auth/service.js.map +1 -1
- package/dist/auth/session-token.d.ts +5 -2
- package/dist/auth/session-token.d.ts.map +1 -1
- package/dist/auth/session-token.js +7 -12
- package/dist/auth/session-token.js.map +1 -1
- package/dist/billing/dunning.d.ts +33 -0
- package/dist/billing/dunning.d.ts.map +1 -0
- package/dist/billing/dunning.js +49 -0
- package/dist/billing/dunning.js.map +1 -0
- package/dist/billing/provider/asaas.d.ts +15 -0
- package/dist/billing/provider/asaas.d.ts.map +1 -0
- package/dist/billing/provider/asaas.js +121 -0
- package/dist/billing/provider/asaas.js.map +1 -0
- package/dist/billing/provider/manual.d.ts +14 -0
- package/dist/billing/provider/manual.d.ts.map +1 -0
- package/dist/billing/provider/manual.js +24 -0
- package/dist/billing/provider/manual.js.map +1 -0
- package/dist/billing/provider/registry.d.ts +12 -0
- package/dist/billing/provider/registry.d.ts.map +1 -0
- package/dist/billing/provider/registry.js +22 -0
- package/dist/billing/provider/registry.js.map +1 -0
- package/dist/billing/provider/types.d.ts +76 -0
- package/dist/billing/provider/types.d.ts.map +1 -0
- package/dist/billing/provider/types.js +9 -0
- package/dist/billing/provider/types.js.map +1 -0
- package/dist/billing/receivable.d.ts +108 -0
- package/dist/billing/receivable.d.ts.map +1 -0
- package/dist/billing/receivable.js +2 -0
- package/dist/billing/receivable.js.map +1 -0
- package/dist/billing/repository.d.ts +97 -0
- package/dist/billing/repository.d.ts.map +1 -0
- package/dist/billing/repository.js +167 -0
- package/dist/billing/repository.js.map +1 -0
- package/dist/cjs/audit/audit.js +31 -0
- package/dist/cjs/audit/audit.js.map +1 -0
- package/dist/cjs/audit/repository.js +32 -0
- package/dist/cjs/audit/repository.js.map +1 -0
- package/dist/cjs/auth/password-reset.js +58 -0
- package/dist/cjs/auth/password-reset.js.map +1 -0
- package/dist/cjs/auth/password.js +32 -0
- package/dist/cjs/auth/password.js.map +1 -0
- package/dist/cjs/auth/service.js +191 -0
- package/dist/cjs/auth/service.js.map +1 -0
- package/dist/cjs/auth/session-token.js +18 -0
- package/dist/cjs/auth/session-token.js.map +1 -0
- package/dist/cjs/billing/dunning.js +54 -0
- package/dist/cjs/billing/dunning.js.map +1 -0
- package/dist/cjs/billing/provider/asaas.js +125 -0
- package/dist/cjs/billing/provider/asaas.js.map +1 -0
- package/dist/cjs/billing/provider/manual.js +28 -0
- package/dist/cjs/billing/provider/manual.js.map +1 -0
- package/dist/cjs/billing/provider/registry.js +27 -0
- package/dist/cjs/billing/provider/registry.js.map +1 -0
- package/dist/cjs/billing/provider/types.js +10 -0
- package/dist/cjs/billing/provider/types.js.map +1 -0
- package/dist/cjs/billing/receivable.js +3 -0
- package/dist/cjs/billing/receivable.js.map +1 -0
- package/dist/cjs/billing/repository.js +180 -0
- package/dist/cjs/billing/repository.js.map +1 -0
- package/dist/cjs/clients/repository.js +123 -0
- package/dist/cjs/clients/repository.js.map +1 -0
- package/dist/cjs/commercial-catalog/catalog.js +108 -0
- package/dist/cjs/commercial-catalog/catalog.js.map +1 -0
- package/dist/cjs/commercial-catalog/consumption-contracts.js +10 -0
- package/dist/cjs/commercial-catalog/consumption-contracts.js.map +1 -0
- package/dist/cjs/commercial-catalog/coupon.js +63 -0
- package/dist/cjs/commercial-catalog/coupon.js.map +1 -0
- package/dist/cjs/commercial-catalog/index.js +16 -0
- package/dist/cjs/commercial-catalog/index.js.map +1 -0
- package/dist/cjs/commercial-catalog/offer-application.js +53 -0
- package/dist/cjs/commercial-catalog/offer-application.js.map +1 -0
- package/dist/cjs/commercial-catalog/types.js +26 -0
- package/dist/cjs/commercial-catalog/types.js.map +1 -0
- package/dist/cjs/crm/repository.js +195 -0
- package/dist/cjs/crm/repository.js.map +1 -0
- package/dist/cjs/dashboard/repository.js +39 -0
- package/dist/cjs/dashboard/repository.js.map +1 -0
- package/dist/cjs/db/client.js +27 -0
- package/dist/cjs/db/client.js.map +1 -0
- package/dist/cjs/db/context.js +43 -0
- package/dist/cjs/db/context.js.map +1 -0
- package/dist/cjs/db/load-env.js +47 -0
- package/dist/cjs/db/load-env.js.map +1 -0
- package/dist/cjs/db/seed.js +69 -0
- package/dist/cjs/db/seed.js.map +1 -0
- package/dist/cjs/entitlements/decision.js +203 -0
- package/dist/cjs/entitlements/decision.js.map +1 -0
- package/dist/cjs/entitlements/derive.js +46 -0
- package/dist/cjs/entitlements/derive.js.map +1 -0
- package/dist/cjs/entitlements/index.js +23 -0
- package/dist/cjs/entitlements/index.js.map +1 -0
- package/dist/cjs/entitlements/sources.js +60 -0
- package/dist/cjs/entitlements/sources.js.map +1 -0
- package/dist/cjs/entitlements/standing.js +42 -0
- package/dist/cjs/entitlements/standing.js.map +1 -0
- package/dist/cjs/entitlements/types.js +16 -0
- package/dist/cjs/entitlements/types.js.map +1 -0
- package/dist/cjs/import/clients-import.js +147 -0
- package/dist/cjs/import/clients-import.js.map +1 -0
- package/dist/cjs/index.js +335 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/mail/dedup-store.js +56 -0
- package/dist/cjs/mail/dedup-store.js.map +1 -0
- package/dist/cjs/mail/index.js +24 -0
- package/dist/cjs/mail/index.js.map +1 -0
- package/dist/cjs/mail/provider.js +251 -0
- package/dist/cjs/mail/provider.js.map +1 -0
- package/dist/cjs/mail/resend-client.js +103 -0
- package/dist/cjs/mail/resend-client.js.map +1 -0
- package/dist/cjs/mail/resend.js +21 -0
- package/dist/cjs/mail/resend.js.map +1 -0
- package/dist/cjs/mail/sanitize.js +56 -0
- package/dist/cjs/mail/sanitize.js.map +1 -0
- package/dist/cjs/mail/sender-resolver.js +15 -0
- package/dist/cjs/mail/sender-resolver.js.map +1 -0
- package/dist/cjs/mail/template-renderer.js +21 -0
- package/dist/cjs/mail/template-renderer.js.map +1 -0
- package/dist/cjs/mail/types.js +38 -0
- package/dist/cjs/mail/types.js.map +1 -0
- package/dist/cjs/notifications/repository.js +49 -0
- package/dist/cjs/notifications/repository.js.map +1 -0
- package/dist/cjs/onboarding/domain.js +370 -0
- package/dist/cjs/onboarding/domain.js.map +1 -0
- package/dist/cjs/onboarding/interaction-review.js +425 -0
- package/dist/cjs/onboarding/interaction-review.js.map +1 -0
- package/dist/cjs/onboarding/persistence.js +444 -0
- package/dist/cjs/onboarding/persistence.js.map +1 -0
- package/dist/cjs/onboarding/portal-actions.js +157 -0
- package/dist/cjs/onboarding/portal-actions.js.map +1 -0
- package/dist/cjs/onboarding/portal.js +177 -0
- package/dist/cjs/onboarding/portal.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/portal/repository.js +37 -0
- package/dist/cjs/portal/repository.js.map +1 -0
- package/dist/cjs/pricing-engine/bundle.js +49 -0
- package/dist/cjs/pricing-engine/bundle.js.map +1 -0
- package/dist/cjs/pricing-engine/errors.js +48 -0
- package/dist/cjs/pricing-engine/errors.js.map +1 -0
- package/dist/cjs/pricing-engine/index.js +30 -0
- package/dist/cjs/pricing-engine/index.js.map +1 -0
- package/dist/cjs/pricing-engine/money.js +69 -0
- package/dist/cjs/pricing-engine/money.js.map +1 -0
- package/dist/cjs/pricing-engine/pipeline.js +330 -0
- package/dist/cjs/pricing-engine/pipeline.js.map +1 -0
- package/dist/cjs/pricing-engine/proration.js +53 -0
- package/dist/cjs/pricing-engine/proration.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow.js +58 -0
- package/dist/cjs/pricing-engine/shadow.js.map +1 -0
- package/dist/cjs/pricing-engine/types.js +34 -0
- package/dist/cjs/pricing-engine/types.js.map +1 -0
- package/dist/cjs/products/catalog.js +10 -0
- package/dist/cjs/products/catalog.js.map +1 -0
- package/dist/cjs/products/repository.js +61 -0
- package/dist/cjs/products/repository.js.map +1 -0
- package/dist/cjs/rbac/authorize.js +36 -0
- package/dist/cjs/rbac/authorize.js.map +1 -0
- package/dist/cjs/rbac/catalog.js +455 -0
- package/dist/cjs/rbac/catalog.js.map +1 -0
- package/dist/cjs/requests/repository.js +114 -0
- package/dist/cjs/requests/repository.js.map +1 -0
- package/dist/cjs/subscription-billing/dunning.js +26 -0
- package/dist/cjs/subscription-billing/dunning.js.map +1 -0
- package/dist/cjs/subscription-billing/events.js +45 -0
- package/dist/cjs/subscription-billing/events.js.map +1 -0
- package/dist/cjs/subscription-billing/index.js +62 -0
- package/dist/cjs/subscription-billing/index.js.map +1 -0
- package/dist/cjs/subscription-billing/plans.js +88 -0
- package/dist/cjs/subscription-billing/plans.js.map +1 -0
- package/dist/cjs/subscription-billing/product-config.js +54 -0
- package/dist/cjs/subscription-billing/product-config.js.map +1 -0
- package/dist/cjs/subscription-billing/provider/asaas.js +233 -0
- package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -0
- package/dist/cjs/subscription-billing/provider/disabled.js +46 -0
- package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -0
- package/dist/cjs/subscription-billing/provider/registry.js +29 -0
- package/dist/cjs/subscription-billing/provider/registry.js.map +1 -0
- package/dist/cjs/subscription-billing/reconcile.js +198 -0
- package/dist/cjs/subscription-billing/reconcile.js.map +1 -0
- package/dist/cjs/subscription-billing/repository.js +359 -0
- package/dist/cjs/subscription-billing/repository.js.map +1 -0
- package/dist/cjs/subscription-billing/service.js +838 -0
- package/dist/cjs/subscription-billing/service.js.map +1 -0
- package/dist/cjs/subscription-billing/types.js +28 -0
- package/dist/cjs/subscription-billing/types.js.map +1 -0
- package/dist/cjs/tenancy/provisioning.js +126 -0
- package/dist/cjs/tenancy/provisioning.js.map +1 -0
- package/dist/cjs/users/repository.js +83 -0
- package/dist/cjs/users/repository.js.map +1 -0
- package/dist/cjs/vault/crypto.js +94 -0
- package/dist/cjs/vault/crypto.js.map +1 -0
- package/dist/cjs/vault/repository.js +120 -0
- package/dist/cjs/vault/repository.js.map +1 -0
- package/dist/commercial-catalog/catalog.d.ts +27 -0
- package/dist/commercial-catalog/catalog.d.ts.map +1 -0
- package/dist/commercial-catalog/catalog.js +104 -0
- package/dist/commercial-catalog/catalog.js.map +1 -0
- package/dist/commercial-catalog/consumption-contracts.d.ts +33 -0
- package/dist/commercial-catalog/consumption-contracts.d.ts.map +1 -0
- package/dist/commercial-catalog/consumption-contracts.js +9 -0
- package/dist/commercial-catalog/consumption-contracts.js.map +1 -0
- package/dist/commercial-catalog/coupon.d.ts +43 -0
- package/dist/commercial-catalog/coupon.d.ts.map +1 -0
- package/dist/commercial-catalog/coupon.js +57 -0
- package/dist/commercial-catalog/coupon.js.map +1 -0
- package/dist/commercial-catalog/index.d.ts +10 -0
- package/dist/commercial-catalog/index.d.ts.map +1 -0
- package/dist/commercial-catalog/index.js +5 -0
- package/dist/commercial-catalog/index.js.map +1 -0
- package/dist/commercial-catalog/offer-application.d.ts +39 -0
- package/dist/commercial-catalog/offer-application.d.ts.map +1 -0
- package/dist/commercial-catalog/offer-application.js +50 -0
- package/dist/commercial-catalog/offer-application.js.map +1 -0
- package/dist/commercial-catalog/types.d.ts +175 -0
- package/dist/commercial-catalog/types.d.ts.map +1 -0
- package/dist/commercial-catalog/types.js +23 -0
- package/dist/commercial-catalog/types.js.map +1 -0
- package/dist/crm/repository.d.ts +109 -0
- package/dist/crm/repository.d.ts.map +1 -0
- package/dist/crm/repository.js +181 -0
- package/dist/crm/repository.js.map +1 -0
- package/dist/db/context.d.ts +2 -0
- package/dist/db/context.d.ts.map +1 -1
- package/dist/db/context.js +3 -0
- package/dist/db/context.js.map +1 -1
- package/dist/db/migrate.js +7 -2
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/seed.js +4 -1
- package/dist/db/seed.js.map +1 -1
- package/dist/entitlements/decision.d.ts +86 -0
- package/dist/entitlements/decision.d.ts.map +1 -0
- package/dist/entitlements/decision.js +196 -0
- package/dist/entitlements/decision.js.map +1 -0
- package/dist/entitlements/derive.d.ts +30 -0
- package/dist/entitlements/derive.d.ts.map +1 -0
- package/dist/entitlements/derive.js +42 -0
- package/dist/entitlements/derive.js.map +1 -0
- package/dist/entitlements/index.d.ts +10 -0
- package/dist/entitlements/index.d.ts.map +1 -0
- package/dist/entitlements/index.js +7 -0
- package/dist/entitlements/index.js.map +1 -0
- package/dist/entitlements/sources.d.ts +30 -0
- package/dist/entitlements/sources.d.ts.map +1 -0
- package/dist/entitlements/sources.js +55 -0
- package/dist/entitlements/sources.js.map +1 -0
- package/dist/entitlements/standing.d.ts +22 -0
- package/dist/entitlements/standing.d.ts.map +1 -0
- package/dist/entitlements/standing.js +38 -0
- package/dist/entitlements/standing.js.map +1 -0
- package/dist/entitlements/types.d.ts +26 -0
- package/dist/entitlements/types.d.ts.map +1 -0
- package/dist/entitlements/types.js +15 -0
- package/dist/entitlements/types.js.map +1 -0
- package/dist/index.d.ts +74 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -4
- package/dist/index.js.map +1 -1
- package/dist/mail/dedup-store.d.ts +25 -0
- package/dist/mail/dedup-store.d.ts.map +1 -0
- package/dist/mail/dedup-store.js +51 -0
- package/dist/mail/dedup-store.js.map +1 -0
- package/dist/mail/index.d.ts +10 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +9 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/mail/provider.d.ts +31 -0
- package/dist/mail/provider.d.ts.map +1 -0
- package/dist/mail/provider.js +248 -0
- package/dist/mail/provider.js.map +1 -0
- package/dist/mail/resend-client.d.ts +16 -0
- package/dist/mail/resend-client.d.ts.map +1 -0
- package/dist/mail/resend-client.js +100 -0
- package/dist/mail/resend-client.js.map +1 -0
- package/dist/mail/resend.d.ts.map +1 -1
- package/dist/mail/resend.js +2 -0
- package/dist/mail/resend.js.map +1 -1
- package/dist/mail/sanitize.d.ts +17 -0
- package/dist/mail/sanitize.d.ts.map +1 -0
- package/dist/mail/sanitize.js +51 -0
- package/dist/mail/sanitize.js.map +1 -0
- package/dist/mail/sender-resolver.d.ts +8 -0
- package/dist/mail/sender-resolver.d.ts.map +1 -0
- package/dist/mail/sender-resolver.js +11 -0
- package/dist/mail/sender-resolver.js.map +1 -0
- package/dist/mail/template-renderer.d.ts +10 -0
- package/dist/mail/template-renderer.d.ts.map +1 -0
- package/dist/mail/template-renderer.js +17 -0
- package/dist/mail/template-renderer.js.map +1 -0
- package/dist/mail/types.d.ts +143 -0
- package/dist/mail/types.d.ts.map +1 -0
- package/dist/mail/types.js +34 -0
- package/dist/mail/types.js.map +1 -0
- package/dist/onboarding/domain.d.ts +146 -0
- package/dist/onboarding/domain.d.ts.map +1 -0
- package/dist/onboarding/domain.js +348 -0
- package/dist/onboarding/domain.js.map +1 -0
- package/dist/onboarding/interaction-review.d.ts +123 -0
- package/dist/onboarding/interaction-review.d.ts.map +1 -0
- package/dist/onboarding/interaction-review.js +413 -0
- package/dist/onboarding/interaction-review.js.map +1 -0
- package/dist/onboarding/persistence.d.ts +106 -0
- package/dist/onboarding/persistence.d.ts.map +1 -0
- package/dist/onboarding/persistence.js +430 -0
- package/dist/onboarding/persistence.js.map +1 -0
- package/dist/onboarding/portal-actions.d.ts +48 -0
- package/dist/onboarding/portal-actions.d.ts.map +1 -0
- package/dist/onboarding/portal-actions.js +153 -0
- package/dist/onboarding/portal-actions.js.map +1 -0
- package/dist/onboarding/portal.d.ts +58 -0
- package/dist/onboarding/portal.d.ts.map +1 -0
- package/dist/onboarding/portal.js +170 -0
- package/dist/onboarding/portal.js.map +1 -0
- package/dist/pricing-engine/bundle.d.ts +22 -0
- package/dist/pricing-engine/bundle.d.ts.map +1 -0
- package/dist/pricing-engine/bundle.js +44 -0
- package/dist/pricing-engine/bundle.js.map +1 -0
- package/dist/pricing-engine/errors.d.ts +32 -0
- package/dist/pricing-engine/errors.d.ts.map +1 -0
- package/dist/pricing-engine/errors.js +44 -0
- package/dist/pricing-engine/errors.js.map +1 -0
- package/dist/pricing-engine/index.d.ts +12 -0
- package/dist/pricing-engine/index.d.ts.map +1 -0
- package/dist/pricing-engine/index.js +8 -0
- package/dist/pricing-engine/index.js.map +1 -0
- package/dist/pricing-engine/money.d.ts +32 -0
- package/dist/pricing-engine/money.d.ts.map +1 -0
- package/dist/pricing-engine/money.js +58 -0
- package/dist/pricing-engine/money.js.map +1 -0
- package/dist/pricing-engine/pipeline.d.ts +3 -0
- package/dist/pricing-engine/pipeline.d.ts.map +1 -0
- package/dist/pricing-engine/pipeline.js +327 -0
- package/dist/pricing-engine/pipeline.js.map +1 -0
- package/dist/pricing-engine/proration.d.ts +3 -0
- package/dist/pricing-engine/proration.d.ts.map +1 -0
- package/dist/pricing-engine/proration.js +50 -0
- package/dist/pricing-engine/proration.js.map +1 -0
- package/dist/pricing-engine/shadow.d.ts +51 -0
- package/dist/pricing-engine/shadow.d.ts.map +1 -0
- package/dist/pricing-engine/shadow.js +54 -0
- package/dist/pricing-engine/shadow.js.map +1 -0
- package/dist/pricing-engine/types.d.ts +184 -0
- package/dist/pricing-engine/types.d.ts.map +1 -0
- package/dist/pricing-engine/types.js +31 -0
- package/dist/pricing-engine/types.js.map +1 -0
- package/dist/rbac/authorize.d.ts +3 -6
- package/dist/rbac/authorize.d.ts.map +1 -1
- package/dist/rbac/authorize.js +4 -8
- package/dist/rbac/authorize.js.map +1 -1
- package/dist/rbac/catalog.d.ts.map +1 -1
- package/dist/rbac/catalog.js +414 -21
- package/dist/rbac/catalog.js.map +1 -1
- package/dist/subscription-billing/dunning.d.ts +18 -0
- package/dist/subscription-billing/dunning.d.ts.map +1 -0
- package/dist/subscription-billing/dunning.js +28 -0
- package/dist/subscription-billing/dunning.js.map +1 -0
- package/dist/subscription-billing/events.d.ts +58 -0
- package/dist/subscription-billing/events.d.ts.map +1 -0
- package/dist/subscription-billing/events.js +38 -0
- package/dist/subscription-billing/events.js.map +1 -0
- package/dist/subscription-billing/index.d.ts +18 -0
- package/dist/subscription-billing/index.d.ts.map +1 -0
- package/dist/subscription-billing/index.js +16 -0
- package/dist/subscription-billing/index.js.map +1 -0
- package/dist/subscription-billing/plans.d.ts +34 -0
- package/dist/subscription-billing/plans.d.ts.map +1 -0
- package/dist/subscription-billing/plans.js +85 -0
- package/dist/subscription-billing/plans.js.map +1 -0
- package/dist/subscription-billing/product-config.d.ts +61 -0
- package/dist/subscription-billing/product-config.d.ts.map +1 -0
- package/dist/subscription-billing/product-config.js +50 -0
- package/dist/subscription-billing/product-config.js.map +1 -0
- package/dist/subscription-billing/provider/asaas.d.ts +26 -0
- package/dist/subscription-billing/provider/asaas.d.ts.map +1 -0
- package/dist/subscription-billing/provider/asaas.js +229 -0
- package/dist/subscription-billing/provider/asaas.js.map +1 -0
- package/dist/subscription-billing/provider/disabled.d.ts +30 -0
- package/dist/subscription-billing/provider/disabled.d.ts.map +1 -0
- package/dist/subscription-billing/provider/disabled.js +42 -0
- package/dist/subscription-billing/provider/disabled.js.map +1 -0
- package/dist/subscription-billing/provider/registry.d.ts +10 -0
- package/dist/subscription-billing/provider/registry.d.ts.map +1 -0
- package/dist/subscription-billing/provider/registry.js +26 -0
- package/dist/subscription-billing/provider/registry.js.map +1 -0
- package/dist/subscription-billing/reconcile.d.ts +45 -0
- package/dist/subscription-billing/reconcile.d.ts.map +1 -0
- package/dist/subscription-billing/reconcile.js +192 -0
- package/dist/subscription-billing/reconcile.js.map +1 -0
- package/dist/subscription-billing/repository.d.ts +168 -0
- package/dist/subscription-billing/repository.d.ts.map +1 -0
- package/dist/subscription-billing/repository.js +336 -0
- package/dist/subscription-billing/repository.js.map +1 -0
- package/dist/subscription-billing/service.d.ts +175 -0
- package/dist/subscription-billing/service.d.ts.map +1 -0
- package/dist/subscription-billing/service.js +818 -0
- package/dist/subscription-billing/service.js.map +1 -0
- package/dist/subscription-billing/types.d.ts +161 -0
- package/dist/subscription-billing/types.d.ts.map +1 -0
- package/dist/subscription-billing/types.js +24 -0
- package/dist/subscription-billing/types.js.map +1 -0
- package/dist/vault/crypto.d.ts +22 -0
- package/dist/vault/crypto.d.ts.map +1 -0
- package/dist/vault/crypto.js +88 -0
- package/dist/vault/crypto.js.map +1 -0
- package/dist/vault/repository.d.ts +45 -0
- package/dist/vault/repository.d.ts.map +1 -0
- package/dist/vault/repository.js +111 -0
- package/dist/vault/repository.js.map +1 -0
- package/package.json +23 -13
- package/src/db/migrations/0012_vault.sql +51 -0
- package/src/db/migrations/0013_crm.sql +67 -0
- package/src/db/migrations/0014_billing.sql +146 -0
- package/src/db/migrations/0015_merchant_billing_ar.sql +201 -0
- package/src/db/migrations/0016_office_onboarding.sql +162 -0
- package/src/db/migrations/0017_office_onboarding_api.sql +21 -0
- package/src/db/migrations/0018_office_onboarding_portal_actions.sql +60 -0
- package/src/db/migrations/0019_office_onboarding_interaction_review.sql +134 -0
- package/src/db/migrations/0020_saas_billing.sql +157 -0
- package/src/db/migrations/0021_saas_billing_indexes.sql +23 -0
- package/src/db/migrations/0022_saas_billing_multi_product.sql +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../src/pricing-engine/shadow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pricing Engine — contratos canônicos (RFC-CAPABILITY-PRICING-ENGINE-001,
|
|
3
|
+
* Track A P1-P3). Domínio PURO — sem DB, sem HTTP, sem `Date.now()` interno,
|
|
4
|
+
* sem aleatório (§3 "determinismo": mesmo input → mesmo output, bit a bit).
|
|
5
|
+
*
|
|
6
|
+
* Fronteira dura (§1): o Engine CALCULA, não POSSUI o catálogo (isso é
|
|
7
|
+
* `commercial-catalog/`) — recebe Plan/Module/Bundle/Offer/PriceTable já
|
|
8
|
+
* resolvidos pelo consumidor. Não mede consumo (Usage), não converte consumo
|
|
9
|
+
* em crédito (Rating), não guarda saldo (Wallet), não cobra (Provider) — ver
|
|
10
|
+
* §12. `PricingQuote` aqui é DISTINTO do `PriceQuote` minimalista de
|
|
11
|
+
* `commercial-catalog/types.ts` (aquele é o "resolvedor mínimo", explicitamente
|
|
12
|
+
* superado por este — RFC-Catalog §16.1/§16.7); nomeado `PricingQuote`
|
|
13
|
+
* (não `PriceQuote`) para não colidir no barrel do pacote.
|
|
14
|
+
*/
|
|
15
|
+
import type { BundleRecord, CommercialPlan, CommercialPriceTable, ModuleRecord, OfferRecord, ProductLineCode } from '../commercial-catalog/types.js';
|
|
16
|
+
import type { Cents } from './money.js';
|
|
17
|
+
import type { PricingErrorCode } from './errors.js';
|
|
18
|
+
export declare const PRICING_ENGINE_VERSION = "0.1.0";
|
|
19
|
+
/** Resultado de uma operação pública do Engine — erro é DADO, nunca `throw` na fronteira (RFC §2/§7). */
|
|
20
|
+
export type EngineResult<T> = {
|
|
21
|
+
ok: true;
|
|
22
|
+
value: T;
|
|
23
|
+
} | {
|
|
24
|
+
ok: false;
|
|
25
|
+
error: {
|
|
26
|
+
code: PricingErrorCode;
|
|
27
|
+
errorClass: string;
|
|
28
|
+
message: string;
|
|
29
|
+
ruleIds: string[];
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export type PricingRuleStep = 'BASE_PLAN_PRICE' | 'MODULE_PRICE' | 'QUANTITY_PRICE' | 'ADDON_PRICE' | 'BUNDLE_DISCOUNT' | 'NEGOTIATED_DISCOUNT' | 'COUPON' | 'CAMPAIGN' | 'PROMOTIONAL_CREDIT' | 'CONTRACT_OVERRIDE_OR_GRANDFATHERING' | 'TAX' | 'ROUNDING';
|
|
33
|
+
/** As 12 etapas, na ordem oficial — usado para validar/auditar `appliedRules` (nunca reordenado em runtime). */
|
|
34
|
+
export declare const PRICING_RULE_STEPS_IN_ORDER: readonly PricingRuleStep[];
|
|
35
|
+
export type ItemOrigin = 'plan' | 'module' | 'bundle' | 'addon' | 'seat' | 'franchise' | 'excess' | 'adjustment' | 'proration' | 'discount';
|
|
36
|
+
export interface PricingQuoteItem {
|
|
37
|
+
origin: ItemOrigin;
|
|
38
|
+
targetCode: string;
|
|
39
|
+
quantity: number;
|
|
40
|
+
unitPriceCents: Cents;
|
|
41
|
+
subtotalCents: Cents;
|
|
42
|
+
}
|
|
43
|
+
export interface PricingQuoteDiscount {
|
|
44
|
+
ruleId: string;
|
|
45
|
+
step: PricingRuleStep;
|
|
46
|
+
kind: string;
|
|
47
|
+
amountCents: Cents;
|
|
48
|
+
appliesTo: string[];
|
|
49
|
+
}
|
|
50
|
+
export interface PricingQuoteTax {
|
|
51
|
+
code: string;
|
|
52
|
+
baseCents: Cents;
|
|
53
|
+
ratePercent: number;
|
|
54
|
+
amountCents: Cents;
|
|
55
|
+
}
|
|
56
|
+
export interface TrialContext {
|
|
57
|
+
active: boolean;
|
|
58
|
+
endsAt: string;
|
|
59
|
+
/** Franquias reduzidas durante o trial, quando configurado (RFC ETAPA 8) — opcional. */
|
|
60
|
+
reducedFranchises?: Record<string, number>;
|
|
61
|
+
}
|
|
62
|
+
export interface NegotiatedContract {
|
|
63
|
+
tenantId: string;
|
|
64
|
+
/** Passo 6 (§8): desconto percentual CUMULATIVO sobre a base original (não composto com outros %). */
|
|
65
|
+
discountPercent?: number;
|
|
66
|
+
/** Passo 10 (§8): FIXA/SOBREPÕE o total final — override duro, não um desconto adicional. */
|
|
67
|
+
fixedTotalCents?: Cents;
|
|
68
|
+
freeModuleCodes?: string[];
|
|
69
|
+
validFrom: string;
|
|
70
|
+
validTo: string | null;
|
|
71
|
+
approvedBy: string;
|
|
72
|
+
justification: string;
|
|
73
|
+
priority?: number;
|
|
74
|
+
}
|
|
75
|
+
export type BundlePricingRuleKind = 'percent' | 'fixed' | 'free_module';
|
|
76
|
+
export interface BundlePricingRule {
|
|
77
|
+
bundleCode: string;
|
|
78
|
+
kind: BundlePricingRuleKind;
|
|
79
|
+
/** percent: 0-100. fixed: valor fechado em REAIS (convertido para centavos no Engine). free_module: ignorado. */
|
|
80
|
+
value?: number;
|
|
81
|
+
/** Só para kind='free_module' — módulo do bundle que fica com preço zerado. */
|
|
82
|
+
freeModuleCode?: string;
|
|
83
|
+
priority?: number;
|
|
84
|
+
}
|
|
85
|
+
export interface PricingCouponRule {
|
|
86
|
+
code: string;
|
|
87
|
+
effectType: 'percent_off' | 'amount_off';
|
|
88
|
+
percentOff?: number;
|
|
89
|
+
amountOffCents?: Cents;
|
|
90
|
+
exclusive?: boolean;
|
|
91
|
+
priority?: number;
|
|
92
|
+
}
|
|
93
|
+
export interface PricingCampaignRule {
|
|
94
|
+
code: string;
|
|
95
|
+
effectType: 'percent_off' | 'amount_off';
|
|
96
|
+
percentOff?: number;
|
|
97
|
+
amountOffCents?: Cents;
|
|
98
|
+
exclusive?: boolean;
|
|
99
|
+
priority?: number;
|
|
100
|
+
}
|
|
101
|
+
export type ProrationReason = 'upgrade' | 'downgrade' | 'add_module' | 'remove_module' | 'seats_up' | 'seats_down' | 'cycle_change' | 'cancel' | 'reactivate';
|
|
102
|
+
export type ProrationTiming = 'immediate' | 'next_renewal';
|
|
103
|
+
export interface ProrationInput {
|
|
104
|
+
reason: ProrationReason;
|
|
105
|
+
/** Início/fim do ciclo vigente, ISO (data pura ou datetime — normalizado internamente). */
|
|
106
|
+
cycleStart: string;
|
|
107
|
+
cycleEnd: string;
|
|
108
|
+
now: string;
|
|
109
|
+
/** Valor do plano/módulo ANTIGO para o ciclo cheio, em centavos. */
|
|
110
|
+
oldValueCents: Cents;
|
|
111
|
+
/** Valor do NOVO plano/módulo para o ciclo cheio, em centavos (ignorado em `cancel`). */
|
|
112
|
+
newValueCents: Cents;
|
|
113
|
+
/** Sobrescreve a política default por `reason` (upgrade/add/seats_up/cycle_change/reactivate=immediate; downgrade/remove/seats_down=next_renewal). */
|
|
114
|
+
timingPolicy?: ProrationTiming;
|
|
115
|
+
}
|
|
116
|
+
export interface ProrationResult {
|
|
117
|
+
reason: ProrationReason;
|
|
118
|
+
effective: ProrationTiming;
|
|
119
|
+
daysRemaining: number;
|
|
120
|
+
daysInCycle: number;
|
|
121
|
+
creditCents: Cents;
|
|
122
|
+
debitCents: Cents;
|
|
123
|
+
netCents: Cents;
|
|
124
|
+
}
|
|
125
|
+
export interface PricingRequest {
|
|
126
|
+
tenantId: string;
|
|
127
|
+
productLine: ProductLineCode;
|
|
128
|
+
offer: OfferRecord;
|
|
129
|
+
plan: CommercialPlan;
|
|
130
|
+
modules: ModuleRecord[];
|
|
131
|
+
bundles: BundleRecord[];
|
|
132
|
+
priceTable: CommercialPriceTable;
|
|
133
|
+
/** Regras de desconto de bundle resolvidas (Engine não infere — ver BundlePricingRule). */
|
|
134
|
+
bundleRules?: BundlePricingRule[];
|
|
135
|
+
/** Quantidade de assentos EXTRA além da franquia do plano (delta já calculado pelo consumidor). */
|
|
136
|
+
extraSeats?: number;
|
|
137
|
+
/** targetCode do addon → quantidade (default 1 quando o addon está na oferta sem entrada aqui). */
|
|
138
|
+
addonQuantities?: Record<string, number>;
|
|
139
|
+
negotiatedContract?: NegotiatedContract;
|
|
140
|
+
coupon?: PricingCouponRule;
|
|
141
|
+
campaign?: PricingCampaignRule;
|
|
142
|
+
trial?: TrialContext;
|
|
143
|
+
/** Validade da cotação em horas (default 24 — RFC §7 "a oferta não vale para sempre"). */
|
|
144
|
+
quoteValidityHours?: number;
|
|
145
|
+
/** Seleciona QUAL entrada de `CommercialPriceItem.interval` é usada na busca (mesmo targetCode pode ter preço mensal e anual). */
|
|
146
|
+
billingCycle: 'monthly' | 'yearly';
|
|
147
|
+
now: string;
|
|
148
|
+
}
|
|
149
|
+
export interface PricingQuote {
|
|
150
|
+
quoteId: string;
|
|
151
|
+
engineVersion: string;
|
|
152
|
+
tenantId: string;
|
|
153
|
+
productLine: ProductLineCode;
|
|
154
|
+
offerCode: string;
|
|
155
|
+
priceTableCode: string;
|
|
156
|
+
priceTableVersion: number;
|
|
157
|
+
/** Hash determinístico do conjunto plan+modules+bundles usado (auditoria de qual catálogo gerou o quote). */
|
|
158
|
+
catalogVersion: string;
|
|
159
|
+
pricingPolicyVersion: string;
|
|
160
|
+
currency: string;
|
|
161
|
+
now: string;
|
|
162
|
+
effectiveAt: string;
|
|
163
|
+
expiresAt: string;
|
|
164
|
+
items: PricingQuoteItem[];
|
|
165
|
+
discounts: PricingQuoteDiscount[];
|
|
166
|
+
taxes: PricingQuoteTax[];
|
|
167
|
+
/** Reservado (Wallet/Rating) — sempre 0 neste MVP (RFC §12). */
|
|
168
|
+
promotionalCreditsCents: Cents;
|
|
169
|
+
subtotalCents: Cents;
|
|
170
|
+
totalDiscountCents: Cents;
|
|
171
|
+
totalTaxCents: Cents;
|
|
172
|
+
/** O que será cobrado AGORA — 0 quando `trial.active`. */
|
|
173
|
+
totalCents: Cents;
|
|
174
|
+
/** Valor após conversão do trial — `null` quando não há trial ativo. */
|
|
175
|
+
postTrialTotalCents: Cents | null;
|
|
176
|
+
trial: TrialContext | null;
|
|
177
|
+
appliedRules: PricingRuleStep[];
|
|
178
|
+
warnings: string[];
|
|
179
|
+
/** Hash determinístico de todo o input relevante — mesmo input → mesmo fingerprint (§3). */
|
|
180
|
+
fingerprint: string;
|
|
181
|
+
auditMetadata: Record<string, unknown>;
|
|
182
|
+
proration: ProrationResult | null;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pricing-engine/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pricing Engine — contratos canônicos (RFC-CAPABILITY-PRICING-ENGINE-001,
|
|
3
|
+
* Track A P1-P3). Domínio PURO — sem DB, sem HTTP, sem `Date.now()` interno,
|
|
4
|
+
* sem aleatório (§3 "determinismo": mesmo input → mesmo output, bit a bit).
|
|
5
|
+
*
|
|
6
|
+
* Fronteira dura (§1): o Engine CALCULA, não POSSUI o catálogo (isso é
|
|
7
|
+
* `commercial-catalog/`) — recebe Plan/Module/Bundle/Offer/PriceTable já
|
|
8
|
+
* resolvidos pelo consumidor. Não mede consumo (Usage), não converte consumo
|
|
9
|
+
* em crédito (Rating), não guarda saldo (Wallet), não cobra (Provider) — ver
|
|
10
|
+
* §12. `PricingQuote` aqui é DISTINTO do `PriceQuote` minimalista de
|
|
11
|
+
* `commercial-catalog/types.ts` (aquele é o "resolvedor mínimo", explicitamente
|
|
12
|
+
* superado por este — RFC-Catalog §16.1/§16.7); nomeado `PricingQuote`
|
|
13
|
+
* (não `PriceQuote`) para não colidir no barrel do pacote.
|
|
14
|
+
*/
|
|
15
|
+
export const PRICING_ENGINE_VERSION = '0.1.0';
|
|
16
|
+
/** As 12 etapas, na ordem oficial — usado para validar/auditar `appliedRules` (nunca reordenado em runtime). */
|
|
17
|
+
export const PRICING_RULE_STEPS_IN_ORDER = [
|
|
18
|
+
'BASE_PLAN_PRICE',
|
|
19
|
+
'MODULE_PRICE',
|
|
20
|
+
'QUANTITY_PRICE',
|
|
21
|
+
'ADDON_PRICE',
|
|
22
|
+
'BUNDLE_DISCOUNT',
|
|
23
|
+
'NEGOTIATED_DISCOUNT',
|
|
24
|
+
'COUPON',
|
|
25
|
+
'CAMPAIGN',
|
|
26
|
+
'PROMOTIONAL_CREDIT',
|
|
27
|
+
'CONTRACT_OVERRIDE_OR_GRANDFATHERING',
|
|
28
|
+
'TAX',
|
|
29
|
+
'ROUNDING',
|
|
30
|
+
];
|
|
31
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pricing-engine/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AA0B9C,gHAAgH;AAChH,MAAM,CAAC,MAAM,2BAA2B,GAA+B;IACrE,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,iBAAiB;IACjB,qBAAqB;IACrB,QAAQ;IACR,UAAU;IACV,oBAAoB;IACpB,qCAAqC;IACrC,KAAK;IACL,UAAU;CACX,CAAC"}
|
package/dist/rbac/authorize.d.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import type { Tx } from '../db/client.js';
|
|
2
2
|
/**
|
|
3
|
-
* Avaliação de permissão (04-rbac §6)
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `ReadonlySet`); `assertPermission` PRESERVA o `ForbiddenError` do domínio — o
|
|
7
|
-
* contrato de erro/HTTP fica intacto (o canônico lançaria um `Error` genérico).
|
|
3
|
+
* Avaliação de permissão (04-rbac §6). Decisão sempre no backend; a RLS no banco
|
|
4
|
+
* é a última linha de defesa. Aqui trabalhamos sobre o conjunto de permissões já
|
|
5
|
+
* resolvido para o (usuário, tenant) corrente.
|
|
8
6
|
*/
|
|
9
7
|
export declare function canDo(permissions: ReadonlySet<string>, required: string): boolean;
|
|
10
8
|
export declare function assertPermission(permissions: ReadonlySet<string>, required: string): void;
|
|
11
9
|
/**
|
|
12
10
|
* Carrega as permissões efetivas de um usuário DENTRO do tenant corrente.
|
|
13
|
-
* Permanece no core: é I/O de domínio (RLS/tenant), não primitiva canônica.
|
|
14
11
|
* Deve rodar dentro de `withContext({ tenantId, userId })` — a RLS de
|
|
15
12
|
* `user_role`/`role_permission` já restringe as linhas ao tenant ativo.
|
|
16
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../src/rbac/authorize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../src/rbac/authorize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjF;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIzF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAUtF"}
|
package/dist/rbac/authorize.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { ForbiddenError } from '@baruk/shared';
|
|
2
|
-
import { canDo as canonicalCanDo } from '@baruk/identity';
|
|
3
2
|
/**
|
|
4
|
-
* Avaliação de permissão (04-rbac §6)
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `ReadonlySet`); `assertPermission` PRESERVA o `ForbiddenError` do domínio — o
|
|
8
|
-
* contrato de erro/HTTP fica intacto (o canônico lançaria um `Error` genérico).
|
|
3
|
+
* Avaliação de permissão (04-rbac §6). Decisão sempre no backend; a RLS no banco
|
|
4
|
+
* é a última linha de defesa. Aqui trabalhamos sobre o conjunto de permissões já
|
|
5
|
+
* resolvido para o (usuário, tenant) corrente.
|
|
9
6
|
*/
|
|
10
7
|
export function canDo(permissions, required) {
|
|
11
|
-
return
|
|
8
|
+
return permissions.has(required);
|
|
12
9
|
}
|
|
13
10
|
export function assertPermission(permissions, required) {
|
|
14
11
|
if (!canDo(permissions, required)) {
|
|
@@ -17,7 +14,6 @@ export function assertPermission(permissions, required) {
|
|
|
17
14
|
}
|
|
18
15
|
/**
|
|
19
16
|
* Carrega as permissões efetivas de um usuário DENTRO do tenant corrente.
|
|
20
|
-
* Permanece no core: é I/O de domínio (RLS/tenant), não primitiva canônica.
|
|
21
17
|
* Deve rodar dentro de `withContext({ tenantId, userId })` — a RLS de
|
|
22
18
|
* `user_role`/`role_permission` já restringe as linhas ao tenant ativo.
|
|
23
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../src/rbac/authorize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../src/rbac/authorize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,WAAgC,EAAE,QAAgB;IACtE,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAgC,EAAE,QAAgB;IACjF,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,cAAc,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/rbac/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,aAAa,
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/rbac/catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,aAAa,EAqT/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAkC,CAAC;AAEpF,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAID,mFAAmF;AACnF,eAAO,MAAM,YAAY,EAAE,SAAS,OAAO,EAoI1C,CAAC"}
|