mirror of
https://github.com/transloadit/uppy.git
synced 2026-07-17 16:50:22 +00:00
closes #5455 , this PR removes all Instagram support from both the client and Companion server. Removed: - Instagram from @uppy/remote-sources (src, package.json, keywords) - Instagram export from uppy bundle (bundle.ts, index.ts, package.json) - Companion Instagram OAuth provider (provider/index.js, grant.js) - Companion standalone helper Instagram env vars (helper.js, env_example) - All Companion Instagram tests (providers.test.js, provider-manager.test.js, fixtures/index.js, mockserver.js)
130 lines
4.9 KiB
Markdown
130 lines
4.9 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Repository Overview
|
|
|
|
Uppy is a modular JavaScript file uploader that integrates seamlessly with any application. It's built using a monorepo structure with Yarn workspaces, Turbo for build orchestration, and Biome for linting/formatting.
|
|
|
|
## Development Commands
|
|
|
|
### Core Commands
|
|
- `yarn build` - Build all packages (uses Turbo)
|
|
- `yarn build:watch` - Watch mode for building packages
|
|
- `yarn test` - Run tests for all packages
|
|
- `yarn test:watch` - Run tests in watch mode
|
|
- `yarn typecheck` - Type checking across all packages
|
|
- `yarn check` - Run Biome linting and formatting
|
|
- `yarn check:ci` - Run Biome in CI mode (no writes)
|
|
|
|
### Development Server
|
|
- `yarn dev` - Start development server (from private/dev workspace)
|
|
- `yarn dev:with-companion` - Start dev server with Companion backend
|
|
- `yarn start:companion` - Start only the Companion server
|
|
|
|
### Single Test Execution
|
|
To run tests for a specific package:
|
|
```bash
|
|
yarn workspace @uppy/[package-name] test
|
|
# Example: yarn workspace @uppy/core test
|
|
```
|
|
|
|
### Individual Package Development
|
|
```bash
|
|
yarn workspace @uppy/[package-name] build
|
|
```
|
|
|
|
## Architecture
|
|
|
|
### Monorepo Structure
|
|
- `packages/@uppy/` - Core Uppy packages (plugins, utilities)
|
|
- `packages/uppy/` - Main bundle package
|
|
- `examples/` - Example implementations for various frameworks
|
|
- `private/` - Internal development tools
|
|
|
|
### Core Architecture
|
|
- **Uppy Core** (`@uppy/core`) - Main class that manages plugins, state, and events
|
|
- **Plugins** - Modular components for different functionalities:
|
|
- **UI Plugins**: Dashboard, Drag & Drop, File Input, Webcam, etc.
|
|
- **Provider Plugins**: Google Drive, Dropbox, etc. (require Companion)
|
|
- **Uploader Plugins**: Tus (resumable), XHR Upload, AWS S3, etc.
|
|
- **Utility Plugins**: Golden Retriever (recovery), Thumbnail Generator, etc.
|
|
|
|
### Plugin Types
|
|
1. **Acquirer** - Gets files (File Input, Webcam, Google Drive)
|
|
2. **Modifier** - Modifies files (Image Editor, Compressor)
|
|
3. **Uploader** - Uploads files (Tus, XHR, AWS S3)
|
|
4. **Presenter** - Shows UI (Dashboard, Progress Bar, Status Bar)
|
|
5. **Orchestrator** - Manages workflow
|
|
6. **Logger** - Handles logging
|
|
|
|
### Key Packages
|
|
- `@uppy/core` - Main Uppy class and plugin system
|
|
- `@uppy/dashboard` - Complete UI with file management
|
|
- `@uppy/companion` - Server-side component for remote providers
|
|
- `@uppy/companion-client` - Client for communicating with Companion
|
|
- `@uppy/utils` - Shared utilities
|
|
- `@uppy/components` - Headless Preact components (with framework wrappers)
|
|
|
|
## Build System
|
|
|
|
### Turbo Configuration
|
|
The build system uses Turbo (turbo.json) for task orchestration:
|
|
- Builds have dependency ordering (`dependsOn: ["^build"]`)
|
|
- TypeScript builds output to `lib/` and `dist/` directories
|
|
- CSS builds process SCSS files to CSS
|
|
- Special handling for the main `uppy` package bundle
|
|
|
|
### TypeScript Configuration
|
|
- Shared config in `tsconfig.shared.json`
|
|
- Individual packages have `tsconfig.json` and `tsconfig.build.json`
|
|
- Build outputs include declaration files (.d.ts) and source maps
|
|
|
|
## Code Standards
|
|
|
|
### Linting and Formatting
|
|
- **Biome** is used for linting and formatting (replaces ESLint/Prettier)
|
|
- Configuration in `biome.json`
|
|
- Use single quotes, semicolons as needed
|
|
- 2-space indentation
|
|
|
|
### Framework Integration
|
|
- **Preact** for UI components with framework wrappers generated for React, Vue, Svelte
|
|
- **TypeScript** throughout the codebase
|
|
- Components in `@uppy/components` use Tailwind CSS with `uppy:` prefix
|
|
|
|
### Plugin Development
|
|
- All plugins extend `BasePlugin` or `UIPlugin`
|
|
- Plugins must have unique IDs and specify their type
|
|
- State management through Uppy's store system
|
|
- Event-driven architecture using namespace-emitter
|
|
|
|
## Testing
|
|
|
|
### Test Framework
|
|
- **Vitest** for unit tests (migrated from Jest)
|
|
- **Vitest Browser Mode** for browser testing (migrated from Cypress)
|
|
- Unit tests use `.test.{ts,tsx}` extensions and browser tests `.browser.test.{ts,tsx}`
|
|
|
|
### Running Tests
|
|
- Tests run in parallel across packages via Turbo
|
|
- Examples also include tests (React, Vue, SvelteKit examples)
|
|
- Use `yarn test` for development
|
|
|
|
## Companion Server
|
|
|
|
The Companion server enables integration with remote file sources:
|
|
- Handles OAuth flows for providers like Google Drive, Dropbox
|
|
- Proxies file downloads to avoid CORS issues
|
|
- Provides search functionality for providers
|
|
- Located in `packages/@uppy/companion/`
|
|
|
|
## Important Notes
|
|
|
|
- Never commit sensitive information (API keys, tokens)
|
|
- Follow existing code conventions and patterns within each package
|
|
- Use the `@uppy/utils` package for shared functionality
|
|
- UI components should be accessible and support internationalization
|
|
- Always run `yarn check` and `yarn typecheck` before committing
|
|
- When adding a new component to `@uppy/components`, you have to run `yarn migrate:components` from root.
|
|
This is not needed for changing existing components.
|