diff --git a/README.md b/README.md index 3d200e6b..c261251c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Brazil 🇧🇷 · Mexico 🇲🇽 · Argentina 🇦🇷 · Colombia 🇨🇴 · Chile 🇨🇱 · Peru 🇵🇪 · plus 4 agentic payment protocols.

- 109 MCP servers · 2,289 tools · 6 countries · MIT License + 110 MCP servers · 2,300 tools · 6 countries · MIT License

Catalog · @@ -16,8 +16,8 @@

License: MIT - 109 servers - 2289 tools + 110 servers + 2300 tools 6 countries MCP compatible

@@ -279,7 +279,7 @@ Browse the full catalog at [codespar.dev/servers](https://codespar.dev/servers). | **[Take Blip](packages/communication/take-blip)** | 18 | `@codespar/mcp-take-blip` | API Key | | **[Zenvia](packages/communication/zenvia)** | 18 | `@codespar/mcp-zenvia` | API Key | -### 📦 E-commerce / Logistics (6 servers) +### 📦 E-commerce / Logistics (7 servers) | Server | Tools | npm | Auth | |---|---|---|---| @@ -289,6 +289,7 @@ Browse the full catalog at [codespar.dev/servers](https://codespar.dev/servers). | **[Shopee](packages/ecommerce/shopee)** alpha | 22 | `@codespar/mcp-shopee` | API Key | | **[Correios](packages/ecommerce/correios)** alpha | 21 | `@codespar/mcp-correios` | API Key | | **[Melhor Envio](packages/ecommerce/melhor-envio)** | 18 | `@codespar/mcp-melhor-envio` | API Key | +| **[SuperFrete](packages/ecommerce/superfrete)** | 11 | `@codespar/mcp-superfrete` | API Key | ### 📊 ERP / Accounting (5 servers) diff --git a/package-lock.json b/package-lock.json index 465024d4..43984abf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -395,6 +395,10 @@ "resolved": "packages/payments/stripe-acp", "link": true }, + "node_modules/@codespar/mcp-superfrete": { + "resolved": "packages/ecommerce/superfrete", + "link": true + }, "node_modules/@codespar/mcp-take-blip": { "resolved": "packages/communication/take-blip", "link": true @@ -4394,6 +4398,21 @@ "typescript": "^5.8.0" } }, + "packages/ecommerce/superfrete": { + "name": "@codespar/mcp-superfrete", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-superfrete": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.8.0" + } + }, "packages/ecommerce/vtex": { "name": "@codespar/mcp-vtex", "version": "0.2.2", diff --git a/packages/ecommerce/superfrete/README.md b/packages/ecommerce/superfrete/README.md new file mode 100644 index 00000000..ba5524f0 --- /dev/null +++ b/packages/ecommerce/superfrete/README.md @@ -0,0 +1,122 @@ +# @codespar/mcp-superfrete + +> MCP server for **SuperFrete** — Brazilian shipping platform with discounted rates across multiple carriers + +[![npm](https://img.shields.io/npm/v/@codespar/mcp-superfrete)](https://www.npmjs.com/package/@codespar/mcp-superfrete) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) + +## Quick Start + +### Claude Desktop + +Add to `~/.config/claude/claude_desktop_config.json`: + +```json +{ + "mcpServers": { + "superfrete": { + "command": "npx", + "args": ["-y", "@codespar/mcp-superfrete"], + "env": { + "SUPERFRETE_TOKEN": "your-token", + "SUPERFRETE_SANDBOX": "true" + } + } + } +} +``` + +### Claude Code + +```bash +claude mcp add superfrete -- npx @codespar/mcp-superfrete +``` + +### Cursor / VS Code + +Add to `.cursor/mcp.json` or `.vscode/mcp.json`: + +```json +{ + "servers": { + "superfrete": { + "command": "npx", + "args": ["-y", "@codespar/mcp-superfrete"], + "env": { + "SUPERFRETE_TOKEN": "your-token", + "SUPERFRETE_SANDBOX": "true" + } + } + } +} +``` + +## Tools (11) + +| Tool | Description | +|------|-------------| +| `calculate_freight` | Calculate shipping rates across carriers (PAC, SEDEX, JadLog, Loggi, Mini Envios) | +| `create_freight` | Create a freight/label order | +| `get_freight` | Get freight order details, status, and tracking | +| `checkout_freight` | Purchase freight orders and generate labels | +| `cancel_freight` | Cancel a freight order | +| `get_user_info` | Get user info, balance, and shipment limits | +| `get_user_addresses` | List saved addresses | +| `get_services` | Get available services with restrictions and limits | +| `list_webhooks` | List configured webhooks | +| `create_webhook` | Create a webhook for order event notifications | +| `delete_webhook` | Delete a webhook | + +## Authentication + +SuperFrete uses a Bearer token (API key) for authentication. + +## Sandbox / Testing + +SuperFrete provides a sandbox environment. Set `SUPERFRETE_SANDBOX=true` to use it. + +### Get your credentials + +1. Go to [SuperFrete](https://superfrete.com) and create an account +2. Navigate to [Integrations](https://web.superfrete.com/#/integrations/select-integration-platform) +3. Click **"Desenvolvedores"** → **"Integrar"** to generate your API token +4. Set the `SUPERFRETE_TOKEN` environment variable + +## Environment Variables + +| Variable | Required | Description | +|----------|----------|-------------| +| `SUPERFRETE_TOKEN` | Yes | API Bearer token from SuperFrete | +| `SUPERFRETE_SANDBOX` | No | Set to `"true"` for sandbox mode | + +## Available Services + +| ID | Service | Carrier | +|----|---------|---------| +| 1 | PAC | Correios | +| 2 | SEDEX | Correios | +| 3 | .Package | JadLog | +| 17 | Mini Envios | Correios | +| 31 | Loggi | Loggi | + +## Typical Workflow + +1. **Calculate rates** with `calculate_freight` — get prices and delivery times for all carriers +2. **Create order** with `create_freight` — select a service and provide addresses +3. **Checkout** with `checkout_freight` — pay for the order and generate the label +4. **Track** with `get_freight` — monitor status and get the label print URL + +## Links + +- [SuperFrete Website](https://superfrete.com) +- [SuperFrete API Documentation](https://docs.superfrete.com) +- [MCP Dev LATAM](https://github.com/codespar/mcp-dev-latam) +- [Catalog](https://codespar.dev/servers) + +## Enterprise + +Need governance, budget limits, and audit trails for agent payments? [CodeSpar Enterprise](https://codespar.dev/enterprise) adds policy engine, payment routing, and compliance templates on top of these MCP servers. + +## License + +MIT diff --git a/packages/ecommerce/superfrete/package.json b/packages/ecommerce/superfrete/package.json new file mode 100644 index 00000000..cda8563b --- /dev/null +++ b/packages/ecommerce/superfrete/package.json @@ -0,0 +1,32 @@ +{ + "name": "@codespar/mcp-superfrete", + "version": "0.1.0", + "description": "MCP server for SuperFrete shipping API - freight calculation, label creation, tracking, and account management for Brazilian logistics", + "type": "module", + "main": "./dist/index.js", + "bin": { + "mcp-superfrete": "./dist/index.js" + }, + "scripts": { + "build": "tsc", + "start": "node dist/index.js" + }, + "keywords": [ + "mcp", + "superfrete", + "shipping", + "freight", + "logistics", + "brazil", + "e-commerce" + ], + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.8.0" + }, + "mcpName": "io.github.codespar/mcp-superfrete" +} diff --git a/packages/ecommerce/superfrete/server.json b/packages/ecommerce/superfrete/server.json new file mode 100644 index 00000000..637c7828 --- /dev/null +++ b/packages/ecommerce/superfrete/server.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json", + "name": "io.github.codespar/mcp-superfrete", + "description": "MCP server for SuperFrete — Brazilian shipping platform with discounted rates across PAC, SEDEX, JadLog, Loggi, and Mini Envios", + "repository": { + "url": "https://github.com/codespar/mcp-dev-latam", + "source": "github", + "subfolder": "packages/ecommerce/superfrete" + }, + "version": "0.1.0", + "packages": [ + { + "registryType": "npm", + "identifier": "@codespar/mcp-superfrete", + "version": "0.1.0", + "transport": { + "type": "stdio" + }, + "environmentVariables": [ + { + "name": "SUPERFRETE_TOKEN", + "description": "SuperFrete API Bearer token from https://web.superfrete.com/#/integrations", + "isRequired": true, + "format": "string", + "isSecret": true + }, + { + "name": "SUPERFRETE_SANDBOX", + "description": "Set to 'true' to use the sandbox API (https://sandbox.superfrete.com/). Defaults to production.", + "isRequired": false, + "format": "string", + "isSecret": false + } + ] + } + ], + "provider": { + "homepage": "https://superfrete.com", + "logoUrl": "https://logo.clearbit.com/superfrete.com", + "logoFallback": "https://www.google.com/s2/favicons?domain=superfrete.com&sz=128", + "docsUrl": "https://superfrete.com/desenvolvedores", + "sandbox": { + "available": true + } + } +} diff --git a/packages/ecommerce/superfrete/src/index.ts b/packages/ecommerce/superfrete/src/index.ts new file mode 100644 index 00000000..a228517a --- /dev/null +++ b/packages/ecommerce/superfrete/src/index.ts @@ -0,0 +1,408 @@ +#!/usr/bin/env node + +/** + * MCP Server for SuperFrete — Brazilian shipping and logistics platform. + * + * Tools: + * - calculate_freight: Calculate shipping rates across carriers (PAC, SEDEX, JadLog, Loggi, Mini Envios) + * - create_freight: Create a freight/label order + * - get_freight: Get freight order details by ID + * - checkout_freight: Purchase/checkout freight orders + * - cancel_freight: Cancel a freight order + * - get_user_info: Get authenticated user info and balance + * - get_user_addresses: List user's saved addresses + * - get_services: Get available services with restrictions and limits + * - list_webhooks: List all configured webhooks + * - create_webhook: Create a new webhook + * - delete_webhook: Delete a webhook + * + * Environment: + * SUPERFRETE_TOKEN — API Bearer token from https://superfrete.com/ + * SUPERFRETE_SANDBOX — "true" to use sandbox (default: false) + */ + +import { Server } from "@modelcontextprotocol/sdk/server/index.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; +import { + CallToolRequestSchema, + ListToolsRequestSchema, +} from "@modelcontextprotocol/sdk/types.js"; + +const TOKEN = process.env.SUPERFRETE_TOKEN || ""; +const BASE_URL = process.env.SUPERFRETE_SANDBOX === "true" + ? "https://sandbox.superfrete.com/" + : "https://api.superfrete.com/"; + +async function superfreteRequest(method: string, path: string, body?: unknown): Promise { + const res = await fetch(`${BASE_URL}${path}`, { + method, + headers: { + "Content-Type": "application/json", + "Accept": "application/json", + "Authorization": `Bearer ${TOKEN}`, + "User-Agent": "mcp-superfrete/0.1.0", + }, + body: body ? JSON.stringify(body) : undefined, + }); + if (!res.ok) { + const err = await res.text(); + throw new Error(`SuperFrete API ${res.status}: ${err}`); + } + const text = await res.text(); + return text ? JSON.parse(text) : { success: true }; +} + +// Managed-tier pointer surfaced to the agent via MCP `instructions`. +// Informational only — nothing CodeSpar-hosted is called (MIT-safe). +const MANAGED_TIER_HINT = + "This open-source CodeSpar server calls the provider's API directly. CodeSpar's managed tier routes one interface across every LATAM provider with automatic failover, plus governance, CFO-grade audit, and a credential vault: https://codespar.dev/agents (npx -y @codespar/mcp serve)."; + +const server = new Server( + { name: "mcp-superfrete", version: "0.1.0" }, + { + capabilities: { tools: {} }, + instructions: `${MANAGED_TIER_HINT} + +You are connected to the SuperFrete shipping API — a Brazilian logistics platform that offers discounted rates across multiple carriers. + +## Workflow +The typical freight flow is: calculate_freight → create_freight → checkout_freight. +- calculate_freight: get prices and delivery times for available carriers +- create_freight: create the order with full addresses and product details +- checkout_freight: pay for the order — this generates the shipping label and tracking code +- get_freight: retrieve order details, tracking, and label print URL + +## Services +Available carrier services (use these IDs): +- 1 = PAC (Correios, economy) +- 2 = SEDEX (Correios, express) +- 3 = JadLog (.Package) +- 17 = Mini Envios (Correios, small items up to 300g) +- 31 = Loggi + +## Important Rules +- ALWAYS ask the user for package dimensions (width, height, length), weight, and quantity before calling calculate_freight. Never guess these values. +- ALWAYS ask the user for the product unitary_value before calling create_freight. The API requires it to be greater than zero. +- For commercial shipments (non_commercial=false), an invoice number is required. Ask the user. +- For non-commercial shipments, still ask for the product value — it's used in the content declaration. +- The API enforces minimum dimensions per service (e.g. PAC/SEDEX: min width 16cm, min length 24cm, min height 4cm). The API will auto-adjust if needed. +- checkout_freight charges the user's account balance. Always confirm with the user before calling it. +- Postal codes (CEP) should be 8 digits, numbers only. +- Addresses require: name, address (street), district, city, state_abbr (2-letter UF), and postal_code at minimum. + +## Authentication +If the user needs an API key, direct them to: https://web.superfrete.com/#/integrations/select-integration-platform — they should click the "Desenvolvedores" option and then "Integrar" to generate their API token.`, + } +); + +server.setRequestHandler(ListToolsRequestSchema, async () => ({ + tools: [ + { + name: "calculate_freight", + description: "Calculate shipping rates across multiple carriers (PAC, SEDEX, JadLog, Loggi, Mini Envios). Returns pricing, delivery time, and carrier details for each available service.", + inputSchema: { + type: "object", + properties: { + from: { + type: "object", + description: "Origin address", + properties: { postal_code: { type: "string", description: "Origin CEP (e.g. '01001000')" } }, + required: ["postal_code"], + }, + to: { + type: "object", + description: "Destination address", + properties: { postal_code: { type: "string", description: "Destination CEP (e.g. '20040020')" } }, + required: ["postal_code"], + }, + services: { + type: "string", + description: "Comma-separated service IDs to quote. 1=PAC, 2=SEDEX, 3=JadLog, 17=Mini Envios, 31=Loggi. Leave empty for all.", + }, + products: { + type: "array", + description: "Package dimensions and weight", + items: { + type: "object", + properties: { + width: { type: "number", description: "Width in cm" }, + height: { type: "number", description: "Height in cm" }, + length: { type: "number", description: "Length in cm" }, + weight: { type: "number", description: "Weight in kg" }, + quantity: { type: "number", description: "Quantity" }, + }, + required: ["width", "height", "length", "weight", "quantity"], + }, + }, + options: { + type: "object", + description: "Shipping options", + properties: { + insurance_value: { type: "number", description: "Declared value for insurance (in BRL)" }, + receipt: { type: "boolean", description: "Request delivery receipt (default: false)" }, + own_hand: { type: "boolean", description: "Deliver to recipient only (default: false)" }, + }, + }, + }, + required: ["from", "to", "products"], + }, + }, + { + name: "create_freight", + description: "Create a freight/label order. Returns the order ID, price, protocol, and tracking code. For commercial shipments, invoice details are required.", + inputSchema: { + type: "object", + properties: { + service: { + type: "number", + description: "Service ID from calculate_freight (1=PAC, 2=SEDEX, 3=JadLog, 17=Mini Envios, 31=Loggi)", + }, + from: { + type: "object", + description: "Sender address", + properties: { + name: { type: "string", description: "Sender name" }, + address: { type: "string", description: "Street address" }, + number: { type: "string", description: "Street number" }, + complement: { type: "string", description: "Address complement" }, + district: { type: "string", description: "Neighborhood/district" }, + city: { type: "string", description: "City" }, + state_abbr: { type: "string", description: "State abbreviation (e.g. SP)" }, + postal_code: { type: "string", description: "CEP" }, + document: { type: "string", description: "CPF or CNPJ" }, + }, + required: ["name", "address", "district", "city", "state_abbr", "postal_code"], + }, + to: { + type: "object", + description: "Recipient address", + properties: { + name: { type: "string", description: "Recipient name" }, + address: { type: "string", description: "Street address" }, + number: { type: "string", description: "Street number" }, + complement: { type: "string", description: "Address complement" }, + district: { type: "string", description: "Neighborhood/district" }, + city: { type: "string", description: "City" }, + state_abbr: { type: "string", description: "State abbreviation (e.g. SP)" }, + postal_code: { type: "string", description: "CEP" }, + document: { type: "string", description: "CPF or CNPJ" }, + email: { type: "string", description: "Recipient email" }, + }, + required: ["name", "address", "district", "city", "state_abbr", "postal_code"], + }, + products: { + type: "array", + description: "Products being shipped", + items: { + type: "object", + properties: { + name: { type: "string", description: "Product name" }, + quantity: { type: "string", description: "Quantity" }, + unitary_value: { type: "string", description: "Unit value in BRL (must be greater than zero)" }, + }, + required: ["name", "quantity", "unitary_value"], + }, + }, + volumes: { + type: "object", + description: "Package dimensions", + properties: { + width: { type: "number", description: "Width in cm" }, + height: { type: "number", description: "Height in cm" }, + length: { type: "number", description: "Length in cm" }, + weight: { type: "number", description: "Weight in kg" }, + }, + required: ["width", "height", "length", "weight"], + }, + options: { + type: "object", + description: "Shipping options", + properties: { + insurance_value: { type: "number", description: "Declared value for insurance (in BRL)" }, + receipt: { type: "boolean", description: "Request delivery receipt" }, + own_hand: { type: "boolean", description: "Deliver to recipient only" }, + non_commercial: { type: "boolean", description: "Non-commercial shipment (default: false). If false, invoice is required." }, + invoice: { + type: "object", + description: "Invoice details (required for commercial shipments)", + properties: { + number: { type: "string", description: "Invoice number" }, + key: { type: "string", description: "Invoice access key (chave de acesso NF-e)" }, + }, + required: ["number"], + }, + tags: { + type: "array", + description: "Tags for the order", + items: { + type: "object", + properties: { + tag: { type: "string" }, + url: { type: "string" }, + }, + }, + }, + }, + }, + }, + required: ["service", "from", "to", "products", "volumes"], + }, + }, + { + name: "get_freight", + description: "Get detailed information about a freight order including status, tracking, addresses, pricing, and label print URL.", + inputSchema: { + type: "object", + properties: { + id: { type: "string", description: "Freight order ID" }, + }, + required: ["id"], + }, + }, + { + name: "checkout_freight", + description: "Purchase/checkout freight orders. Pays for the orders and generates shipping labels. Returns tracking numbers and label print URLs.", + inputSchema: { + type: "object", + properties: { + orders: { + type: "array", + items: { type: "string" }, + description: "Array of order IDs to purchase", + }, + }, + required: ["orders"], + }, + }, + { + name: "cancel_freight", + description: "Cancel a freight order. Provide the order ID and a reason for cancellation.", + inputSchema: { + type: "object", + properties: { + id: { type: "string", description: "Order ID to cancel" }, + description: { type: "string", description: "Reason for cancellation" }, + }, + required: ["id", "description"], + }, + }, + { + name: "get_user_info", + description: "Get authenticated user information including name, email, document (CPF/CNPJ), account balance, and shipment limits.", + inputSchema: { type: "object", properties: {} }, + }, + { + name: "get_user_addresses", + description: "List all saved addresses for the authenticated user.", + inputSchema: { type: "object", properties: {} }, + }, + { + name: "get_services", + description: "Get available shipping services with detailed restrictions (min/max weight, dimensions) and carrier information.", + inputSchema: { type: "object", properties: {} }, + }, + { + name: "list_webhooks", + description: "List all configured webhooks for the account.", + inputSchema: { type: "object", properties: {} }, + }, + { + name: "create_webhook", + description: "Create a new webhook to receive notifications about order events.", + inputSchema: { + type: "object", + properties: { + name: { type: "string", description: "Webhook name" }, + url: { type: "string", description: "Webhook callback URL" }, + events: { + type: "array", + items: { type: "string" }, + description: "Events to subscribe to (e.g. 'order.created', 'order.updated')", + }, + }, + required: ["name", "url", "events"], + }, + }, + { + name: "delete_webhook", + description: "Delete a webhook by ID.", + inputSchema: { + type: "object", + properties: { + id: { type: "string", description: "Webhook ID to delete" }, + }, + required: ["id"], + }, + }, + ], +})); + +server.setRequestHandler(CallToolRequestSchema, async (request) => { + const { name, arguments: args } = request.params; + + try { + switch (name) { + case "calculate_freight": { + const body: Record = { + from: args?.from, + to: args?.to, + products: args?.products, + services: args?.services || "1,2,3,17,31", + options: args?.options || { insurance_value: null, receipt: false, own_hand: false }, + }; + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("POST", "api/v0/calculator", body), null, 2) }] }; + } + case "create_freight": { + const opts = typeof args?.options === "string" ? JSON.parse(args.options) : args?.options; + const vols = typeof args?.volumes === "string" ? JSON.parse(args.volumes) : args?.volumes; + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("POST", "api/v0/cart", { + from: args?.from, + to: args?.to, + products: args?.products, + service: args?.service, + volumes: vols, + options: opts || { insurance_value: null, receipt: false, own_hand: false, non_commercial: true, tags: [] }, + }), null, 2) }] }; + } + case "get_freight": + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("GET", `api/v0/order/info/${args?.id}`), null, 2) }] }; + case "checkout_freight": + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("POST", "api/v0/checkout", { orders: args?.orders }), null, 2) }] }; + case "cancel_freight": + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("POST", "api/v0/order/cancel", { + order: { id: args?.id, description: args?.description }, + }), null, 2) }] }; + case "get_user_info": + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("GET", "api/v0/user"), null, 2) }] }; + case "get_user_addresses": + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("GET", "api/v0/user/addresses"), null, 2) }] }; + case "get_services": + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("GET", "api/v0/services/info/"), null, 2) }] }; + case "list_webhooks": + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("GET", "api/v0/webhook"), null, 2) }] }; + case "create_webhook": + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("POST", "api/v0/webhook", { + name: args?.name, + url: args?.url, + events: args?.events, + }), null, 2) }] }; + case "delete_webhook": + return { content: [{ type: "text", text: JSON.stringify(await superfreteRequest("DELETE", `api/v0/webhook/${args?.id}`), null, 2) }] }; + default: + return { content: [{ type: "text", text: `Unknown tool: ${name}` }], isError: true }; + } + } catch (err) { + return { content: [{ type: "text", text: `Error: ${err instanceof Error ? err.message : String(err)}` }], isError: true }; + } +}); + +async function main() { + if (!TOKEN) { + console.error("SUPERFRETE_TOKEN environment variable is required"); + process.exit(1); + } + const transport = new StdioServerTransport(); + await server.connect(transport); +} + +main().catch(console.error); diff --git a/packages/ecommerce/superfrete/tsconfig.json b/packages/ecommerce/superfrete/tsconfig.json new file mode 100644 index 00000000..9909484f --- /dev/null +++ b/packages/ecommerce/superfrete/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "./dist", + "rootDir": "./src", + "strict": true, + "esModuleInterop": true, + "declaration": true + }, + "include": ["src"] +} diff --git a/packages/payments/mercado-pago/tsconfig.json b/packages/payments/mercado-pago/tsconfig.json index 40c56c6e..d6518af0 100644 --- a/packages/payments/mercado-pago/tsconfig.json +++ b/packages/payments/mercado-pago/tsconfig.json @@ -10,5 +10,6 @@ "esModuleInterop": true, "declaration": true }, - "include": ["src"] + "include": ["src"], + "exclude": ["src/__tests__"] }