{"_id":"@clarion-app/rss-torrents-frontend","name":"@clarion-app/rss-torrents-frontend","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@clarion-app/rss-torrents-frontend","version":"1.0.0","description":"Manages RSS feeds and retrieves torrents from them.","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc"},"author":{"name":"Tim Schwartz","email":"tim@metaverse.systems"},"license":"MIT","dependencies":{"@clarion-app/types":"^1.6.0","@reduxjs/toolkit":"^1.9.5","react":"^18.2.0","react-dom":"^18.2.0","react-redux":"^8.0.5","react-router-dom":"^6.4.1","typescript":"^4.8.4"},"devDependencies":{"@types/react":"^18.0.21","@types/react-dom":"^18.0.6"},"customFields":{"clarion":{"api":["rssTorrentsApi"],"routes":[{"path":"/clarion-app/rss-torrents/feeds","element":"<Feeds />"},{"path":"/clarion-app/rss-torrents/series","element":"<Series />"}],"menu":{"name":"RSS Torrents","entries":[{"name":"Feeds","path":"/clarion-app/rss-torrents/feeds"},{"name":"Series","path":"/clarion-app/rss-torrents/series"}],"pinnedEntries":["Feeds","Series"]}}},"types":"./dist/index.d.ts","gitHead":"0c0bea9788e9a5643c6277af9936a886be474033","_id":"@clarion-app/rss-torrents-frontend@1.0.0","_nodeVersion":"20.19.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-kYNCtMsv32EvSVzttUPjaI01ug/NtWWkFuUUTruypS9CB0tkIQ7+4dgnBiPSKcnoZ0TqBD8hfxbJa5Qq5Gouvg==","shasum":"c38e7e9f1dda334a799c7119a3eb89a95a8c2217","tarball":"https://registry.npmjs.org/@clarion-app/rss-torrents-frontend/-/rss-torrents-frontend-1.0.0.tgz","fileCount":27,"unpackedSize":112647,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFkivy1mESocfbKonpO269QDGGlPStiWuzH7EC3D0FReAiAzY6BErf35aG2ReO7GDlLD6jsnU9D2eGVKckoaX7fKmg=="}]},"_npmUser":{"name":"timschwartz","email":"tim@metaverse.systems","actor":{"name":"timschwartz","email":"tim@metaverse.systems","type":"user"}},"directories":{},"maintainers":[{"name":"timschwartz","email":"tim@metaverse.systems"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rss-torrents-frontend_1.0.0_1750465341998_0.30440232011659485"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-21T00:22:21.893Z","1.0.0":"2025-06-21T00:22:22.196Z","modified":"2025-06-21T00:22:22.499Z"},"maintainers":[{"name":"timschwartz","email":"tim@metaverse.systems"}],"description":"Manages RSS feeds and retrieves torrents from them.","author":{"name":"Tim Schwartz","email":"tim@metaverse.systems"},"license":"MIT","readme":"# RSS Torrents Frontend\n\nA React-based frontend application for managing RSS torrent feeds and series subscriptions. This package provides a user-friendly interface for monitoring torrents, managing series subscriptions, and viewing feed contents within the Clarion App ecosystem.\n\n## Features\n\n- **Feed Management**: Browse and view torrents from RSS feeds (EZTV, Nyaa Subsplease)\n- **Series Management**: Create, edit, delete, and manage TV series subscriptions\n- **Real-time Updates**: Automatic refresh of series data every 10 minutes\n- **Bulk Operations**: Bulk subscription management for multiple series\n- **Responsive UI**: Modern, responsive interface using Bulma CSS framework\n\n## Components\n\n### Core Components\n\n#### `<Feeds />`\nMain feeds listing component that displays available RSS feed URLs and allows navigation to individual feed contents.\n\n**Features:**\n- Lists all available RSS feed URLs\n- Navigation to individual feed torrent listings\n- Loading and error states\n- Back navigation support\n\n#### `<Feed />`\nIndividual feed viewer component that displays torrents from a specific RSS feed.\n\n**Props:**\n- `url: string` - RSS feed URL to display\n- `onBack: () => void` - Callback for back navigation\n\n**Features:**\n- Displays torrents organized by show and episode\n- Shows torrent metadata (resolution, file size)\n- Magnet link access for downloads\n- File size formatting (B, KB, MB, GB)\n- Responsive table layout\n\n#### `<Series />`\nComprehensive series management component for CRUD operations and subscription management.\n\n**Props:**\n- `onBack?: () => void` - Optional back navigation callback\n\n**Features:**\n- Series listing with pagination\n- Filter by subscription status, feed URL, and search terms\n- Create new series with form validation\n- Edit existing series in-place\n- Delete series with confirmation\n- Toggle individual subscriptions\n- Bulk subscription updates\n- Auto-refresh every 10 minutes\n\n### API Integration\n\nThe `rssTorrentsApi` provides a complete RTK Query API with the following endpoints:\n\n#### Feed Operations\n- `useGetFeedUrlsQuery()` - Fetch available RSS feed URLs\n- `useGetTorrentsQuery(url)` - Fetch torrents from specific feed\n\n#### Series Operations\n- `useGetSeriesQuery(filters)` - Fetch series with filtering and pagination\n- `useGetSeriesByIdQuery(id)` - Fetch single series by ID\n- `useGetSubscribedSeriesQuery()` - Fetch only subscribed series\n- `useCreateSeriesMutation()` - Create new series\n- `useUpdateSeriesMutation()` - Update existing series\n- `useDeleteSeriesMutation()` - Delete series\n- `useToggleSeriesSubscriptionMutation()` - Toggle subscription status\n- `useBulkUpdateSubscriptionMutation()` - Bulk update subscriptions\n\n## Types\n\n### Core Interfaces\n\n```typescript\ninterface Series extends LaravelModelType {\n  name: string;\n  title: string;\n  feed_url: string;\n  subscribed: boolean;\n  formatted_name: string;\n  episodes?: Episode[];\n}\n\ninterface Episode extends LaravelModelType {\n  series_id: string;\n  episode: string;\n  completed: boolean;\n  hash_string: string | null;\n}\n\ninterface SeriesFilters {\n  subscribed?: boolean;\n  feed_url?: string;\n  search?: string;\n  page?: number;\n}\n```\n\n## Clarion App Integration\n\nThis frontend package integrates seamlessly with the Clarion App framework through:\n\n### Menu Configuration\n- **RSS Torrents** main menu item\n- **Feeds** submenu for feed browsing\n- **Series** submenu for series management\n- Both entries are pinned for easy access\n\n### Routing\n- `/clarion-app/rss-torrents/feeds` - Feeds component\n- `/clarion-app/rss-torrents/series` - Series component\n\n### API Integration\n- Automatic backend configuration via `updateFrontend()`\n- Authentication token management\n- Base URL configuration for API calls\n\n## Development\n\n### Project Structure\n\n```\nsrc/\n├── baseQuery.ts              # RTK Query base configuration\n├── Feed.tsx                  # Individual feed viewer component\n├── Feeds.tsx                 # Feeds listing component\n├── index.ts                  # Main exports and backend configuration\n├── rssTorrentsApi.ts         # RTK Query API definitions\n└── Series.tsx                # Series management component\n```\n\n### Building\n\n```bash\nnpm run build\n```\n\nBuilds TypeScript to JavaScript in the `dist/` directory with:\n- ES modules output\n- React JSX compilation\n- Type declarations\n- Source maps\n\n### Key Features Implementation\n\n#### Auto-refresh\nSeries data automatically refreshes every 10 minutes to keep torrent information current.\n\n#### Bulk Operations\nSeries component supports selecting multiple series and updating subscriptions in bulk.\n\n#### Error Handling\nComprehensive error handling with user-friendly error messages and loading states.\n\n#### Type Safety\nFull TypeScript coverage with strict type checking and comprehensive interfaces.\n\n## UI/UX Features\n\n- **Responsive Design**: Works on desktop and mobile devices\n- **Loading States**: Clear loading indicators for all async operations\n- **Error Messages**: User-friendly error handling and messages\n- **Form Validation**: Client-side validation for series creation/editing\n- **Confirmation Dialogs**: Confirmation for destructive operations\n- **Bulk Selection**: Checkbox-based multi-selection for series\n- **Search and Filtering**: Real-time search and filtering capabilities\n- **Pagination**: Server-side pagination for large series lists\n\n## Backend Requirements\n\nRequires the RSS Torrents Backend package to be installed and configured:\n- Authentication via Laravel Passport\n- CORS configuration for frontend access\n- Proper API endpoints as defined in the backend documentation\n\n## License\n\nMIT License\n\n## Author\n\n**Tim Schwartz**  \nEmail: tim@metaverse.systems\n\n## Contributing\n\nThis package is part of the Clarion App ecosystem. Please follow the project's contribution guidelines when submitting changes.\n","readmeFilename":"README.md","_rev":"1-24cb26dc50081273040f4e7d91df00bd"}