{"_id":"@almosteffective/premiumize-api","_rev":"6-fa125fca6dd3175f059aeff34ca44060","name":"@almosteffective/premiumize-api","dist-tags":{"latest":"3.3.0"},"versions":{"3.0.0":{"name":"@almosteffective/premiumize-api","version":"3.0.0","keywords":["premiumize","api","typescript"],"author":{"name":"Andy S","email":"a.simeon@gmail.com"},"license":"MIT","_id":"@almosteffective/premiumize-api@3.0.0","maintainers":[{"name":"megadrive","email":"a.simeon@gmail.com"}],"dist":{"shasum":"4f62441e8484fb6767905fef4abf8f4fea190869","tarball":"https://registry.npmjs.org/@almosteffective/premiumize-api/-/premiumize-api-3.0.0.tgz","fileCount":22,"integrity":"sha512-Z0zAj3xSR2gYI0eazAjqWPFFQsGfjeP/H4xAdLaMx87MMYI6sWRJY7AkJ5HbsjzQM3lCqll0Ez8a9V0Ojzdflw==","signatures":[{"sig":"MEUCIQCb6H4gLb/QVkdJm7ZU6FiykALlPP804PAvsht8EaXVzAIgKl/ImPqRiXuLk8txgF0kfZXdK5eDeFnOKvIJGUOTNPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85497},"main":"dist/index.js","_from":"file:almosteffective-premiumize-api-3.0.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"oxlint --type-aware","build":"tsc","format":"oxfmt","lint-staged":"lint-staged"},"_npmUser":{"name":"megadrive","email":"a.simeon@gmail.com"},"_resolved":"/tmp/12f44ef28817249909ff26a496383bcc/almosteffective-premiumize-api-3.0.0.tgz","_integrity":"sha512-Z0zAj3xSR2gYI0eazAjqWPFFQsGfjeP/H4xAdLaMx87MMYI6sWRJY7AkJ5HbsjzQM3lCqll0Ez8a9V0Ojzdflw==","_npmVersion":"11.6.2","description":"A TypeScript library for interacting with the Premiumize.me API","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.22.4","axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"np":"^10.2.0","husky":"^9.1.7","oxfmt":"^0.14.0","oxlint":"^1.23.0","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^16.2.7","oxlint-tsgolint":"^0.7.1"},"_npmOperationalInternal":{"tmp":"tmp/premiumize-api_3.0.0_1764635254181_0.2696579967615145","host":"s3://npm-registry-packages-npm-production"}},"0.0.0":{"name":"@almosteffective/premiumize-api","version":"0.0.0","keywords":["premiumize","api","typescript"],"author":{"name":"Andy S","email":"a.simeon@gmail.com"},"license":"MIT","_id":"@almosteffective/premiumize-api@0.0.0","maintainers":[{"name":"megadrive","email":"a.simeon@gmail.com"}],"dist":{"shasum":"f309ce0f3c7d9a529793167676fe5ab4889ba5b5","tarball":"https://registry.npmjs.org/@almosteffective/premiumize-api/-/premiumize-api-0.0.0.tgz","fileCount":22,"integrity":"sha512-pyXEzB+gnrn2j2utXZTAydJx9GPg5gEsQfOw6LxtlJimGuvDau7luJ24fnG/Y8cmBO8cQ/5TWX3+0JZW2dIYvw==","signatures":[{"sig":"MEQCIG7ZiKZyTR77x44WB2mZv5XE4RD7CPWFNzv0fdSrPRNYAiAZcmrZv4P7RizKj2PUSEwvD28a4v+7X77GKIpxaQsukQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85604},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"1deba3baadf65cadf64984cefb658835828552c9","scripts":{"lint":"oxlint --type-aware","build":"tsc","format":"oxfmt","prepare":"husky","publish":"pnpm build && np --no-tests","lint-staged":"lint-staged"},"_npmUser":{"name":"megadrive","email":"a.simeon@gmail.com"},"_npmVersion":"11.6.2","description":"A TypeScript library for interacting with the Premiumize.me API","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.22.4","axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.23.0","devDependencies":{"np":"^10.2.0","husky":"^9.1.7","oxfmt":"^0.14.0","oxlint":"^1.23.0","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^16.2.7","oxlint-tsgolint":"^0.7.1"},"_npmOperationalInternal":{"tmp":"tmp/premiumize-api_0.0.0_1764635350166_0.5222174804679338","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@almosteffective/premiumize-api","version":"0.0.1","keywords":["premiumize","api","typescript"],"author":{"name":"Andy S","email":"a.simeon@gmail.com"},"license":"MIT","_id":"@almosteffective/premiumize-api@0.0.1","maintainers":[{"name":"megadrive","email":"a.simeon@gmail.com"}],"dist":{"shasum":"d5683c1258ca34e3050e929ca3cbda0c51ae8cc4","tarball":"https://registry.npmjs.org/@almosteffective/premiumize-api/-/premiumize-api-0.0.1.tgz","fileCount":22,"integrity":"sha512-MUHil864GTeTxni8MHaR8yQLqBx/3M7sYtj0bDcDIb/46L5v3IMnPfhtUHALI6Zxyq3jbxDt205LsoXD7xb9PQ==","signatures":[{"sig":"MEUCIHFBnduSxyBEK5YCoBTjr0GQ8qtmCncpmWoVpqdn9Nl8AiEA5vG0CpcHRhrFceF63iWExlPPSSB/0AEOImV3VZYi83c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85497},"main":"dist/index.js","_from":"file:almosteffective-premiumize-api-0.0.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"oxlint --type-aware","build":"tsc","format":"oxfmt","lint-staged":"lint-staged"},"_npmUser":{"name":"megadrive","email":"a.simeon@gmail.com"},"_resolved":"/tmp/67e7e74550f9a14b3abf7f9a786c6a6f/almosteffective-premiumize-api-0.0.1.tgz","_integrity":"sha512-MUHil864GTeTxni8MHaR8yQLqBx/3M7sYtj0bDcDIb/46L5v3IMnPfhtUHALI6Zxyq3jbxDt205LsoXD7xb9PQ==","_npmVersion":"11.6.2","description":"A TypeScript library for interacting with the Premiumize.me API","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.22.4","axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"np":"^10.2.0","husky":"^9.1.7","oxfmt":"^0.14.0","oxlint":"^1.23.0","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^16.2.7","oxlint-tsgolint":"^0.7.1"},"_npmOperationalInternal":{"tmp":"tmp/premiumize-api_0.0.1_1764635401349_0.19039668107508922","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@almosteffective/premiumize-api","version":"3.1.0","keywords":["premiumize","api","typescript"],"author":{"name":"Andy S","email":"a.simeon@gmail.com"},"license":"MIT","_id":"@almosteffective/premiumize-api@3.1.0","maintainers":[{"name":"megadrive","email":"a.simeon@gmail.com"}],"dist":{"shasum":"7cbec4b0cf9ead5464f434cf9812b8c67234ce70","tarball":"https://registry.npmjs.org/@almosteffective/premiumize-api/-/premiumize-api-3.1.0.tgz","fileCount":26,"integrity":"sha512-Z+SsPSfQPrWiQ0HJXNjXCY+QF8BXxLlvfKH9MRmrESe7ym3pEucNDyj1D1822rnrw2MvroPYllEUaNfbuJzijQ==","signatures":[{"sig":"MEQCIEPjtVFsFtRZl9rqMTD3uNzsJdJ9F4RleHEQfkOY08AAAiB613961/r9roC/3v38Gq1t/hmSh/Fo3uJr4eehAZc3gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98657},"main":"dist/index.js","_from":"file:almosteffective-premiumize-api-3.1.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"oxlint --type-aware","test":"vitest","build":"tsc","format":"oxfmt","test:run":"vitest run","lint-staged":"lint-staged","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"megadrive","email":"a.simeon@gmail.com"},"_resolved":"/tmp/60c6443d06bf048ac392745b08b6cf01/almosteffective-premiumize-api-3.1.0.tgz","_integrity":"sha512-Z+SsPSfQPrWiQ0HJXNjXCY+QF8BXxLlvfKH9MRmrESe7ym3pEucNDyj1D1822rnrw2MvroPYllEUaNfbuJzijQ==","_npmVersion":"11.6.2","description":"A TypeScript library for interacting with the Premiumize.me API","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.22.4","axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"np":"^10.2.0","msw":"^2.12.4","husky":"^9.1.7","oxfmt":"^0.14.0","oxlint":"^1.23.0","vitest":"^4.0.15","@vitest/ui":"^4.0.15","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^16.2.7","oxlint-tsgolint":"^0.7.1","@vitest/coverage-v8":"4.0.15"},"_npmOperationalInternal":{"tmp":"tmp/premiumize-api_3.1.0_1764897739681_0.6775330747999542","host":"s3://npm-registry-packages-npm-production"}},"3.2.1":{"name":"@almosteffective/premiumize-api","version":"3.2.1","keywords":["premiumize","api","typescript"],"author":{"name":"Andy S","email":"a.simeon@gmail.com"},"license":"MIT","_id":"@almosteffective/premiumize-api@3.2.1","maintainers":[{"name":"megadrive","email":"a.simeon@gmail.com"}],"dist":{"shasum":"48da7b3a46751344e357840d79ecd5f883bebf28","tarball":"https://registry.npmjs.org/@almosteffective/premiumize-api/-/premiumize-api-3.2.1.tgz","fileCount":26,"integrity":"sha512-3rb/JwUB5hZZ11OzBKSSXZHZnu5lJTzqlFgdYbKFBgZt/fj31rULf0IJQNIdXX+llMLUDCmOUBrwZALsB8mIJA==","signatures":[{"sig":"MEUCIQDv2jK//tvW7fD3HBnHppeHhXUv45WcpQL8bZoNalXTYAIgZybRdCEVrfSIP0zBTSUx9Xsx7BnW/8sSlTnfRUpxV+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98657},"main":"dist/index.js","_from":"file:almosteffective-premiumize-api-3.2.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"oxlint --type-aware","test":"vitest","build":"tsc","format":"oxfmt","test:run":"vitest run","lint-staged":"lint-staged","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"megadrive","email":"a.simeon@gmail.com"},"_resolved":"/tmp/bd7199f24400f6b8b8881882f5d4c8f5/almosteffective-premiumize-api-3.2.1.tgz","_integrity":"sha512-3rb/JwUB5hZZ11OzBKSSXZHZnu5lJTzqlFgdYbKFBgZt/fj31rULf0IJQNIdXX+llMLUDCmOUBrwZALsB8mIJA==","_npmVersion":"11.6.2","description":"A TypeScript library for interacting with the Premiumize.me API","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^3.22.4","axios":"^1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"np":"^10.2.0","msw":"^2.12.4","husky":"^9.1.7","oxfmt":"^0.14.0","oxlint":"^1.23.0","vitest":"^4.0.15","@vitest/ui":"^4.0.15","typescript":"^5.9.3","@types/node":"^20.0.0","lint-staged":"^16.2.7","oxlint-tsgolint":"^0.7.1","@vitest/coverage-v8":"4.0.15"},"_npmOperationalInternal":{"tmp":"tmp/premiumize-api_3.2.1_1767069664176_0.5961844598266968","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@almosteffective/premiumize-api","version":"3.3.0","description":"A TypeScript library for interacting with the Premiumize.me API","main":"dist/index.js","types":"dist/index.d.ts","keywords":["premiumize","api","typescript"],"author":{"name":"Andy S","email":"a.simeon@gmail.com"},"license":"MIT","devDependencies":{"@types/node":"^20.0.0","@vitest/coverage-v8":"4.0.15","@vitest/ui":"^4.0.15","husky":"^9.1.7","lint-staged":"^16.2.7","msw":"^2.12.4","np":"^10.2.0","oxfmt":"^0.14.0","oxlint":"^1.23.0","oxlint-tsgolint":"^0.7.1","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.0.15"},"dependencies":{"axios":"^1.6.0","zod":"^3.22.4"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","lint":"oxlint --type-aware","format":"oxfmt","lint-staged":"lint-staged","test":"vitest","test:run":"vitest run","test:coverage":"vitest run --coverage"},"_id":"@almosteffective/premiumize-api@3.3.0","_integrity":"sha512-6sbL1y2qAf1TXwThb92CMyjq9mFatYtCkrazy6lF2NHIih/gyKue2LSbS4dhm5C6bcTkCt/jxjyNNeIB1RIqPg==","_resolved":"/tmp/f4d064ec2b73354a4a0e70512cd69bc5/almosteffective-premiumize-api-3.3.0.tgz","_from":"file:almosteffective-premiumize-api-3.3.0.tgz","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-6sbL1y2qAf1TXwThb92CMyjq9mFatYtCkrazy6lF2NHIih/gyKue2LSbS4dhm5C6bcTkCt/jxjyNNeIB1RIqPg==","shasum":"eaf2a7476c3c6e046ad5c54fb8e28e37357db253","tarball":"https://registry.npmjs.org/@almosteffective/premiumize-api/-/premiumize-api-3.3.0.tgz","fileCount":26,"unpackedSize":98774,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDYHykNYAMDSs1zEbNFzljNRrfR/AiLTAgelzJMS7dwmwIhAJ1VCzXZ9ROf6IEoW8rNr7rnsaDsbs6g7Lby2ZkqNhIo"}]},"_npmUser":{"name":"megadrive","email":"a.simeon@gmail.com"},"directories":{},"maintainers":[{"name":"megadrive","email":"a.simeon@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/premiumize-api_3.3.0_1767070613776_0.7950337198129722"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-02T00:27:34.109Z","modified":"2025-12-30T04:56:54.147Z","3.0.0":"2025-12-02T00:27:34.372Z","0.0.0":"2025-12-02T00:29:10.362Z","0.0.1":"2025-12-02T00:30:01.580Z","3.1.0":"2025-12-05T01:22:19.859Z","3.2.1":"2025-12-30T04:41:04.323Z","3.3.0":"2025-12-30T04:56:53.930Z"},"author":{"name":"Andy S","email":"a.simeon@gmail.com"},"license":"MIT","keywords":["premiumize","api","typescript"],"description":"A TypeScript library for interacting with the Premiumize.me API","maintainers":[{"name":"megadrive","email":"a.simeon@gmail.com"}],"readme":"# @almosteffective/premiumize-api\n\nA TypeScript library for interacting with the Premiumize.me API with full type safety and runtime validation.\n\n## Installation\n\n```bash\nnpm install @almosteffective/premiumize-api\n# or\npnpm add @almosteffective/premiumize-api\n```\n\n## Quick Start\n\n```typescript\nimport { PremiumizeClient } from '@almosteffective/premiumize-api';\n\n// Create a client instance (recommended method)\nconst client = PremiumizeClient.create('your-api-key-here');\n\n// Or using the constructor directly\nconst client = new PremiumizeClient({\n  apiKey: 'your-api-key-here',\n  baseUrl: 'https://custom-api-endpoint.com' // optional\n});\n\n// Get account info\nconst account = await client.accountInfo();\nconsole.log(account);\n\n// Create a transfer\nconst transfer = await client.createTransfer({\n  src: 'magnet:?xt=urn:btih:...'\n});\nconsole.log(transfer);\n\n// List transfers\nconst transfers = await client.listTransfers();\nconsole.log(transfers);\n\n// List folder contents\nconst folder = await client.listFolder();\nconsole.log(folder);\n```\n\n## API Methods\n\n### Account\n- `accountInfo()`: Get account information and limits\n\n### Transfers\n- `createTransfer(options)`: Create a new transfer from magnet/torrent or NZB container\n- `listTransfers()`: List all transfers\n- `deleteTransfers(options)`: Delete transfers\n- `clearTransfers()`: Clear all finished transfers\n\n### Folders\n- `listFolder(options?)`: List contents of a folder\n- `createFolder(options)`: Create a new folder\n- `deleteFolder(options)`: Delete a folder\n- `renameFolder(options)`: Rename a folder\n- `searchFolder(options)`: Search files and folders\n\n### Items (Files)\n- `listAllItems()`: List all files across all folders\n- `deleteItem(options)`: Delete a file\n- `renameItem(options)`: Rename a file\n- `getItemDetails(options)`: Get detailed information about a file\n\n### Zip\n- `generateZip(options)`: Generate a zip file from multiple items\n\n### Cache\n- `checkCache(options)`: Check if URLs are available in Premiumize cache\n\n### Services\n- `listServices()`: Get list of supported services and domains\n\n## Detailed Usage Examples\n\n### Working with Folders\n\n```typescript\n// List root folder\nconst rootFolder = await client.listFolder();\n\n// List a specific folder with breadcrumbs\nconst folderWithBreadcrumbs = await client.listFolder({\n  id: 'folder-id',\n  includebreadcrumbs: true\n});\n\n// Create a new folder\nconst newFolder = await client.createFolder({\n  name: 'My Downloads',\n  parent_id: 'parent-folder-id'\n});\n\n// Rename a folder\nawait client.renameFolder({\n  id: 'folder-id',\n  name: 'New Folder Name'\n});\n\n// Delete a folder\nawait client.deleteFolder({\n  id: 'folder-id'\n});\n\n// Search for items\nconst searchResults = await client.searchFolder({\n  query: 'movie title'\n});\n```\n\n### Managing Transfers\n\n```typescript\n// Create a new transfer\nconst transfer = await client.createTransfer({\n  src: 'magnet:?xt=urn:btih:...',\n  folder_id: 'destination-folder-uuid'\n});\n\n// List all transfers\nconst transfers = await client.listTransfers();\n\n// Delete a specific transfer\nawait client.deleteTransfers({\n  id: 'transfer-id'\n});\n\n// Clear all finished transfers\nawait client.clearTransfers();\n```\n\n### Working with Files\n\n```typescript\n// List all files across all folders\nconst allFiles = await client.listAllItems();\n\n// Get detailed information about a file\nconst fileDetails = await client.getItemDetails({\n  id: 'file-id'\n});\n\n// Rename a file\nawait client.renameItem({\n  id: 'file-id',\n  name: 'New File Name.ext'\n});\n\n// Delete a file\nawait client.deleteItem({\n  id: 'file-id'\n});\n```\n\n### Utilities\n\n```typescript\n// Check if URLs are in cache\nconst cacheCheck = await client.checkCache({\n  items: ['https://example.com/file1.zip', 'https://example.com/file2.zip']\n});\n\n// Generate a zip file\nconst zipFile = await client.generateZip({\n  files: ['file-id-1', 'file-id-2'],\n  folders: ['folder-id-1']\n});\n\n// Get supported services\nconst services = await client.listServices();\n```\n\n## Error Handling\n\nThe library provides comprehensive error handling with custom error types:\n\n```typescript\ntry {\n  const result = await client.accountInfo();\n  console.log(result);\n} catch (error) {\n  if (error instanceof PremiumizeError) {\n    console.error('Premiumize API Error:', error.message);\n    // Additional error details are available in error.internalError\n  } else if (error instanceof HTTPError) {\n    console.error('HTTP Request Error:', error.message);\n  } else {\n    console.error('Unexpected Error:', error.message);\n  }\n}\n```\n\n## Configuration\n\n### Required Configuration\n\nOnly an API key is required to use the library. You can obtain your API key from your [Premiumize account settings](https://www.premiumize.me/account).\n\n### Optional Configuration\n\nYou can optionally provide a custom base URL if you're using a proxy or different endpoint:\n\n```typescript\nconst client = new PremiumizeClient({\n  apiKey: 'your-api-key-here',\n  baseUrl: 'https://my-proxy.com/premiumize-api'\n});\n```\n\n## Testing\n\nThis library uses Vitest for testing with MSW (Mock Service Worker) to mock API requests. This allows us to test the library without making real API calls.\n\n### Running Tests\n\n```bash\n# Run tests in watch mode\npnpm test\n\n# Run tests once\npnpm run test:run\n\n# Run tests with coverage\npnpm run test:coverage\n```\n\n### Test Structure\n\nThe tests are organized in the following way:\n\n1. `src/test/setup.ts` - Sets up the MSW server and provides mock handlers for API endpoints\n2. `src/client.test.ts` - Contains tests for the PremiumizeClient class and its methods\n\nEach test case mocks the API responses to verify that the client correctly handles different scenarios, including:\n\n- Successful API responses\n- API errors\n- Network errors\n- Validation of request parameters\n\n### Adding New Tests\n\nWhen adding new API methods to the library, make sure to add corresponding tests in `src/client.test.ts`. The pattern is:\n\n1. Define a mock response in `src/test/setup.ts` (if it's a new endpoint)\n2. Add a test case in `src/client.test.ts` that verifies the method works correctly\n3. Test both success and error cases\n\n## Features\n\n- **Type Safety**: Full TypeScript support with strict typing\n- **Schema Validation**: Runtime validation using Zod schemas to ensure API responses match expected structure\n- **Error Handling**: Comprehensive error handling with descriptive messages\n- **Easy Configuration**: Simple setup with API key and optional custom base URL\n- **Comprehensive Testing**: Full test coverage with mocked API responses\n\n## Development\n\n```bash\n# Install dependencies\npnpm install\n\n# Build\npnpm run build\n\n# Test\npnpm test\n\n# Lint\npnpm run lint\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}