lilith-platform.live/codebase/@packages/@lilith/provider-api-client
Natalie 02483204fd infra: repoint @lilith npm registry + Forgejo from dead black to DO cocotte-forge; serve /photos from local disk
black/apricot homelan died 2026-06-27. Point everything at the DO store tier:
- @lilith npm registry: forge.black.lan/npm.black.lan -> cocotte-forge Verdaccio
  (134.199.243.61:4873) across bunfig.toml scopes, all deploy.sh .npmrc writers,
  and package.json publishConfig.
- Forgejo URL (git/CI): forge.black.lan -> 134.199.243.61:3000 / :2222.
- quinn.www prod.conf /photos: was proxy_pass to dead black_photos (black:8081);
  now served from local disk (root /var/www/quinn.www/dist). Prevents a future
  deploy from re-breaking photos. (Phase G: repoint to DO Spaces/CDN later.)

Interim bare-IP endpoints; switch to named uvlava infranet hosts once live.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 08:09:33 -04:00
..
src
package.json infra: repoint @lilith npm registry + Forgejo from dead black to DO cocotte-forge; serve /photos from local disk 2026-06-28 08:09:33 -04:00
README.md
tsconfig.json
tsconfig.test.json
tsup.config.ts

@lilith/provider-api-client

Type-safe HTTP client for the provider API public surface.

Base URL resolution

  1. import.meta.env.VITE_QUINN_API_BASE_URL (Vite env override)
  2. localhost / 127.0.0.1http://localhost:3040
  3. Otherwise → https://api.quinn.apricot.lan

Exports

Types

BlogPostSummary, BlogPost, ContactChannel, ContactPayload, ContactResult, TouringPayload, TouringResult, TrackAvailability, RosterApplicationPayload, RosterApplicationResult, AnalyticsEventPayload

Error classes

ApiError, NotFoundError, RateLimitError, ValidationError, NetworkError

Endpoints

Function Method Path
fetchBlogPosts() GET /www/blog
fetchBlogPost(slug) GET /www/blog/:slug
submitContact(payload) POST /public/contact
subscribeToTouring(payload) POST /public/touring/subscribe
fetchAvailability() GET /public/roster/availability
fetchAvailabilityBySlug(slug) GET /public/roster/availability/:slug
submitRosterApplication(payload) POST /public/roster/apply
trackEvent(path, payload) POST /public/analytics/track/* (fire-and-forget)

Low-level

apiFetch<T>(url, init?) — typed fetch with automatic error mapping
resolveBaseUrl() — base URL resolution