{"_id":"@api-buddy/core-api","_rev":"3-4086b911f49d4230424ed5ba7941cb4d","name":"@api-buddy/core-api","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@api-buddy/core-api","version":"1.0.0","keywords":["api-buddy","api","integrations"],"author":{"name":"API Buddy Team"},"license":"MIT","_id":"@api-buddy/core-api@1.0.0","maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"bin":{"api-buddy":"dist/cli.cjs"},"dist":{"shasum":"6c07510cb074bffd9bf644efd01be126b928f1b0","tarball":"https://registry.npmjs.org/@api-buddy/core-api/-/core-api-1.0.0.tgz","fileCount":12,"integrity":"sha512-rgUUeL4VYtYUy6DyG+stqLiHb87rkiRLgh5NmqaujVru4inTF5M6UhWiwjeA7zxMl5NduyxHYdO/M+80jkXsDQ==","signatures":[{"sig":"MEUCIHX+UhpeZYNISpFFjWrORUjKSV5KnqgQCOjpkjIKjUXVAiEA8/QfmnRYxHmVW+r3iiuMbBDf/kDQgkwwUcO/1mfuRqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15059},"main":"./dist/cjs/index.cjs","type":"module","_from":"file:api-buddy-core-api-1.0.0.tgz","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":{"types":"./dist/types/index.d.ts","default":"./dist/esm/index.mjs"},"require":{"types":"./dist/types/index.d.ts","default":"./dist/cjs/index.cjs"}},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","lint":"eslint . --ext .ts","test":"vitest","build":"pnpm clean && tsup","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,tsx}\"","prebuild":"node -e \"const { execSync } = require('child_process'); const path = require('path'); const fs = require('fs'); let root = process.cwd(); while (root !== '/' && !fs.existsSync(path.join(root, 'pnpm-workspace.yaml'))) { root = path.dirname(root); } if (root === '/') { console.error('❌ Could not find project root directory'); process.exit(1); } require(path.join(root, 'scripts/ensure-tsup-config.js'));\"","build:tsup":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"iamtomhanks","email":"brechanson@gmail.com"},"_resolved":"/private/var/folders/w3/00m0j5k95zjfx4vwz3csj_vc0000gn/T/0b1429d961cf388121f9db69ff01ce2d/api-buddy-core-api-1.0.0.tgz","_integrity":"sha512-rgUUeL4VYtYUy6DyG+stqLiHb87rkiRLgh5NmqaujVru4inTF5M6UhWiwjeA7zxMl5NduyxHYdO/M+80jkXsDQ==","_npmVersion":"9.8.1","description":"Core API for API Buddy - A framework for building and managing APIs","directories":{},"_nodeVersion":"18.18.0","dependencies":{"chalk":"^4.1.2","change-case":"^4.1.2","@api-buddy/types":"1.0.0","@api-buddy/shared":"1.0.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/types/src/*.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tsup":"^8.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","prettier":"^3.0.0","typescript":"^5.0.4","@types/jest":"^29.5.0","@types/node":"^18.19.111","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","@api-buddy/tsup-config":"1.0.0","eslint-config-prettier":"^8.0.0","eslint-plugin-prettier":"^5.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"peerDependencies":{"zod":"^3.22.0","next":">=13.0.0","react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/core-api_1.0.0_1750087949859_0.46801222045417656","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@api-buddy/core-api","version":"2.0.0","keywords":["api-buddy","api","integrations"],"author":{"name":"API Buddy Team"},"license":"MIT","_id":"@api-buddy/core-api@2.0.0","maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"bin":{"api-buddy":"dist/cli.cjs"},"dist":{"shasum":"770d41668c92083cec94b03c890bc0b5a9ce11d7","tarball":"https://registry.npmjs.org/@api-buddy/core-api/-/core-api-2.0.0.tgz","fileCount":12,"integrity":"sha512-s2TiWRz4uXwVHLxkp7ATljTPA3PwXUqDfOxz/gSHvZgFR9ulut0iDH2m18KLTnM5JEiXwwNfysGFZSapDHFh4A==","signatures":[{"sig":"MEUCIQCscV0Hz7MtmAkLVBnq+UXLxhOFbc9fpIgpHv1X8DkLyAIgVIq+LFu4vO6RyE+W9j1V81EUvl4+ZG+2eRyjbTf6/2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15059},"main":"./dist/cjs/index.cjs","type":"module","_from":"file:api-buddy-core-api-2.0.0.tgz","types":"./dist/types/index.d.ts","module":"./dist/esm/index.mjs","exports":{".":{"types":"./dist/types/index.d.ts","import":{"types":"./dist/types/index.d.ts","default":"./dist/esm/index.mjs"},"require":{"types":"./dist/types/index.d.ts","default":"./dist/cjs/index.cjs"}},"./package.json":"./package.json"},"scripts":{"dev":"tsup --watch","lint":"eslint . --ext .ts","test":"vitest","build":"pnpm clean && tsup","clean":"rimraf dist","format":"prettier --write \"src/**/*.{ts,tsx}\"","prebuild":"node -e \"const { execSync } = require('child_process'); const path = require('path'); const fs = require('fs'); let root = process.cwd(); while (root !== '/' && !fs.existsSync(path.join(root, 'pnpm-workspace.yaml'))) { root = path.dirname(root); } if (root === '/') { console.error('❌ Could not find project root directory'); process.exit(1); } require(path.join(root, 'scripts/ensure-tsup-config.js'));\"","build:tsup":"tsup","type-check":"tsc --noEmit"},"_npmUser":{"name":"iamtomhanks","email":"brechanson@gmail.com"},"_resolved":"/private/var/folders/w3/00m0j5k95zjfx4vwz3csj_vc0000gn/T/342facd8259ba100efe1b83f6ed2c542/api-buddy-core-api-2.0.0.tgz","_integrity":"sha512-s2TiWRz4uXwVHLxkp7ATljTPA3PwXUqDfOxz/gSHvZgFR9ulut0iDH2m18KLTnM5JEiXwwNfysGFZSapDHFh4A==","_npmVersion":"9.8.1","description":"Core API for API Buddy - A framework for building and managing APIs","directories":{},"_nodeVersion":"18.18.0","dependencies":{"chalk":"^4.1.2","change-case":"^4.1.2","@api-buddy/types":"2.0.0","@api-buddy/shared":"2.0.0"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/types/src/*.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","tsup":"^8.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","prettier":"^3.0.0","typescript":"^5.0.4","@types/jest":"^29.5.0","@types/node":"^18.19.111","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","@api-buddy/tsup-config":"2.0.0","eslint-config-prettier":"^8.0.0","eslint-plugin-prettier":"^5.0.0","@typescript-eslint/parser":"^5.0.0","@typescript-eslint/eslint-plugin":"^5.0.0"},"peerDependencies":{"zod":"^3.22.0","next":">=13.0.0","react":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/core-api_2.0.0_1750103100354_0.1555138629187105","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@api-buddy/core-api","version":"3.0.0","description":"Core API for API Buddy - A framework for building and managing APIs","type":"module","main":"./dist/cjs/index.cjs","module":"./dist/esm/index.mjs","types":"./dist/types/index.d.ts","typesVersions":{"*":{"*":["./dist/types/src/*.d.ts"]}},"exports":{".":{"types":"./dist/types/index.d.ts","import":{"types":"./dist/types/index.d.ts","default":"./dist/esm/index.mjs"},"require":{"types":"./dist/types/index.d.ts","default":"./dist/cjs/index.cjs"}},"./package.json":"./package.json"},"bin":{"api-buddy":"dist/cli.cjs"},"peerDependencies":{"next":">=13.0.0","react":">=16.8.0","zod":"^3.22.0"},"dependencies":{"chalk":"^4.1.2","change-case":"^4.1.2","@api-buddy/types":"4.0.0","@api-buddy/shared":"3.0.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^18.19.111","@types/react":"^18.2.0","@types/react-dom":"^18.2.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.0.0","eslint-plugin-prettier":"^5.0.0","jest":"^29.0.0","prettier":"^3.0.0","rimraf":"^5.0.0","ts-jest":"^29.0.0","tsup":"^8.5.0","typescript":"^5.0.4","@api-buddy/types":"4.0.0","@api-buddy/tsup-config":"3.0.0"},"keywords":["api-buddy","api","integrations"],"author":{"name":"API Buddy Team"},"license":"MIT","publishConfig":{"access":"public"},"scripts":{"clean":"rimraf dist","build":"pnpm build:js && pnpm build:types","build:js":"tsup","build:types":"tsc --project tsconfig.json","dev":"tsup --watch","lint":"eslint . --ext .ts,.tsx","lint:fix":"eslint . --ext .ts,.tsx --fix","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","type-check":"tsc --noEmit","format":"prettier --write \"src/**/*.{ts,tsx}\"","prebuild":"node -e \"const { execSync } = require('child_process'); const path = require('path'); const fs = require('fs'); let root = process.cwd(); while (root !== '/' && !fs.existsSync(path.join(root, 'pnpm-workspace.yaml'))) { root = path.dirname(root); } if (root === '/') { console.error('❌ Could not find project root directory'); process.exit(1); } require(path.join(root, 'scripts/ensure-tsup-config.js'));\""},"_id":"@api-buddy/core-api@3.0.0","_integrity":"sha512-sv+0h/jDxaKtc4ghFpDi6qQm1KfYKEam7kWYu32mJDR17su3/jkzRCNIzETxYyY0AN86mb1J6L6Anqju4ByO2g==","_resolved":"/private/var/folders/w3/00m0j5k95zjfx4vwz3csj_vc0000gn/T/68e3f0e826ebc258618aa3fed602a72a/api-buddy-core-api-3.0.0.tgz","_from":"file:api-buddy-core-api-3.0.0.tgz","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-sv+0h/jDxaKtc4ghFpDi6qQm1KfYKEam7kWYu32mJDR17su3/jkzRCNIzETxYyY0AN86mb1J6L6Anqju4ByO2g==","shasum":"05f14b55030a72b74bf21acffc6008ba8f12fcd6","tarball":"https://registry.npmjs.org/@api-buddy/core-api/-/core-api-3.0.0.tgz","fileCount":6,"unpackedSize":12686,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCJnf24xxcdZldnJxM8RDZIVHt9JvSPMITw36l1MDNZywIgfo1ErbuYmTMcb/emFEixkEWeOUG4uNiB2quYxLrzLps="}]},"_npmUser":{"name":"iamtomhanks","email":"brechanson@gmail.com","actor":{"name":"iamtomhanks","email":"brechanson@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core-api_3.0.0_1751386831456_0.9370566320633591"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-16T15:32:29.752Z","modified":"2025-07-01T16:20:32.245Z","1.0.0":"2025-06-16T15:32:30.115Z","2.0.0":"2025-06-16T19:45:00.533Z","3.0.0":"2025-07-01T16:20:31.703Z"},"author":{"name":"API Buddy Team"},"license":"MIT","keywords":["api-buddy","api","integrations"],"description":"Core API for API Buddy - A framework for building and managing APIs","maintainers":[{"name":"iamtomhanks","email":"brechanson@gmail.com"}],"readme":"# @api-buddy/core-api\r\n\r\nThe foundational package of API Buddy, providing core functionality for building and managing API integrations. This package serves as the backbone for the plugin system and provides essential utilities for API operations.\r\n\r\n## 🏗 Architecture Position\r\n\r\nCore-API is the central component of API Buddy's architecture, sitting at the heart of the system and providing:\r\n\r\n- **Core Client**: The main API client interface\r\n- **Type System**: Base types and interfaces for all API operations\r\n- **Plugin Infrastructure**: Foundation for the plugin system\r\n- **Common Utilities**: Shared functionality used across all API integrations\r\n\r\n```mermaid\r\ngraph TD\r\n    A[Core-API] --> B[Plugin System]\r\n    A --> C[API Clients]\r\n    A --> D[Type System]\r\n    \r\n    B --> B1[Plugin Registration]\r\n    B --> B2[Lifecycle Management]\r\n    B --> B3[Dependency Resolution]\r\n    \r\n    C --> C1[HTTP Client]\r\n    C --> C2[Authentication]\r\n    C --> C3[Error Handling]\r\n    \r\n    D --> D1[Base Types]\r\n    D --> D2[Validation]\r\n    D --> D3[Type Generation]\r\n```\r\n\r\n## 🚀 Features\r\n\r\n- **Type-Safe Core**: Built with TypeScript for end-to-end type safety\r\n- **Modular Design**: Import only what you need\r\n- **Plugin Ready**: Extensible architecture for adding new API integrations\r\n- **Developer Experience**: Comprehensive error handling and logging\r\n- **Modern JavaScript**: Native ESM support with tree-shaking\r\n\r\n## 📦 Installation\r\n\r\n```bash\r\nnpm install @api-buddy/core-api\r\n# or\r\nyarn add @api-buddy/core-api\r\n# or\r\npnpm add @api-buddy/core-api\r\n```\r\n\r\n## 🛠 Usage\r\n\r\n### Basic Setup\r\n\r\n```typescript\r\nimport { APIClient } from '@api-buddy/core-api';\r\n\r\n// Initialize the API client\r\nconst apiClient = new APIClient({\r\n  baseURL: 'https://api.example.com',\r\n  // Optional: Configure default headers, timeouts, etc.\r\n});\r\n\r\n// Make API requests\r\nconst data = await apiClient.get('/endpoint');\r\n```\r\n\r\n### With Plugin System\r\n\r\n```typescript\r\nimport { APIClient } from '@api-buddy/core-api';\r\nimport { StripePlugin } from '@api-buddy/stripe';\r\n\r\nconst client = new APIClient();\r\n\r\n// Register plugins\r\nclient.use(new StripePlugin({\r\n  apiKey: process.env.STRIPE_SECRET_KEY,\r\n}));\r\n\r\n// Use plugin functionality\r\nconst customer = await client.stripe.customers.retrieve('cus_123');\r\n```\r\n\r\n## 🔌 Plugin Development\r\n\r\nCore-API provides the foundation for building plugins. Here's a basic example:\r\n\r\n```typescript\r\nimport { Plugin, APIClient } from '@api-buddy/core-api';\r\n\r\nexport class MyPlugin implements Plugin {\r\n  name = 'my-plugin';\r\n  \r\n  install(client: APIClient) {\r\n    // Add your plugin's functionality here\r\n    client.myPlugin = {\r\n      hello: () => 'Hello from MyPlugin!'\r\n    };\r\n  }\r\n  \r\n  // Optional: Implement lifecycle methods\r\n  async initialize() {\r\n    console.log('MyPlugin initialized');\r\n  }\r\n}\r\n```\r\n\r\n## 📚 API Reference\r\n\r\n### APIClient\r\n\r\nThe main client class for making API requests.\r\n\r\n#### Constructor Options\r\n\r\n| Option | Type | Description | Default |\r\n|--------|------|-------------|---------|\r\n| `baseURL` | `string` | Base URL for all requests | `''` |\r\n| `timeout` | `number` | Request timeout in milliseconds | `30000` |\r\n| `headers` | `Record<string, string>` | Default headers | `{}` |\r\n\r\n#### Methods\r\n\r\n- `get<T>(url: string, config?: RequestConfig): Promise<T>`\r\n- `post<T>(url: string, data?: any, config?: RequestConfig): Promise<T>`\r\n- `put<T>(url: string, data?: any, config?: RequestConfig): Promise<T>`\r\n- `delete<T>(url: string, config?: RequestConfig): Promise<T>`\r\n- `use(plugin: Plugin): void` - Register a plugin\r\n\r\n## 🚧 Development Status\r\n\r\n### Current Features\r\n\r\n- [x] Base client implementation\r\n- [x] Type definitions\r\n- [x] Plugin system foundation\r\n- [x] Basic error handling\r\n\r\n### Upcoming Features\r\n\r\n- [ ] Plugin lifecycle management\r\n- [ ] Authentication helpers\r\n- [ ] Request/response interceptors\r\n- [ ] Caching layer\r\n\r\n## 🤝 Contributing\r\n\r\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for more details.\r\n\r\n## 📄 License\r\n\r\nMIT © [API Buddy](https://github.com/yourusername/api-buddy)\r\n","readmeFilename":"README.md"}