Shared utilities for AWS Lambda functions in the AgendaCheia platform
npm install @agendacheia/lambda-utilsShared utilities for AWS Lambda functions in the AgendaCheia platform.
``bash`
npm install @agendacheia/lambda-utils
- HTTP Utilities: Request/response handling, CORS, headers
- Logger: Structured CloudWatch logging with context support
- GraphQL Client: Type-safe GraphQL operations with retry logic
- AWS Clients: Pre-configured S3, SQS, SES, Kinesis, CloudWatch clients
- Validation: Input validation and sanitization
- Error Classes: Standardized error handling
- Configuration: Environment variable helpers
- Stripe Integration: Complete Stripe SDK utilities for Billing, Connect, Payments, and Webhooks
`typescript
import { createPreSignUpLogger } from '@agendacheia/lambda-utils/logger'
const logger = createPreSignUpLogger(event, context)
logger.info('Processing request', { userId: '123' })
`
`typescript
import { createResponse, ok, badRequest } from '@agendacheia/lambda-utils/http'
return ok({ message: 'Success' })
return badRequest('Invalid input')
`
`typescript
import { createSchema, required, email } from '@agendacheia/lambda-utils/validation'
const schema = createSchema({
email: { rules: [required(), email()] },
})
const result = schema.validate(input)
`
`typescript
import { ValidationError, NotFoundError } from '@agendacheia/lambda-utils/errors'
throw new ValidationError('Email is required')
throw new NotFoundError('User')
`
`typescript
import {
createStripeClientFromEnv,
createSubscription,
cancelSubscription,
StripeApiError,
} from '@agendacheia/lambda-utils/stripe'
const client = createStripeClientFromEnv(logger)
// Create a subscription
const subscription = await createSubscription(client, {
customerId: 'cus_xxx',
priceId: 'price_xxx',
trialPeriodDays: 14
})
// Handle Stripe Connect
import { createConnectAccount, getAccountStatus } from '@agendacheia/lambda-utils/stripe/connect'
const account = await createConnectAccount(client, {
businessId: 'biz_123',
email: 'business@example.com',
type: 'individual'
})
// Process PIX payments (Brazil)
import { createPixPayment, getPixQrCode } from '@agendacheia/lambda-utils/stripe/payments'
const payment = await createPixPayment(client, {
amount: 10000, // R$ 100.00 in centavos
customerId: 'cus_xxx',
businessId: 'biz_123'
})
// Webhook handling
import { WebhookRouter, verifyWebhookSignature } from '@agendacheia/lambda-utils/stripe/webhooks'
const router = new WebhookRouter()
router.on('invoice.paid', handleInvoicePaid)
router.on('payment_intent.succeeded', handlePaymentSuccess)
`
| Module | Import Path |
|--------|-------------|
| HTTP | @agendacheia/lambda-utils/http |@agendacheia/lambda-utils/logger
| Logger | |@agendacheia/lambda-utils/graphql
| GraphQL | |@agendacheia/lambda-utils/aws
| AWS | |@agendacheia/lambda-utils/validation
| Validation | |@agendacheia/lambda-utils/errors
| Errors | |@agendacheia/lambda-utils/config
| Config | |@agendacheia/lambda-utils/stripe
| Stripe (all) | |@agendacheia/lambda-utils/stripe/billing
| Stripe Billing | |@agendacheia/lambda-utils/stripe/connect
| Stripe Connect | |@agendacheia/lambda-utils/stripe/payments
| Stripe Payments | |@agendacheia/lambda-utils/stripe/webhooks` |
| Stripe Webhooks |
UNLICENSED - Internal use only