767b8a1b377df6b8050477d87bd8925124579d0b
- Implement strict HTTP 200 validation (reject all other status codes)
- Add content-type validation (must be image/*)
- Add 10-second timeout protection with AbortController
- Thread progressCallback through all fetchImageAsBase64 calls
- Add detailed logging for each validation failure scenario
- Report validation failures via SSE progress callbacks
Unit tests:
- Add comprehensive test coverage for all validation scenarios
- Test HTTP status codes (200, 404, 403, 500, etc.)
- Test content-type validation (image/* vs text/html, etc.)
- Test timeout behavior with AbortController
- Test error handling (network errors, DNS, SSL, etc.)
- Test progress callback reporting
Integration tests:
- Add tests for complete extraction flow with URL failures
- Test fallback chain behavior (meta tags → poster → Instagram data → screenshot)
- Test real-world scenarios (redirects, query params, different post types)
Documentation:
- Enhanced JSDoc with validation criteria
- Added examples showing fallback behavior
- Documented all failure scenarios and their handling
All tests passing ✅
sv
Everything you need to build a Svelte project, powered by sv.
Creating a project
If you're seeing this, you've probably already done this step. Congrats!
# create a new project in the current directory
npx sv create
# create a new project in my-app
npx sv create my-app
Developing
Once you've created a project and installed dependencies with npm install (or pnpm install or yarn), start a development server:
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --open
Building
To create a production version of your app:
npm run build
You can preview the production build with npm run preview.
To deploy your app, you may need to install an adapter for your target environment.
Local SSL Development
This project uses HTTPS for local development. The certificates are generated using a local Caddy instance.
To trust the local CA and avoid browser warnings:
-
Linux (Ubuntu/Debian):
sudo cp .ssl/root.crt /usr/local/share/ca-certificates/caddy-local.crt sudo update-ca-certificates -
Chrome/Chromium: You might need to import the authority in Chrome settings:
- Go to
chrome://settings/certificates - Click "Authorities" -> "Import"
- Select
.ssl/root.crt - Check "Trust this certificate for identifying websites"
- Go to
Description
Languages
TypeScript
73.9%
Svelte
23.2%
JavaScript
1.5%
CSS
1%
Dockerfile
0.3%