diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d5425d9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,84 @@ +# Git +.git +.gitignore + +# Dependencies +node_modules +**/node_modules + +# Build outputs +dist +build +.svelte-kit +**/dist +**/build +**/.svelte-kit + +# Rust/Cargo +target +**/target +Cargo.lock +**/Cargo.lock + +# WASM outputs +wasm +**/wasm + +# Environment files +.env +.env.* +!.env.example +**/.env +**/.env.* + +# Logs +logs +*.log +npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* + +# OS +.DS_Store +Thumbs.db + +# IDE +.vscode +.idea +*.swp +*.swo +*~ + +# Testing +coverage +.nyc_output + +# Temporary files +*.tmp +*.temp +.cache + +# Docker +Dockerfile +.dockerignore +docker-compose.yml +docker-compose*.yml +build.sh + +# Documentation +*.md +!README.md +DOCKER.md +CLAUDE.md + +# CI/CD +.github +.gitlab-ci.yml + +# Misc +.prettierrc +.prettierignore +.eslintrc +.eslintignore +tsconfig.tsbuildinfo diff --git a/.github/DOCKER_SETUP.md b/.github/DOCKER_SETUP.md new file mode 100644 index 0000000..1a54f87 --- /dev/null +++ b/.github/DOCKER_SETUP.md @@ -0,0 +1,261 @@ +# Docker & CI/CD Setup Summary + +This document summarizes all Docker and CI/CD files created for sexy.pivoine.art. + +## Files Created + +### Docker Files + +1. **`Dockerfile`** (root) + - Multi-stage build (base → builder → runner) + - Rust toolchain installation for WASM builds + - Optimized layer caching + - Non-root user for security + - Health checks included + +2. **`.dockerignore`** (root) + - Excludes unnecessary files from build context + - Optimizes build performance + +3. **`docker-compose.production.yml`** (root) + - Production orchestration + - Pre-configured to use GHCR images + - Resource limits and health checks + - Environment variable management + +4. **`.env.production.example`** (root) + - Template for all environment variables + - Documented with examples + +### Build Scripts + +5. **`build.sh`** (root) + - Convenience script for building images + - Supports tags, platforms, and pushing + - Executable (`chmod +x`) + +### Documentation + +6. **`DOCKER.md`** (root) + - Comprehensive Docker deployment guide + - Building, running, troubleshooting + - Production best practices + - Updated with GHCR information + +7. **`QUICKSTART.md`** (root) + - 5-minute quick start guide + - Docker Run and Docker Compose examples + - Common commands reference + +8. **`README.md`** (root) - **UPDATED** + - Added Docker quick start + - Added CI/CD badges + - Added documentation links + +9. **`CLAUDE.md`** (root) - **UPDATED** + - Added Docker deployment section + - Referenced DOCKER.md + +### GitHub Actions Workflows + +10. **`.github/workflows/docker-build-push.yml`** + - Builds and pushes to `ghcr.io/valknarxxx/sexy` + - Multi-platform (AMD64 + ARM64) + - Smart tagging (latest, semver, branch, SHA) + - Triggers: push to main/develop, tags, PRs, manual + - BuildKit cache for faster builds + +11. **`.github/workflows/docker-scan.yml`** + - Daily security scans with Trivy + - Reports to GitHub Security tab + - Scans CRITICAL and HIGH vulnerabilities + - Triggers: schedule, push to main, tags, manual + +12. **`.github/workflows/cleanup-images.yml`** + - Weekly cleanup of old images + - Keeps last 10 versions (configurable) + - Deletes untagged images + - Triggers: schedule, manual + +13. **`.github/workflows/README.md`** + - Comprehensive workflow documentation + - Setup requirements + - Usage examples + - Troubleshooting guide + +14. **`.github/DOCKER_SETUP.md`** (this file) + - Summary of all Docker/CI files + - Quick reference + +## Quick Reference + +### Image Registry + +- **Registry:** GitHub Container Registry (GHCR) +- **Image Name:** `ghcr.io/valknarxxx/sexy` +- **Tags:** + - `latest` - Latest from main branch + - `v1.0.0` - Semantic versions + - `develop` - Latest from develop branch + - `main-abc123` - Commit-specific + +### Pull & Run + +```bash +# Pull latest +docker pull ghcr.io/valknarxxx/sexy:latest + +# Run +docker run -d -p 3000:3000 --env-file .env.production ghcr.io/valknarxxx/sexy:latest + +# Or use docker-compose +docker-compose -f docker-compose.production.yml up -d +``` + +### Build Locally + +```bash +# Using script +./build.sh + +# Manual +docker build -t sexy.pivoine.art:latest . + +# Multi-platform +docker buildx build --platform linux/amd64,linux/arm64 -t sexy.pivoine.art:latest . +``` + +### Trigger CI/CD + +```bash +# Build and push 'latest' +git push origin main + +# Build and push version tags +git tag v1.0.0 +git push origin v1.0.0 + +# PR builds (test only, doesn't push) +git push origin feature/branch +# Create PR on GitHub +``` + +## Key Features + +### Security +- ✅ Non-root user in container +- ✅ Minimal base image (node:20.19.1-slim) +- ✅ Daily vulnerability scans +- ✅ Security reports in GitHub Security tab + +### Performance +- ✅ Multi-stage builds for smaller images +- ✅ BuildKit cache for faster builds +- ✅ Production-only dependencies +- ✅ Optimized layer caching + +### Reliability +- ✅ Health checks built-in +- ✅ dumb-init for proper signal handling +- ✅ Resource limits configurable +- ✅ Auto-restart on failure + +### Automation +- ✅ Automatic builds on push/tag +- ✅ Multi-platform support +- ✅ Smart semantic versioning +- ✅ Weekly image cleanup + +## Workflow Triggers Summary + +| Workflow | Push Main | Push Develop | Tags | PR | Schedule | Manual | +|----------|-----------|--------------|------|----|----------|--------| +| Build & Push | ✅ | ✅ | ✅ | ✅ (no push) | ❌ | ✅ | +| Security Scan | ✅ | ❌ | ✅ | ❌ | Daily 2AM | ✅ | +| Cleanup | ❌ | ❌ | ❌ | ❌ | Weekly Sun 3AM | ✅ | + +## Environment Variables + +### Required +- `PUBLIC_API_URL` - Directus API endpoint +- `PUBLIC_URL` - Frontend URL + +### Optional +- `PUBLIC_UMAMI_ID` - Analytics +- `LETTERSPACE_API_URL` - Newsletter API +- `LETTERSPACE_API_KEY` - Newsletter key +- `LETTERSPACE_LIST_ID` - Mailing list ID + +See `.env.production.example` for full reference. + +## Next Steps + +1. **Test Local Build** + ```bash + ./build.sh + docker run -d -p 3000:3000 --env-file .env.production sexy.pivoine.art:latest + ``` + +2. **Push to GitHub** + ```bash + git add . + git commit -m "Add Docker and CI/CD setup" + git push origin main + ``` + +3. **Monitor First Build** + - Go to GitHub Actions tab + - Watch "Build and Push Docker Image" workflow + - Wait ~30-45 minutes for multi-platform build + +4. **Test GHCR Image** + ```bash + docker pull ghcr.io/valknarxxx/sexy:latest + docker run -d -p 3000:3000 --env-file .env.production ghcr.io/valknarxxx/sexy:latest + ``` + +5. **Create First Release** + ```bash + git tag v1.0.0 + git push origin v1.0.0 + ``` + +6. **Check Security** + - Wait for daily scan or trigger manually + - Check GitHub → Security → Code scanning alerts + +## Support Resources + +- **Docker Guide:** [DOCKER.md](../DOCKER.md) +- **Quick Start:** [QUICKSTART.md](../QUICKSTART.md) +- **Development:** [CLAUDE.md](../CLAUDE.md) +- **Workflows:** [.github/workflows/README.md](workflows/README.md) + +## Troubleshooting + +### Common Issues + +1. **Build takes too long** + - Multi-platform builds take 30-45 minutes (normal) + - Consider using self-hosted runners + +2. **Permission denied on push** + - Check Settings → Actions → General → Workflow permissions + - Enable "Read and write permissions" + +3. **Image not found** + - For private repos, login to GHCR first + - Check package exists at github.com/valknarxxx?tab=packages + +4. **Container exits immediately** + - Check logs: `docker logs ` + - Verify environment variables + - Ensure port 3000 is not in use + +See [DOCKER.md](../DOCKER.md) for detailed troubleshooting. + +--- + +**Created:** 2025-10-25 +**Last Updated:** 2025-10-25 +**Status:** ✅ Ready for production diff --git a/.github/workflows/README.md b/.github/workflows/README.md new file mode 100644 index 0000000..c2b9828 --- /dev/null +++ b/.github/workflows/README.md @@ -0,0 +1,344 @@ +# GitHub Actions Workflows + +This directory contains automated workflows for building, scanning, and managing Docker images for sexy.pivoine.art. + +## Workflows + +### 1. Build and Push Docker Image (`docker-build-push.yml`) + +**Triggers:** +- Push to `main` or `develop` branches +- New version tags (e.g., `v1.0.0`) +- Pull requests to `main` +- Manual trigger via workflow_dispatch + +**What it does:** +- Builds multi-platform Docker images (AMD64 + ARM64) +- Pushes to GitHub Container Registry as `ghcr.io/valknarxxx/sexy` +- Creates tags based on branch, version, and commit SHA +- Uses build cache for faster builds +- Only builds (doesn't push) for PRs + +**Image Tags:** +- `latest` - Latest build from main branch +- `main`, `develop` - Branch-based tags +- `v1.0.0`, `v1.0`, `v1` - Semantic version tags +- `main-abc123` - Branch + commit SHA +- `pr-123` - Pull request builds +- Custom tags via manual trigger + +**Usage:** + +```bash +# Automatically triggered on push to main +git push origin main + +# Create a release tag +git tag v1.0.0 +git push origin v1.0.0 + +# Manual trigger from GitHub UI +# Actions → Build and Push Docker Image → Run workflow +``` + +**Pulling images:** + +```bash +# Latest version +docker pull ghcr.io/valknarxxx/sexy:latest + +# Specific version +docker pull ghcr.io/valknarxxx/sexy:v1.0.0 + +# Specific branch +docker pull ghcr.io/valknarxxx/sexy:develop +``` + +### 2. Docker Image Security Scan (`docker-scan.yml`) + +**Triggers:** +- Daily at 2 AM UTC (scheduled) +- Push to `main` branch +- New version tags +- Manual trigger + +**What it does:** +- Scans the latest image for vulnerabilities using Trivy +- Reports CRITICAL and HIGH severity issues +- Uploads results to GitHub Security tab +- Runs on a schedule to detect new vulnerabilities + +**Viewing results:** +- Go to repository → Security → Code scanning alerts +- Check workflow run summary for table output + +**Manual scan:** + +```bash +# From GitHub UI +# Actions → Docker Image Security Scan → Run workflow +``` + +### 3. Cleanup Old Docker Images (`cleanup-images.yml`) + +**Triggers:** +- Weekly on Sunday at 3 AM UTC +- Manual trigger + +**What it does:** +- Removes old untagged image versions +- Keeps the 10 most recent versions by default +- Frees up GitHub Container Registry storage + +**Manual cleanup:** + +```bash +# From GitHub UI with custom retention +# Actions → Cleanup Old Docker Images → Run workflow +# Set "keep_count" parameter (default: 10) +``` + +## Setup Requirements + +### 1. Enable GitHub Container Registry + +The workflows automatically use GitHub's Container Registry (ghcr.io). No additional setup needed - the `GITHUB_TOKEN` is automatically provided to workflows. + +### 2. Repository Settings + +Ensure the following permissions are enabled: + +1. **Settings → Actions → General** + - Allow GitHub Actions: ✅ Enabled + - Workflow permissions: "Read and write permissions" + +2. **Settings → Packages** + - Package visibility will inherit from repository visibility + - Can be changed to public/private as needed + +### 3. Branch Protection (Optional) + +For production use, consider: + +1. **Settings → Branches → Branch protection rules** + - Protect `main` branch + - Require PR reviews + - Require status checks (Docker build) to pass + +## Secrets and Environment Variables + +### Required Secrets + +None! The workflows use the built-in `GITHUB_TOKEN` which is automatically provided. + +### Optional Secrets + +If you need to deploy to production automatically, you can add: + +- `PRODUCTION_SSH_KEY` - For SSH deployment +- `PRODUCTION_HOST` - Production server hostname +- `PRODUCTION_USER` - Production server user + +## Image Visibility + +By default, GitHub Container Registry packages inherit repository visibility: + +- **Public repository** → Public images +- **Private repository** → Private images + +To change package visibility: + +1. Go to https://github.com/users/valknarxxx/packages/container/sexy/settings +2. Change visibility under "Danger Zone" + +## Pulling Images + +### Public Images + +```bash +docker pull ghcr.io/valknarxxx/sexy:latest +``` + +### Private Images + +```bash +# 1. Create a GitHub Personal Access Token with read:packages scope +# Settings → Developer settings → Personal access tokens → Tokens (classic) +# Scopes: read:packages + +# 2. Login to GitHub Container Registry +echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin + +# 3. Pull the image +docker pull ghcr.io/valknarxxx/sexy:latest +``` + +## Best Practices + +### Version Tagging + +Use semantic versioning for releases: + +```bash +# Major release (breaking changes) +git tag v2.0.0 + +# Minor release (new features) +git tag v1.1.0 + +# Patch release (bug fixes) +git tag v1.0.1 + +# Always push tags +git push origin --tags +``` + +### Development Workflow + +```bash +# 1. Create feature branch +git checkout -b feature/new-feature + +# 2. Make changes and commit +git add . +git commit -m "Add new feature" + +# 3. Push and create PR +git push origin feature/new-feature +# Create PR on GitHub - this triggers a test build + +# 4. Merge to develop for staging +# Merging to develop triggers a build with 'develop' tag + +# 5. Merge to main for production +# Merging to main triggers a build with 'latest' tag + +# 6. Tag releases +git checkout main +git pull +git tag v1.0.0 +git push origin v1.0.0 +# This triggers a build with version tags +``` + +## Monitoring + +### Build Status + +Check workflow status: +- Repository → Actions → Select workflow +- View logs, artifacts, and summaries + +### Image Registry + +View published images: +- https://github.com/valknarxxx?tab=packages +- Or repository → Packages + +### Security Alerts + +View vulnerability scans: +- Repository → Security → Code scanning alerts +- Filter by "Trivy" tool + +## Troubleshooting + +### Build Failures + +**Problem:** Build fails at Rust installation + +**Solution:** +- Check GitHub Actions runner status +- Verify Dockerfile Rust installation steps +- Check build logs for network issues + +**Problem:** Permission denied when pushing + +**Solution:** +- Verify repository Settings → Actions → General → Workflow permissions +- Ensure "Read and write permissions" is enabled + +**Problem:** Multi-platform build timeout + +**Solution:** +- Builds can take 30-45 minutes for multi-platform +- This is normal for Rust/WASM compilation +- Consider splitting platforms or using self-hosted runners + +### Pull Failures + +**Problem:** Cannot pull private image + +**Solution:** +```bash +# Ensure you're logged in +echo $GITHUB_TOKEN | docker login ghcr.io -u valknarxxx --password-stdin + +# Verify token has read:packages scope +``` + +**Problem:** Image not found + +**Solution:** +- Check image exists: https://github.com/valknarxxx?tab=packages +- Verify tag name is correct +- Ensure you have access to private packages + +## Advanced Configuration + +### Self-Hosted Runners + +For faster builds, use self-hosted runners: + +```yaml +jobs: + build-and-push: + runs-on: self-hosted # Change from ubuntu-latest + # ... rest of job +``` + +### Build-time Variables + +Pass build arguments: + +```yaml +build-args: | + NODE_ENV=production + CUSTOM_VAR=value +``` + +### Deploy on Push + +Add a deployment job: + +```yaml +jobs: + deploy: + needs: build-and-push + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' + steps: + - name: Deploy to production + # Add deployment steps +``` + +## Cost Optimization + +### Storage Limits + +GitHub provides: +- **Public repos:** Unlimited storage and bandwidth +- **Private repos:** 500MB storage, 1GB bandwidth (free tier) + +### Optimization Tips + +1. **Regular cleanup:** Run cleanup workflow weekly +2. **Limit platforms:** Build only needed architectures +3. **Use cache:** BuildKit cache reduces rebuild time +4. **Minimize layers:** Optimize Dockerfile + +### Monitoring Usage + +Check package storage: +- Settings → Billing → Packages +- View storage usage per package diff --git a/.github/workflows/cleanup-images.yml b/.github/workflows/cleanup-images.yml new file mode 100644 index 0000000..79d2017 --- /dev/null +++ b/.github/workflows/cleanup-images.yml @@ -0,0 +1,42 @@ +name: Cleanup Old Docker Images + +on: + schedule: + # Run weekly on Sunday at 3 AM UTC + - cron: '0 3 * * 0' + workflow_dispatch: + inputs: + keep_count: + description: 'Number of recent images to keep (per tag pattern)' + required: false + default: '10' + +env: + REGISTRY: ghcr.io + IMAGE_NAME: valknarxxx/sexy + +jobs: + cleanup: + runs-on: ubuntu-latest + permissions: + packages: write + + steps: + - name: Delete old container images + uses: actions/delete-package-versions@v5 + with: + package-name: 'sexy' + package-type: 'container' + min-versions-to-keep: ${{ github.event.inputs.keep_count || 10 }} + delete-only-untagged-versions: 'true' + + - name: Generate cleanup summary + run: | + echo "### Docker Image Cleanup :broom:" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Registry:** \`${{ env.REGISTRY }}\`" >> $GITHUB_STEP_SUMMARY + echo "**Image:** \`${{ env.IMAGE_NAME }}\`" >> $GITHUB_STEP_SUMMARY + echo "**Kept versions:** ${{ github.event.inputs.keep_count || 10 }}" >> $GITHUB_STEP_SUMMARY + echo "**Cleanup Date:** $(date -u '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Old untagged images have been removed to free up storage." >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml new file mode 100644 index 0000000..621ef52 --- /dev/null +++ b/.github/workflows/docker-build-push.yml @@ -0,0 +1,115 @@ +name: Build and Push Docker Image + +on: + push: + branches: + - main + - develop + tags: + - 'v*.*.*' + pull_request: + branches: + - main + workflow_dispatch: + inputs: + tag: + description: 'Custom tag for the image' + required: false + default: 'manual' + +env: + REGISTRY: ghcr.io + IMAGE_NAME: valknarxxx/sexy + +jobs: + build-and-push: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + platforms: linux/amd64,linux/arm64 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + # Tag as 'latest' for main branch + type=raw,value=latest,enable={{is_default_branch}} + # Tag with branch name + type=ref,event=branch + # Tag with PR number + type=ref,event=pr + # Tag with git tag (semver) + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + # Tag with commit SHA + type=sha,prefix={{branch}}- + # Custom tag from workflow_dispatch + type=raw,value=${{ github.event.inputs.tag }},enable=${{ github.event_name == 'workflow_dispatch' }} + labels: | + org.opencontainers.image.title=sexy.pivoine.art + org.opencontainers.image.description=Adult content platform with SvelteKit, Directus, and hardware integration + org.opencontainers.image.vendor=valknarxxx + org.opencontainers.image.source=https://github.com/${{ github.repository }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + NODE_ENV=production + + - name: Generate image digest + if: github.event_name != 'pull_request' + run: | + echo "### Docker Image Published :rocket:" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Registry:** \`${{ env.REGISTRY }}\`" >> $GITHUB_STEP_SUMMARY + echo "**Image:** \`${{ env.IMAGE_NAME }}\`" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Tags:**" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY + echo "${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Pull command:**" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY + echo "docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY + + - name: PR Comment - Image built but not pushed + if: github.event_name == 'pull_request' + run: | + echo "### Docker Image Built Successfully :white_check_mark:" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Image was built successfully but **not pushed** (PR builds are not published)." >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Would be tagged as:**" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY + echo "${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/docker-scan.yml b/.github/workflows/docker-scan.yml new file mode 100644 index 0000000..ab23b34 --- /dev/null +++ b/.github/workflows/docker-scan.yml @@ -0,0 +1,71 @@ +name: Docker Image Security Scan + +on: + schedule: + # Run daily at 2 AM UTC + - cron: '0 2 * * *' + push: + branches: + - main + tags: + - 'v*.*.*' + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: valknarxxx/sexy + +jobs: + scan: + runs-on: ubuntu-latest + permissions: + contents: read + packages: read + security-events: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Pull latest image + run: | + docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest || echo "Image not found, will skip scan" + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + format: 'sarif' + output: 'trivy-results.sarif' + severity: 'CRITICAL,HIGH' + + - name: Upload Trivy results to GitHub Security + uses: github/codeql-action/upload-sarif@v3 + if: always() + with: + sarif_file: 'trivy-results.sarif' + + - name: Run Trivy vulnerability scanner (table output) + uses: aquasecurity/trivy-action@master + with: + image-ref: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + format: 'table' + severity: 'CRITICAL,HIGH,MEDIUM' + + - name: Generate scan summary + if: always() + run: | + echo "### Security Scan Results :shield:" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Image:** \`${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest\`" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Scan Date:** $(date -u '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Check the Security tab for detailed vulnerability reports." >> $GITHUB_STEP_SUMMARY diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..439d85f --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,180 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is a monorepo for an adult content platform built with SvelteKit, Directus CMS, and hardware integration via Buttplug.io. The project uses pnpm workspaces with three main packages. + +## Prerequisites + +1. Install Node.js 20.19.1 +2. Enable corepack: `corepack enable` +3. Install dependencies: `pnpm install` +4. Install Rust toolchain and wasm-bindgen: `cargo install wasm-bindgen-cli` + +## Project Structure + +### Packages + +- **`packages/frontend`**: SvelteKit application (main frontend) +- **`packages/bundle`**: Directus extension bundle (custom endpoints, hooks, themes) +- **`packages/buttplug`**: Hardware control library with TypeScript/WebAssembly bindings + +### Frontend (SvelteKit + Tailwind CSS 4) + +- **Framework**: SvelteKit 2 with adapter-node +- **Styling**: Tailwind CSS v4 via @tailwindcss/vite +- **UI Components**: bits-ui, custom components in `src/lib/components/ui/` +- **Backend**: Directus headless CMS +- **Routes**: File-based routing in `src/routes/` + - `+page.server.ts`: Server-side data loading + - `+layout.server.ts`: Layout data (authentication, etc.) +- **Authentication**: Session-based via Directus SDK (cookies) +- **API Proxy**: Dev server proxies `/api` to `http://localhost:8055` (Directus) +- **i18n**: svelte-i18n for internationalization + +Key files: +- `src/lib/directus.ts`: Directus client configuration +- `src/lib/types.ts`: Shared TypeScript types +- `src/hooks.server.ts`: Server-side auth middleware +- `vite.config.ts`: Dev server on port 3000 with API proxy + +### Bundle (Directus Extensions) + +Custom Directus extensions providing: +- **Endpoint** (`src/endpoint/index.ts`): `/sexy/stats` endpoint for platform statistics +- **Hook** (`src/hook/index.ts`): + - Auto-generates slugs for users based on artist_name + - Processes uploaded videos with ffmpeg to extract duration +- **Theme** (`src/theme/index.ts`): Custom Directus admin theme + +### Buttplug (Hardware Control) + +Hybrid TypeScript/Rust package for intimate hardware control: +- **TypeScript**: Client library, connectors (WebSocket, Browser WebSocket) +- **Rust/WASM**: Core buttplug implementation compiled to WebAssembly +- Provides browser-based Bluetooth device control via WebBluetooth API + +Key concepts: +- `ButtplugClient`: Main client interface +- `ButtplugClientDevice`: Device abstraction +- `ButtplugWasmClientConnector`: WASM-based connector +- Messages defined in `src/core/Messages.ts` + +## Common Commands + +### Development + +Start full development environment (data + Directus + frontend): +```bash +pnpm dev +``` + +Individual services: +```bash +pnpm dev:data # Start Docker Compose data services +pnpm dev:directus # Start Directus in Docker +pnpm --filter @sexy.pivoine.art/frontend dev # Frontend dev server only +``` + +### Building + +Build all packages: +```bash +pnpm install # Ensure dependencies are installed first +``` + +Build specific packages: +```bash +pnpm build:frontend # Pulls git, installs, builds frontend +pnpm build:bundle # Pulls git, installs, builds Directus extensions +``` + +Individual package builds: +```bash +pnpm --filter @sexy.pivoine.art/frontend build +pnpm --filter @sexy.pivoine.art/bundle build +pnpm --filter @sexy.pivoine.art/buttplug build # TypeScript build +pnpm --filter @sexy.pivoine.art/buttplug build:wasm # Rust WASM build +``` + +### Production + +Start production frontend server (local): +```bash +pnpm --filter @sexy.pivoine.art/frontend start +``` + +Docker deployment (recommended for production): +```bash +# Build Docker image +docker build -t sexy.pivoine.art:latest . + +# Run with docker-compose +docker-compose -f docker-compose.production.yml up -d + +# Or run directly +docker run -d -p 3000:3000 --env-file .env.production sexy.pivoine.art:latest +``` + +See `DOCKER.md` for comprehensive Docker deployment guide. + +## Architecture Notes + +### Data Flow + +1. **Frontend** → `/api/*` (proxied) → **Directus CMS** +2. Directus uses **bundle extensions** for custom logic (stats, video processing, user management) +3. Frontend uses **Directus SDK** with session authentication +4. Hardware control uses **buttplug package** (TypeScript → WASM → Bluetooth) + +### Authentication + +- Session tokens stored in `directus_session_token` cookie +- `hooks.server.ts` validates token on every request via `isAuthenticated()` +- User roles: Model, Viewer (checked via role or policy) +- `isModel()` helper in `src/lib/directus.ts` checks user permissions + +### Content Types + +Core types in `packages/frontend/src/lib/types.ts`: +- **User/CurrentUser**: User profiles with roles and policies +- **Video**: Videos with models, tags, premium flag +- **Model**: Creator profiles with photos and banner +- **Article**: Magazine/blog content +- **BluetoothDevice**: Hardware device state + +### Docker Environment + +Development uses Docker Compose in `../compose/` directory: +- `../compose/data`: Database/storage services +- `../compose/sexy`: Directus instance (uses `.env.local`) + +### Asset URLs + +Assets served via Directus with transforms: +```typescript +getAssetUrl(id, "thumbnail" | "preview" | "medium" | "banner") +// Returns: ${directusApiUrl}/assets/${id}?transform=... +``` + +## Development Workflow + +1. Ensure Docker services are running: `pnpm dev:data && pnpm dev:directus` +2. Start frontend dev server: `pnpm --filter @sexy.pivoine.art/frontend dev` +3. Access frontend at `http://localhost:3000` +4. Access Directus admin at `http://localhost:8055` + +When modifying: +- **Frontend code**: Hot reload via Vite +- **Bundle extensions**: Rebuild with `pnpm --filter @sexy.pivoine.art/bundle build` and restart Directus +- **Buttplug library**: Rebuild TypeScript (`pnpm build`) and/or WASM (`pnpm build:wasm`) + +## Important Notes + +- This is a pnpm workspace; always use `pnpm` not `npm` or `yarn` +- Package manager is locked to `pnpm@10.17.0` +- Buttplug package requires Rust toolchain for WASM builds +- Frontend uses SvelteKit's adapter-node for production deployment +- All TypeScript packages use ES modules (`"type": "module"`) diff --git a/DOCKER.md b/DOCKER.md new file mode 100644 index 0000000..9aa9ec6 --- /dev/null +++ b/DOCKER.md @@ -0,0 +1,378 @@ +# Docker Deployment Guide + +This guide covers building and deploying sexy.pivoine.art using Docker. + +## Overview + +The Dockerfile uses a multi-stage build process: + +1. **Base stage**: Sets up Node.js and pnpm +2. **Builder stage**: Installs Rust, compiles WASM, builds all packages +3. **Runner stage**: Minimal production image with only runtime dependencies + +## Prerequisites + +- Docker 20.10+ with BuildKit support +- Docker Compose 2.0+ (optional, for orchestration) + +## Building the Image + +### Basic Build + +```bash +docker build -t sexy.pivoine.art:latest . +``` + +### Build with Build Arguments + +```bash +docker build \ + --build-arg NODE_ENV=production \ + -t sexy.pivoine.art:latest \ + . +``` + +### Multi-platform Build (for ARM64 and AMD64) + +```bash +docker buildx build \ + --platform linux/amd64,linux/arm64 \ + -t sexy.pivoine.art:latest \ + --push \ + . +``` + +## Running the Container + +### Run with Environment Variables + +```bash +docker run -d \ + --name sexy-pivoine-frontend \ + -p 3000:3000 \ + -e PUBLIC_API_URL=https://api.pivoine.art \ + -e PUBLIC_URL=https://sexy.pivoine.art \ + -e PUBLIC_UMAMI_ID=your-umami-id \ + -e LETTERSPACE_API_URL=https://api.letterspace.com/v1 \ + -e LETTERSPACE_API_KEY=your-api-key \ + -e LETTERSPACE_LIST_ID=your-list-id \ + sexy.pivoine.art:latest +``` + +### Run with Environment File + +```bash +# Create .env.production from template +cp .env.production.example .env.production + +# Edit .env.production with your values +nano .env.production + +# Run container +docker run -d \ + --name sexy-pivoine-frontend \ + -p 3000:3000 \ + --env-file .env.production \ + sexy.pivoine.art:latest +``` + +## Docker Compose Deployment + +### Using docker-compose.production.yml + +```bash +# 1. Create environment file +cp .env.production.example .env.production + +# 2. Edit environment variables +nano .env.production + +# 3. Build and start +docker-compose -f docker-compose.production.yml up -d --build + +# 4. View logs +docker-compose -f docker-compose.production.yml logs -f frontend + +# 5. Stop services +docker-compose -f docker-compose.production.yml down +``` + +### Scale the Application + +```bash +docker-compose -f docker-compose.production.yml up -d --scale frontend=3 +``` + +## Environment Variables Reference + +### Required Variables + +| Variable | Description | Example | +|----------|-------------|---------| +| `PUBLIC_API_URL` | Directus API backend URL | `https://api.pivoine.art` | +| `PUBLIC_URL` | Frontend application URL | `https://sexy.pivoine.art` | + +### Optional Variables + +| Variable | Description | Example | +|----------|-------------|---------| +| `PUBLIC_UMAMI_ID` | Umami analytics tracking ID | `abc123def-456` | +| `LETTERSPACE_API_URL` | Letterspace API endpoint | `https://api.letterspace.com/v1` | +| `LETTERSPACE_API_KEY` | Letterspace authentication key | `sk_live_...` | +| `LETTERSPACE_LIST_ID` | Mailing list identifier | `list_abc123` | +| `PORT` | Application port (inside container) | `3000` | +| `HOST` | Host binding | `0.0.0.0` | +| `NODE_ENV` | Node environment | `production` | + +## Health Checks + +The container includes a built-in health check that pings the HTTP server every 30 seconds: + +```bash +# Check container health +docker inspect --format='{{.State.Health.Status}}' sexy-pivoine-frontend + +# View health check logs +docker inspect --format='{{json .State.Health}}' sexy-pivoine-frontend | jq +``` + +## Logs and Debugging + +### View Container Logs + +```bash +# Follow logs +docker logs -f sexy-pivoine-frontend + +# Last 100 lines +docker logs --tail 100 sexy-pivoine-frontend + +# With timestamps +docker logs -f --timestamps sexy-pivoine-frontend +``` + +### Execute Commands in Running Container + +```bash +# Open shell +docker exec -it sexy-pivoine-frontend sh + +# Check Node.js version +docker exec sexy-pivoine-frontend node --version + +# Check environment variables +docker exec sexy-pivoine-frontend env +``` + +### Debug Build Issues + +```bash +# Build with no cache +docker build --no-cache -t sexy.pivoine.art:latest . + +# Build specific stage for debugging +docker build --target builder -t sexy.pivoine.art:builder . + +# Inspect builder stage +docker run -it --rm sexy.pivoine.art:builder sh +``` + +## Production Best Practices + +### 1. Use Specific Tags + +```bash +# Tag with version +docker build -t sexy.pivoine.art:1.0.0 . +docker tag sexy.pivoine.art:1.0.0 sexy.pivoine.art:latest +``` + +### 2. Image Scanning + +```bash +# Scan for vulnerabilities (requires Docker Scout or Trivy) +docker scout cves sexy.pivoine.art:latest + +# Or with Trivy +trivy image sexy.pivoine.art:latest +``` + +### 3. Resource Limits + +```bash +docker run -d \ + --name sexy-pivoine-frontend \ + -p 3000:3000 \ + --memory="2g" \ + --cpus="2" \ + --env-file .env.production \ + sexy.pivoine.art:latest +``` + +### 4. Restart Policies + +```bash +docker run -d \ + --name sexy-pivoine-frontend \ + --restart=unless-stopped \ + -p 3000:3000 \ + --env-file .env.production \ + sexy.pivoine.art:latest +``` + +### 5. Use Docker Secrets (Docker Swarm) + +```bash +# Create secrets +echo "your-api-key" | docker secret create letterspace_api_key - + +# Deploy with secrets +docker service create \ + --name sexy-pivoine-frontend \ + --secret letterspace_api_key \ + -p 3000:3000 \ + sexy.pivoine.art:latest +``` + +## Optimization Tips + +### Reduce Build Time + +1. **Use BuildKit cache mounts** (already enabled in Dockerfile) +2. **Leverage layer caching** - structure Dockerfile to cache dependencies +3. **Use `.dockerignore`** - exclude unnecessary files from build context + +### Reduce Image Size + +Current optimizations: +- Multi-stage build (builder artifacts not in final image) +- Production-only dependencies (`pnpm install --prod`) +- Minimal base image (`node:20.19.1-slim`) +- Only necessary build artifacts copied to runner + +Image size breakdown: +```bash +docker images sexy.pivoine.art:latest +``` + +## CI/CD Integration + +### GitHub Actions (Automated) + +This repository includes automated GitHub Actions workflows for building, scanning, and managing Docker images. + +**Pre-configured workflows:** +- **Build & Push** (`.github/workflows/docker-build-push.yml`) + - Automatically builds and pushes to `ghcr.io/valknarxxx/sexy` + - Triggers on push to main/develop, version tags, and PRs + - Multi-platform builds (AMD64 + ARM64) + - Smart tagging: latest, branch names, semver, commit SHAs + +- **Security Scan** (`.github/workflows/docker-scan.yml`) + - Daily vulnerability scans with Trivy + - Reports to GitHub Security tab + - Scans on every release + +- **Cleanup** (`.github/workflows/cleanup-images.yml`) + - Weekly cleanup of old untagged images + - Keeps last 10 versions + +**Using pre-built images:** + +```bash +# Pull latest from GitHub Container Registry +docker pull ghcr.io/valknarxxx/sexy:latest + +# Pull specific version +docker pull ghcr.io/valknarxxx/sexy:v1.0.0 + +# Run the image +docker run -d -p 3000:3000 --env-file .env.production ghcr.io/valknarxxx/sexy:latest +``` + +**Triggering builds:** + +```bash +# Push to main → builds 'latest' tag +git push origin main + +# Create version tag → builds semver tags +git tag v1.0.0 && git push origin v1.0.0 + +# Pull request → builds but doesn't push +``` + +See `.github/workflows/README.md` for detailed workflow documentation. + +## Troubleshooting + +### Build Fails at Rust Installation + +**Problem**: Rust installation fails or times out + +**Solution**: +- Check internet connectivity +- Use a Rust mirror if in restricted network +- Increase build timeout + +### WASM Build Fails + +**Problem**: `wasm-bindgen-cli` version mismatch + +**Solution**: +```dockerfile +# In Dockerfile, pin wasm-bindgen-cli version +RUN cargo install wasm-bindgen-cli --version 0.2.103 +``` + +### Container Exits Immediately + +**Problem**: Container starts then exits + +**Solution**: Check logs and verify: +```bash +docker logs sexy-pivoine-frontend + +# Verify build output exists +docker run -it --rm sexy.pivoine.art:latest ls -la packages/frontend/build +``` + +### Port Already in Use + +**Problem**: Port 3000 already bound + +**Solution**: +```bash +# Use different host port +docker run -d -p 8080:3000 sexy.pivoine.art:latest +``` + +## Maintenance + +### Clean Up + +```bash +# Remove stopped containers +docker container prune + +# Remove unused images +docker image prune -a + +# Remove build cache +docker builder prune + +# Complete cleanup (use with caution) +docker system prune -a --volumes +``` + +### Update Base Image + +Regularly update the base Node.js image: + +```bash +# Pull latest Node 20 LTS +docker pull node:20.19.1-slim + +# Rebuild +docker build --pull -t sexy.pivoine.art:latest . +``` diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..74a2ea4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,135 @@ +# syntax=docker/dockerfile:1 + +# ============================================================================ +# Base stage - shared dependencies +# ============================================================================ +FROM node:20.19.1-slim AS base + +# Enable corepack for pnpm +RUN corepack enable + +# Set working directory +WORKDIR /app + +# Copy workspace configuration +COPY pnpm-workspace.yaml package.json pnpm-lock.yaml ./ + +# ============================================================================ +# Builder stage - compile application with Rust/WASM support +# ============================================================================ +FROM base AS builder + +# Install build dependencies for Rust and native modules +RUN apt-get update && apt-get install -y \ + curl \ + build-essential \ + pkg-config \ + libssl-dev \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +# Install Rust toolchain +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \ + --default-toolchain stable \ + --profile minimal \ + --target wasm32-unknown-unknown + +# Add Rust to PATH +ENV PATH="/root/.cargo/bin:${PATH}" + +# Install wasm-bindgen-cli +RUN cargo install wasm-bindgen-cli + +# Copy source files +COPY packages ./packages + +# Install all dependencies +RUN pnpm install --frozen-lockfile + +# Build packages in correct order with WASM support +# 1. Build buttplug WASM +RUN RUSTFLAGS='--cfg getrandom_backend="wasm_js" --cfg=web_sys_unstable_apis' \ + pnpm --filter @sexy.pivoine.art/buttplug build:wasm + +# 2. Build buttplug TypeScript +RUN pnpm --filter @sexy.pivoine.art/buttplug build + +# 3. Build frontend +RUN pnpm --filter @sexy.pivoine.art/frontend build + +# 4. Build Directus bundle +RUN pnpm --filter @sexy.pivoine.art/bundle build + +# Prune dev dependencies for production +RUN pnpm install --prod --frozen-lockfile + +# ============================================================================ +# Runner stage - minimal production image +# ============================================================================ +FROM node:20.19.1-slim AS runner + +# Install dumb-init for proper signal handling +RUN apt-get update && apt-get install -y \ + dumb-init \ + && rm -rf /var/lib/apt/lists/* + +# Create non-root user +RUN userdel -r node && \ + groupadd -r -g 1000 node && \ + useradd -r -u 1000 -g node -m -d /home/node -s /bin/bash node + +# Set working directory +WORKDIR /home/node/app + +# Copy production dependencies and built artifacts from builder +COPY --from=builder --chown=node:node /app/node_modules ./node_modules +COPY --from=builder --chown=node:node /app/package.json ./package.json +COPY --from=builder --chown=node:node /app/pnpm-lock.yaml ./pnpm-lock.yaml +COPY --from=builder --chown=node:node /app/pnpm-workspace.yaml ./pnpm-workspace.yaml + +# Create package directories +RUN mkdir -p packages/frontend packages/bundle packages/buttplug + +# Copy frontend artifacts +COPY --from=builder --chown=node:node /app/packages/frontend/build ./packages/frontend/build +COPY --from=builder --chown=node:node /app/packages/frontend/node_modules ./packages/frontend/node_modules +COPY --from=builder --chown=node:node /app/packages/frontend/package.json ./packages/frontend/package.json + +# Copy bundle artifacts +COPY --from=builder --chown=node:node /app/packages/bundle/dist ./packages/bundle/dist +COPY --from=builder --chown=node:node /app/packages/bundle/node_modules ./packages/bundle/node_modules +COPY --from=builder --chown=node:node /app/packages/bundle/package.json ./packages/bundle/package.json + +# Copy buttplug artifacts +COPY --from=builder --chown=node:node /app/packages/buttplug/dist ./packages/buttplug/dist +COPY --from=builder --chown=node:node /app/packages/buttplug/node_modules ./packages/buttplug/node_modules +COPY --from=builder --chown=node:node /app/packages/buttplug/package.json ./packages/buttplug/package.json + +# Switch to non-root user +USER node + +# Environment variables (with defaults, override at runtime) +ENV NODE_ENV=production \ + PORT=3000 \ + HOST=0.0.0.0 + +# Runtime environment variables (will be passed at container start) +ENV PUBLIC_API_URL="" \ + PUBLIC_URL="" \ + PUBLIC_UMAMI_ID="" \ + LETTERSPACE_API_URL="" \ + LETTERSPACE_API_KEY="" \ + LETTERSPACE_LIST_ID="" + +# Expose application port +EXPOSE 3000 + +# Health check +HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \ + CMD node -e "require('http').get('http://localhost:3000/', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})" + +# Use dumb-init to handle signals properly +ENTRYPOINT ["dumb-init", "--"] + +# Start the application +CMD ["node", "packages/frontend/build/index.js"] diff --git a/QUICKSTART.md b/QUICKSTART.md new file mode 100644 index 0000000..4b8d755 --- /dev/null +++ b/QUICKSTART.md @@ -0,0 +1,334 @@ +# Quick Start Guide + +Get sexy.pivoine.art running in under 5 minutes using pre-built Docker images. + +## Prerequisites + +- Docker 20.10+ +- Docker Compose 2.0+ (optional) + +## Option 1: Docker Run (Fastest) + +### Step 1: Pull the Image + +```bash +docker pull ghcr.io/valknarxxx/sexy:latest +``` + +### Step 2: Create Environment File + +```bash +cat > .env.production << EOF +PUBLIC_API_URL=https://api.your-domain.com +PUBLIC_URL=https://your-domain.com +PUBLIC_UMAMI_ID= +LETTERSPACE_API_URL= +LETTERSPACE_API_KEY= +LETTERSPACE_LIST_ID= +EOF +``` + +### Step 3: Run the Container + +```bash +docker run -d \ + --name sexy-pivoine \ + -p 3000:3000 \ + --env-file .env.production \ + --restart unless-stopped \ + ghcr.io/valknarxxx/sexy:latest +``` + +### Step 4: Verify + +```bash +# Check if running +docker ps | grep sexy-pivoine + +# Check logs +docker logs -f sexy-pivoine + +# Test the application +curl http://localhost:3000 +``` + +Your application is now running at `http://localhost:3000` 🎉 + +## Option 2: Docker Compose (Recommended) + +### Step 1: Download docker-compose.production.yml + +```bash +curl -O https://raw.githubusercontent.com/valknarxxx/sexy/main/docker-compose.production.yml +``` + +Or if you have the repository: + +```bash +cd /path/to/sexy.pivoine.art +``` + +### Step 2: Create Environment File + +```bash +cp .env.production.example .env.production +nano .env.production # Edit with your values +``` + +### Step 3: Start Services + +```bash +docker-compose -f docker-compose.production.yml up -d +``` + +### Step 4: Monitor + +```bash +# View logs +docker-compose -f docker-compose.production.yml logs -f + +# Check status +docker-compose -f docker-compose.production.yml ps +``` + +Your application is now running at `http://localhost:3000` 🎉 + +## Accessing Private Images + +If the image is in a private registry: + +### Step 1: Create GitHub Personal Access Token + +1. Go to https://github.com/settings/tokens +2. Click "Generate new token (classic)" +3. Select scope: `read:packages` +4. Generate and copy the token + +### Step 2: Login to GitHub Container Registry + +```bash +echo YOUR_GITHUB_TOKEN | docker login ghcr.io -u YOUR_GITHUB_USERNAME --password-stdin +``` + +### Step 3: Pull and Run + +Now you can pull private images: + +```bash +docker pull ghcr.io/valknarxxx/sexy:latest +``` + +## Environment Variables + +### Required + +| Variable | Description | Example | +|----------|-------------|---------| +| `PUBLIC_API_URL` | Directus API endpoint | `https://api.pivoine.art` | +| `PUBLIC_URL` | Frontend URL | `https://sexy.pivoine.art` | + +### Optional + +| Variable | Description | Example | +|----------|-------------|---------| +| `PUBLIC_UMAMI_ID` | Analytics tracking ID | `abc-123-def` | +| `LETTERSPACE_API_URL` | Newsletter API | `https://api.letterspace.com/v1` | +| `LETTERSPACE_API_KEY` | Newsletter API key | `sk_live_...` | +| `LETTERSPACE_LIST_ID` | Mailing list ID | `list_abc123` | + +## Common Commands + +### View Logs + +```bash +# Follow logs (Docker Run) +docker logs -f sexy-pivoine + +# Follow logs (Docker Compose) +docker-compose -f docker-compose.production.yml logs -f +``` + +### Restart Container + +```bash +# Docker Run +docker restart sexy-pivoine + +# Docker Compose +docker-compose -f docker-compose.production.yml restart +``` + +### Stop Container + +```bash +# Docker Run +docker stop sexy-pivoine + +# Docker Compose +docker-compose -f docker-compose.production.yml down +``` + +### Update to Latest Version + +```bash +# Docker Run +docker pull ghcr.io/valknarxxx/sexy:latest +docker stop sexy-pivoine +docker rm sexy-pivoine +# Then re-run the docker run command from Step 3 + +# Docker Compose +docker-compose -f docker-compose.production.yml pull +docker-compose -f docker-compose.production.yml up -d +``` + +### Shell Access + +```bash +# Docker Run +docker exec -it sexy-pivoine sh + +# Docker Compose +docker-compose -f docker-compose.production.yml exec frontend sh +``` + +## Available Image Tags + +| Tag | Description | Use Case | +|-----|-------------|----------| +| `latest` | Latest stable build from main | Production | +| `v1.0.0` | Specific version | Production (pinned) | +| `develop` | Latest from develop branch | Staging | +| `main-abc123` | Specific commit | Testing | + +**Best Practice:** Use version tags in production for predictable deployments. + +## Production Deployment + +### 1. Use Version Tags + +```bash +# Instead of :latest +docker pull ghcr.io/valknarxxx/sexy:v1.0.0 +``` + +### 2. Add Resource Limits + +```bash +docker run -d \ + --name sexy-pivoine \ + -p 3000:3000 \ + --env-file .env.production \ + --memory="2g" \ + --cpus="2" \ + --restart unless-stopped \ + ghcr.io/valknarxxx/sexy:v1.0.0 +``` + +### 3. Use a Reverse Proxy + +Example with nginx: + +```nginx +server { + listen 80; + server_name sexy.pivoine.art; + + location / { + proxy_pass http://localhost:3000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + } +} +``` + +### 4. Enable HTTPS + +Use Certbot or similar: + +```bash +certbot --nginx -d sexy.pivoine.art +``` + +## Health Check + +The container includes a built-in health check: + +```bash +# Check container health +docker inspect --format='{{.State.Health.Status}}' sexy-pivoine +``` + +Possible statuses: +- `starting` - Container just started +- `healthy` - Application is responding +- `unhealthy` - Application is not responding + +## Troubleshooting + +### Container Exits Immediately + +```bash +# Check logs +docker logs sexy-pivoine + +# Common issues: +# - Missing environment variables +# - Port 3000 already in use +# - Invalid environment variable values +``` + +### Cannot Pull Image + +```bash +# For private images, ensure you're logged in +docker login ghcr.io + +# Check if image exists +docker pull ghcr.io/valknarxxx/sexy:latest +``` + +### Port Already in Use + +```bash +# Use a different port +docker run -d -p 8080:3000 ghcr.io/valknarxxx/sexy:latest + +# Or find what's using port 3000 +lsof -i :3000 +``` + +### Application Not Accessible + +```bash +# Check if container is running +docker ps | grep sexy-pivoine + +# Check logs +docker logs sexy-pivoine + +# Verify port mapping +docker port sexy-pivoine + +# Test from inside container +docker exec sexy-pivoine wget -O- http://localhost:3000 +``` + +## Next Steps + +- **Production setup:** See [DOCKER.md](DOCKER.md) +- **Development:** See [CLAUDE.md](CLAUDE.md) +- **CI/CD:** See [.github/workflows/README.md](.github/workflows/README.md) + +## Support + +- **Issues:** https://github.com/valknarxxx/sexy/issues +- **Discussions:** https://github.com/valknarxxx/sexy/discussions +- **Security:** Report privately via GitHub Security tab + +## License + +See [LICENSE](LICENSE) file for details. diff --git a/README.md b/README.md index 53db1af..2734d66 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,213 @@ -# pornsuper +# sexy.pivoine.art -## Prerequisites +An adult content platform built with SvelteKit, Directus CMS, and hardware integration via Buttplug.io. -1. Install node 20.19.1 -2. `corepack enable` -3. `pnpm install` -4. `cargo install wasm-bindgen-cli` +[![Build and Push Docker Image](https://github.com/valknarxxx/sexy/actions/workflows/docker-build-push.yml/badge.svg)](https://github.com/valknarxxx/sexy/actions/workflows/docker-build-push.yml) +[![Docker Image Security Scan](https://github.com/valknarxxx/sexy/actions/workflows/docker-scan.yml/badge.svg)](https://github.com/valknarxxx/sexy/actions/workflows/docker-scan.yml) + +## Quick Start + +### Using Docker (Recommended) + +```bash +# Pull and run the latest image +docker pull ghcr.io/valknarxxx/sexy:latest +docker run -d -p 3000:3000 \ + -e PUBLIC_API_URL=https://api.your-domain.com \ + -e PUBLIC_URL=https://your-domain.com \ + ghcr.io/valknarxxx/sexy:latest +``` + +See [QUICKSTART.md](QUICKSTART.md) for detailed instructions. + +### Local Development + +**Prerequisites:** + +1. Install Node.js 20.19.1 +2. Enable corepack: `corepack enable` +3. Install dependencies: `pnpm install` +4. Install Rust and wasm-bindgen: `cargo install wasm-bindgen-cli` + +**Start development environment:** + +```bash +# Start all services (Docker Compose + frontend) +pnpm dev + +# Or start individually +pnpm dev:data # Start data services +pnpm dev:directus # Start Directus CMS +pnpm --filter @sexy.pivoine.art/frontend dev # Start frontend +``` + +Access the application at `http://localhost:3000` + +## Project Structure + +This is a pnpm monorepo with three packages: + +- **`packages/frontend`** - SvelteKit application with Tailwind CSS 4 +- **`packages/bundle`** - Directus extensions (endpoints, hooks, themes) +- **`packages/buttplug`** - Hardware control library (TypeScript + Rust/WASM) + +## Documentation + +- **[QUICKSTART.md](QUICKSTART.md)** - Get running in 5 minutes with Docker +- **[DOCKER.md](DOCKER.md)** - Comprehensive Docker deployment guide +- **[CLAUDE.md](CLAUDE.md)** - Development guide and architecture +- **[.github/workflows/README.md](.github/workflows/README.md)** - CI/CD workflows + +## Building + +### Build All Packages + +```bash +pnpm install +pnpm --filter @sexy.pivoine.art/buttplug build:wasm +pnpm --filter @sexy.pivoine.art/buttplug build +pnpm --filter @sexy.pivoine.art/frontend build +pnpm --filter @sexy.pivoine.art/bundle build +``` + +### Build Docker Image + +```bash +# Using the build script +./build.sh + +# Or manually +docker build -t sexy.pivoine.art:latest . + +# Multi-platform +docker buildx build --platform linux/amd64,linux/arm64 -t sexy.pivoine.art:latest . +``` + +## Deployment + +### Production with Docker + +```bash +# Using docker-compose +cp .env.production.example .env.production +# Edit .env.production with your values +docker-compose -f docker-compose.production.yml up -d +``` + +### Production without Docker + +```bash +# Build all packages +pnpm build:frontend + +# Start the server +pnpm --filter @sexy.pivoine.art/frontend start +``` + +## Features + +- 🎨 Modern SvelteKit frontend with Tailwind CSS 4 +- 🗄️ Headless CMS powered by Directus +- 🎮 Hardware integration via Buttplug.io +- 🌐 Multi-platform support (AMD64/ARM64) +- 🔒 Session-based authentication +- 📱 Responsive design with bits-ui components +- 🌍 Internationalization support (i18n) +- 📊 Built-in analytics integration (Umami) +- 📧 Newsletter integration (Letterspace) + +## Technology Stack + +### Frontend +- **Framework:** SvelteKit 2 +- **Styling:** Tailwind CSS 4 +- **UI Components:** bits-ui, custom component library +- **Build Tool:** Vite +- **Deployment:** Node.js adapter + +### Backend +- **CMS:** Directus (headless) +- **Extensions:** Custom endpoints, hooks, and themes +- **Database:** PostgreSQL (via Directus) + +### Hardware +- **Library:** Buttplug.io +- **Languages:** TypeScript + Rust (compiled to WASM) +- **Protocols:** WebBluetooth API + +### DevOps +- **Containerization:** Docker + Docker Compose +- **CI/CD:** GitHub Actions +- **Registry:** GitHub Container Registry (GHCR) +- **Security:** Trivy vulnerability scanning + +## Environment Variables + +### Required + +- `PUBLIC_API_URL` - Directus API endpoint +- `PUBLIC_URL` - Frontend application URL + +### Optional + +- `PUBLIC_UMAMI_ID` - Umami analytics tracking ID +- `LETTERSPACE_API_URL` - Newsletter API endpoint +- `LETTERSPACE_API_KEY` - Newsletter API key +- `LETTERSPACE_LIST_ID` - Mailing list identifier + +See [.env.production.example](.env.production.example) for full reference. + +## Development Workflow + +1. Make changes to code +2. Test locally with `pnpm dev` +3. Create a feature branch +4. Push and create PR (triggers CI build) +5. Merge to `main` (triggers production build) +6. Tag release: `git tag v1.0.0 && git push origin v1.0.0` + +## CI/CD Pipeline + +Automated workflows handle: + +- ✅ Multi-platform Docker builds (AMD64 + ARM64) +- ✅ Automated publishing to GHCR +- ✅ Daily security vulnerability scans +- ✅ Weekly cleanup of old images +- ✅ Semantic versioning from git tags + +Images are available at: `ghcr.io/valknarxxx/sexy` + +## Contributing + +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Ensure tests pass (when implemented) +5. Submit a pull request + +## Security + +- Docker images are scanned daily for vulnerabilities +- Security reports available in GitHub Security tab +- Report security issues privately via GitHub Security + +## License + +See [LICENSE](LICENSE) file for details. + +## Support + +- **Issues:** [GitHub Issues](https://github.com/valknarxxx/sexy/issues) +- **Discussions:** [GitHub Discussions](https://github.com/valknarxxx/sexy/discussions) + +## Acknowledgments + +- Built with [SvelteKit](https://kit.svelte.dev/) +- Powered by [Directus](https://directus.io/) +- Hardware control via [Buttplug.io](https://buttplug.io/) +- UI components from [bits-ui](https://www.bits-ui.com/) + +--- + +**Note:** This is an adult content platform. Users must be 18+ or the age of majority in their jurisdiction. diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..58aebff --- /dev/null +++ b/build.sh @@ -0,0 +1,130 @@ +#!/bin/bash +# Build script for sexy.pivoine.art Docker image + +set -e # Exit on error + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Default values +IMAGE_NAME="sexy.pivoine.art" +TAG="latest" +PUSH=false +PLATFORM="" + +# Parse arguments +while [[ $# -gt 0 ]]; do + case $1 in + -t|--tag) + TAG="$2" + shift 2 + ;; + -n|--name) + IMAGE_NAME="$2" + shift 2 + ;; + -p|--push) + PUSH=true + shift + ;; + --platform) + PLATFORM="$2" + shift 2 + ;; + -h|--help) + echo "Usage: $0 [OPTIONS]" + echo "" + echo "Options:" + echo " -t, --tag TAG Set image tag (default: latest)" + echo " -n, --name NAME Set image name (default: sexy.pivoine.art)" + echo " -p, --push Push image after build" + echo " --platform PLATFORM Build for specific platform (e.g., linux/amd64,linux/arm64)" + echo " -h, --help Show this help message" + echo "" + echo "Examples:" + echo " $0 # Build with defaults" + echo " $0 -t v1.0.0 # Build with version tag" + echo " $0 --platform linux/amd64,linux/arm64 -p # Multi-platform build and push" + exit 0 + ;; + *) + echo -e "${RED}Unknown option: $1${NC}" + exit 1 + ;; + esac +done + +FULL_IMAGE="${IMAGE_NAME}:${TAG}" + +echo -e "${GREEN}=== Building Docker Image ===${NC}" +echo "Image: ${FULL_IMAGE}" +echo "Platform: ${PLATFORM:-default}" +echo "" + +# Check if Docker is running +if ! docker info > /dev/null 2>&1; then + echo -e "${RED}Error: Docker is not running${NC}" + exit 1 +fi + +# Build command +BUILD_CMD="docker build" + +if [ -n "$PLATFORM" ]; then + # Multi-platform build requires buildx + echo -e "${YELLOW}Using buildx for multi-platform build${NC}" + BUILD_CMD="docker buildx build --platform ${PLATFORM}" + + if [ "$PUSH" = true ]; then + BUILD_CMD="${BUILD_CMD} --push" + fi +else + # Regular build + if [ "$PUSH" = true ]; then + echo -e "${YELLOW}Note: --push only works with multi-platform builds. Use 'docker push' after build.${NC}" + fi +fi + +# Execute build +echo -e "${GREEN}Building...${NC}" +$BUILD_CMD -t "${FULL_IMAGE}" . + +if [ $? -eq 0 ]; then + echo -e "${GREEN}✓ Build successful!${NC}" + echo "Image: ${FULL_IMAGE}" + + # Show image size + if [ -z "$PLATFORM" ]; then + SIZE=$(docker images "${FULL_IMAGE}" --format "{{.Size}}") + echo "Size: ${SIZE}" + fi + + # Push if requested and not multi-platform + if [ "$PUSH" = true ] && [ -z "$PLATFORM" ]; then + echo -e "${GREEN}Pushing image...${NC}" + docker push "${FULL_IMAGE}" + if [ $? -eq 0 ]; then + echo -e "${GREEN}✓ Push successful!${NC}" + else + echo -e "${RED}✗ Push failed${NC}" + exit 1 + fi + fi + + echo "" + echo -e "${GREEN}Next steps:${NC}" + echo "1. Run locally:" + echo " docker run -d -p 3000:3000 --env-file .env.production ${FULL_IMAGE}" + echo "" + echo "2. Run with docker-compose:" + echo " docker-compose -f docker-compose.production.yml up -d" + echo "" + echo "3. View logs:" + echo " docker logs -f " +else + echo -e "${RED}✗ Build failed${NC}" + exit 1 +fi diff --git a/docker-compose.production.yml b/docker-compose.production.yml new file mode 100644 index 0000000..5959bee --- /dev/null +++ b/docker-compose.production.yml @@ -0,0 +1,71 @@ +version: '3.8' + +services: + frontend: + # Use pre-built image from GitHub Container Registry + # To build locally instead, uncomment the 'build' section and comment out 'image' + image: ghcr.io/valknarxxx/sexy:latest + + # Uncomment to build locally: + # build: + # context: . + # dockerfile: Dockerfile + # args: + # NODE_ENV: production + container_name: sexy-pivoine-frontend + restart: unless-stopped + ports: + - "3000:3000" + environment: + # Application settings + NODE_ENV: production + PORT: 3000 + HOST: 0.0.0.0 + + # Public environment variables + PUBLIC_API_URL: ${PUBLIC_API_URL:-http://localhost:8055} + PUBLIC_URL: ${PUBLIC_URL:-http://localhost:3000} + PUBLIC_UMAMI_ID: ${PUBLIC_UMAMI_ID:-} + + # Letterspace integration + LETTERSPACE_API_URL: ${LETTERSPACE_API_URL:-} + LETTERSPACE_API_KEY: ${LETTERSPACE_API_KEY:-} + LETTERSPACE_LIST_ID: ${LETTERSPACE_LIST_ID:-} + + networks: + - sexy-network + + healthcheck: + test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"] + interval: 30s + timeout: 3s + retries: 3 + start_period: 40s + + # Resource limits + deploy: + resources: + limits: + cpus: '2' + memory: 2G + reservations: + cpus: '0.5' + memory: 512M + + # Logging + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + +networks: + sexy-network: + driver: bridge + +# Example usage: +# 1. Create a .env file with your environment variables +# 2. Build: docker-compose -f docker-compose.production.yml build +# 3. Run: docker-compose -f docker-compose.production.yml up -d +# 4. Logs: docker-compose -f docker-compose.production.yml logs -f +# 5. Stop: docker-compose -f docker-compose.production.yml down diff --git a/package.json b/package.json index 8ce3f39..24beed7 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,11 @@ "packageManager": "pnpm@10.17.0+sha512.fce8a3dd29a4ed2ec566fb53efbb04d8c44a0f05bc6f24a73046910fb9c3ce7afa35a0980500668fa3573345bd644644fa98338fa168235c80f4aa17aa17fbef", "pnpm": { "onlyBuiltDependencies": [ + "@parcel/watcher", + "es5-ext", + "esbuild", "svelte-preprocess", - "vue-demi" + "wasm-pack" ], "ignoredBuiltDependencies": [ "@tailwindcss/oxide", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 1441836..ed55811 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -1,50 +1,48 @@ { - "name": "@sexy.pivoine.art/frontend", - "version": "1.0.0", - "author": "valknarogg", - "type": "module", - "private": true, - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview", - "start": "node ./build" - }, - "devDependencies": { - "@iconify-json/ri": "^1.2.5", - "@iconify/tailwind4": "^1.0.6", - "@internationalized/date": "^3.8.2", - "@lucide/svelte": "^0.544.0", - "@sveltejs/adapter-node": "^5.3.1", - "@sveltejs/adapter-static": "^3.0.9", - "@sveltejs/kit": "^2.37.0", - "@sveltejs/vite-plugin-svelte": "^6.1.4", - "@tailwindcss/forms": "^0.5.9", - "@tailwindcss/typography": "^0.5.15", - "@tailwindcss/vite": "^4.0.0", - "@tsconfig/svelte": "^5.0.5", - "bits-ui": "2.11.0", - "clsx": "^2.1.1", - "glob": "^11.0.3", - "mode-watcher": "^1.1.0", - "prettier-plugin-svelte": "^3.4.0", - "super-sitemap": "^1.0.5", - "svelte": "^5.38.6", - "svelte-sonner": "^1.0.5", - "tailwind-merge": "^3.3.1", - "tailwind-variants": "^1.0.0", - "tailwindcss": "^4.0.0", - "tw-animate-css": "^1.3.8", - "typescript": "^5.9.2", - "vite": "^7.1.4" - }, - "dependencies": { - "@directus/sdk": "^20.0.3", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/auto-instrumentations-node": "^0.64.6", - "@sexy.pivoine.art/buttplug": "workspace:*", - "javascript-time-ago": "^2.5.11", - "media-chrome": "^4.13.1", - "svelte-i18n": "^4.0.1" - } + "name": "@sexy.pivoine.art/frontend", + "version": "1.0.0", + "author": "valknarogg", + "type": "module", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "start": "node ./build" + }, + "devDependencies": { + "@iconify-json/ri": "^1.2.5", + "@iconify/tailwind4": "^1.0.6", + "@internationalized/date": "^3.8.2", + "@lucide/svelte": "^0.544.0", + "@sveltejs/adapter-node": "^5.3.1", + "@sveltejs/adapter-static": "^3.0.9", + "@sveltejs/kit": "^2.37.0", + "@sveltejs/vite-plugin-svelte": "^6.1.4", + "@tailwindcss/forms": "^0.5.9", + "@tailwindcss/typography": "^0.5.15", + "@tailwindcss/vite": "^4.0.0", + "@tsconfig/svelte": "^5.0.5", + "bits-ui": "2.11.0", + "clsx": "^2.1.1", + "glob": "^11.0.3", + "mode-watcher": "^1.1.0", + "prettier-plugin-svelte": "^3.4.0", + "super-sitemap": "^1.0.5", + "svelte": "^5.38.6", + "svelte-sonner": "^1.0.5", + "tailwind-merge": "^3.3.1", + "tailwind-variants": "^1.0.0", + "tailwindcss": "^4.0.0", + "tw-animate-css": "^1.3.8", + "typescript": "^5.9.2", + "vite": "^7.1.4" + }, + "dependencies": { + "@directus/sdk": "^20.0.3", + "@sexy.pivoine.art/buttplug": "workspace:*", + "javascript-time-ago": "^2.5.11", + "media-chrome": "^4.13.1", + "svelte-i18n": "^4.0.1" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2aa38fb..82d9dec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,12 +54,6 @@ importers: '@directus/sdk': specifier: ^20.0.3 version: 20.0.3 - '@opentelemetry/api': - specifier: ^1.9.0 - version: 1.9.0 - '@opentelemetry/auto-instrumentations-node': - specifier: ^0.64.6 - version: 0.64.6(@opentelemetry/api@1.9.0)(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0)) '@sexy.pivoine.art/buttplug': specifier: workspace:* version: link:../buttplug @@ -742,15 +736,6 @@ packages: '@formatjs/intl-localematcher@0.6.1': resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} - '@grpc/grpc-js@1.14.0': - resolution: {integrity: sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==} - engines: {node: '>=12.10.0'} - - '@grpc/proto-loader@0.8.0': - resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} - engines: {node: '>=6'} - hasBin: true - '@hapi/address@5.1.1': resolution: {integrity: sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==} engines: {node: '>=14.0.0'} @@ -966,463 +951,15 @@ packages: '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} - '@js-sdsl/ordered-map@4.4.2': - resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - '@lucide/svelte@0.544.0': resolution: {integrity: sha512-9f9O6uxng2pLB01sxNySHduJN3HTl5p0HDu4H26VR51vhZfiMzyOMe9Mhof3XAk4l813eTtl+/DYRvGyoRR+yw==} peerDependencies: svelte: ^5 - '@opentelemetry/api-logs@0.205.0': - resolution: {integrity: sha512-wBlPk1nFB37Hsm+3Qy73yQSobVn28F4isnWIBvKpd5IUH/eat8bwcL02H9yzmHyyPmukeccSl2mbN5sDQZYnPg==} - engines: {node: '>=8.0.0'} - '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/auto-instrumentations-node@0.64.6': - resolution: {integrity: sha512-8oIzHcEX5uEgJ/5hiStl7MhpPTLk8mywZPHIYWo5UiEiTkvc5uYjv/TyOGeiDhcjzo0nhvm7a6Y+eonq3m1sLQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.4.1 - '@opentelemetry/core': ^2.0.0 - - '@opentelemetry/context-async-hooks@2.1.0': - resolution: {integrity: sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/core@2.1.0': - resolution: {integrity: sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/exporter-logs-otlp-grpc@0.205.0': - resolution: {integrity: sha512-jQlw7OHbqZ8zPt+pOrW2KGN7T55P50e3NXBMr4ckPOF+DWDwSy4W7mkG09GpYWlQAQ5C9BXg5gfUlv5ldTgWsw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-logs-otlp-http@0.205.0': - resolution: {integrity: sha512-5JteMyVWiro4ghF0tHQjfE6OJcF7UBUcoEqX3UIQ5jutKP1H+fxFdyhqjjpmeHMFxzOHaYuLlNR1Bn7FOjGyJg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-logs-otlp-proto@0.205.0': - resolution: {integrity: sha512-q3VS9wS+lpZ01txKxiDGBtBpTNge3YhbVEFDgem9ZQR9eI3EZ68+9tVZH9zJcSxI37nZPJ6lEEZO58yEjYZsVA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-metrics-otlp-grpc@0.205.0': - resolution: {integrity: sha512-1Vxlo4lUwqSKYX+phFkXHKYR3DolFHxCku6lVMP1H8sVE3oj4wwmwxMzDsJ7zF+sXd8M0FCr+ckK4SnNNKkV+w==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-metrics-otlp-http@0.205.0': - resolution: {integrity: sha512-fFxNQ/HbbpLmh1pgU6HUVbFD1kNIjrkoluoKJkh88+gnmpFD92kMQ8WFNjPnSbjg2mNVnEkeKXgCYEowNW+p1w==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-metrics-otlp-proto@0.205.0': - resolution: {integrity: sha512-qIbNnedw9QfFjwpx4NQvdgjK3j3R2kWH/2T+7WXAm1IfMFe9fwatYxE61i7li4CIJKf8HgUC3GS8Du0C3D+AuQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-prometheus@0.205.0': - resolution: {integrity: sha512-xsot/Qm9VLDTag4GEwAunD1XR1U8eBHTLAgO7IZNo2JuD/c/vL7xmDP7mQIUr6Lk3gtj/yGGIR2h3vhTeVzv4w==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-trace-otlp-grpc@0.205.0': - resolution: {integrity: sha512-ZBksUk84CcQOuDJB65yu5A4PORkC4qEsskNwCrPZxDLeWjPOFZNSWt0E0jQxKCY8PskLhjNXJYo12YaqsYvGFA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-trace-otlp-http@0.205.0': - resolution: {integrity: sha512-vr2bwwPCSc9u7rbKc74jR+DXFvyMFQo9o5zs+H/fgbK672Whw/1izUKVf+xfWOdJOvuwTnfWxy+VAY+4TSo74Q==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-trace-otlp-proto@0.205.0': - resolution: {integrity: sha512-bGtFzqiENO2GpJk988mOBMe0MfeNpTQjbLm/LBijas6VRyEDQarUzdBHpFlu89A25k1+BCntdWGsWTa9Ai4FyA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/exporter-zipkin@2.1.0': - resolution: {integrity: sha512-0mEI0VDZrrX9t5RE1FhAyGz+jAGt96HSuXu73leswtY3L5YZD11gtcpARY2KAx/s6Z2+rj5Mhj566JsI2C7mfA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - - '@opentelemetry/instrumentation-amqplib@0.52.3': - resolution: {integrity: sha512-QlAPNC4lsZ5v1Xy62gRrSk1ow5Bmdm1BDIwiuDUkRjsQ+LjtLfoI5mwGSn6fASYKHqNRBDrYXX4ibmiD/PqNHA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-aws-lambda@0.57.2': - resolution: {integrity: sha512-yT9nUUDW7K0HSXihfhUbMk4sULA4VRqFGCfTGdqTFQ01lS5EMUUscDxCq4DCD3ZFMbK9wwbZxURxdm94x7YkZA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-aws-sdk@0.61.2': - resolution: {integrity: sha512-5tzZ9hcgAx4j+7st9i3pUcmQduRa94gFZGhRRsIQFbH07nIJ1SNwJFMC6WoQ/+WQkwaK/aF5Qw5LS0J+mrI+yg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-bunyan@0.51.4': - resolution: {integrity: sha512-SObxTjC8l/FcxNitNy/+NT1xBEwCXIZkg8CPRMu3f1Q3a095ee89Z3dHInSj/DWZnxH8hUxAhMU+rG3dIuYgkA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-cassandra-driver@0.51.3': - resolution: {integrity: sha512-ICwlV29HFQO/vbDw+f1H65+OKkktsHS7huRO430l9q4AE/gGXcaepypwN8QHs0/gX2PFWovVQ7Dw4Rml/4Y86g==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-connect@0.49.2': - resolution: {integrity: sha512-e0Yhz4Q3qb99kqosdNm1OAG1zlswqnTnsBl7wc/p6al6bdaEMSPbSME8pbaKltvHeW0RnmXVvOzu9OD4shvl+Q==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-cucumber@0.21.2': - resolution: {integrity: sha512-G9fiMEmNb1icrRZOTobqEoUNfyoa2qwkABPAhyGWZt290jHfXWPBI2baGhZKsR00Y+X1HGzn12J536acbubqlw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - - '@opentelemetry/instrumentation-dataloader@0.23.3': - resolution: {integrity: sha512-DUxM3tsOxuxA12BFzYHgcuRfI885iiI+VptGe3v0uE16hmVeOB7DiVetoOfpPSke/ePtVHmFAR4fgfDuI93ugQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-dns@0.49.2': - resolution: {integrity: sha512-J4gyDoXR5s35O0iG/eOZUz3Iu6twFxYiPD5kAI1fAOmkSB60oRjJseOSd9L5UBS5ghD1kTRh9VEIek6PP2w5Gw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-express@0.54.3': - resolution: {integrity: sha512-bJeZ5Mtt7medH7i2iTbLdWUKdtrhllJh4Wzf7lonE2VyTxRt848hXn+ZsCjgvtPXCIH5pVF0bgtMCwpI1z+01A==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-fastify@0.50.3': - resolution: {integrity: sha512-ZLKIIx+zz7qpoeBlzOENks4u0rjysICIYGXjhyFpS/Jjo5b17FLL3ULACGq0ApCRC+ruVR0Hb2OGyqlVE7oEEQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-fs@0.25.2': - resolution: {integrity: sha512-KA2Yw7xQPNbRooZvZ7K/zwYG1kshrXEfI6uCTgTJ/hs357kYVIulXYZ8Q65Dkccd0PGzQJ/e4YFx8RW4gQT9WQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-generic-pool@0.49.2': - resolution: {integrity: sha512-mh32irpVMxWiaHld+Xfuje6uCE1HNJgVKi1w0OBp/Y1WnkGS2E6sDVcWujqX2UnEMmJj5+WYHJBXJJqFVgF8LA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-graphql@0.53.3': - resolution: {integrity: sha512-18PAQESPdHIGs0lvaVdPp2D1tLcQezbxIGGUS3eNszfWRDxfqE/XCcCOyJKSrhBw1djuvE+KVf9ej/DVyV28SQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-grpc@0.205.0': - resolution: {integrity: sha512-IB5eKpb/7/x+tyWUVIIyY5KcAtODy/YbcDKPdnlJl8sMCFPByjNxti/lzOfPajYBPOXsN91g7H7cN0L1aSlerQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-hapi@0.52.3': - resolution: {integrity: sha512-r/9ysT/Fksq4dvJ1DBKcBQ/5Ah8mMxwcsAFxtuRso20tXSGrM9BYKquK8eY7jKvNpfIc5xMRJMhuAD4/NviZdQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-http@0.205.0': - resolution: {integrity: sha512-6fOgRlV7ypBuEzCQP7vXkLQxz3UL1FhE24rAlMRbwGvPAnZLvutcG/fq9FI/n+VU23dOpYexocYsXCf5oy/AXw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-ioredis@0.53.3': - resolution: {integrity: sha512-afCzr4OSHWDfvVRx5ni92zEgNPoq2akoe+/nubWkGPKHFLsJwYO/ihAaky1i6m9d3tBO571g9rlnUvDlvoKSoQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-kafkajs@0.15.3': - resolution: {integrity: sha512-2HnNz6kDkuCjiZQHM7lCarzCs8uCMqrr04mhEgDLNDha0Dy341NjDTlWbgtNWNuN5vYeIP8/8g6iw0Ann22DbA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-knex@0.50.2': - resolution: {integrity: sha512-pSQHrJFNpAs/FPam3FCp+aCWSjiaK4BpnXm70W0q6+T5IvkTVkRWFye80pw1zS4JRMh93U3OcJoKwP1M6nL62A==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-koa@0.54.2': - resolution: {integrity: sha512-xJrP3ayEE4bY9kr7eHvi2P2rou9O+ALUTUo+TcJj2wEp1LFpucY87UyHJrmiJ6proGVgbbDgXJsxn7a5G0ABRA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.9.0 - - '@opentelemetry/instrumentation-lru-memoizer@0.50.3': - resolution: {integrity: sha512-6Y2mL7Wk36lspfdOBST3vQQi1grXHvieeAd18LPtljyzCI5gCr6wBKp2Bpj82lMOYZ/O6w8gqIJMv0KjC6ZfSA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-memcached@0.49.3': - resolution: {integrity: sha512-TfK46vWMVc7o5a2QyC64P6HCTdaPuxEIEhtDUWRGSlK0grZp8BKyTXy5kpMD8u7+azzhEmyrHjkm95ld38CuDg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-mongodb@0.58.3': - resolution: {integrity: sha512-19MwzolRIceDoZ4LPl2S0h2eI/8nLdA50Bqz6ERF4Uhk5ZUZO5aHNmsIpjJF+zxvXX3Gsa5A8WK0hm5nO5Ng7w==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-mongoose@0.52.3': - resolution: {integrity: sha512-dieUbMnfwqxR8nNZyr21zFuYJs5zDu7E9uODjowg6ftK14bY638ryDhc2W4Gc4Z89PlxoUkCHunViXQBG6Q0Ew==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-mysql2@0.52.3': - resolution: {integrity: sha512-LhAl41NORbYimktfOMYOXJ483YYjL4OsjA9psRDshX56JOhQL/oL88LZbR+Jx4lEnOKMvrKk3VLqBZLa4KPIrA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-mysql@0.51.3': - resolution: {integrity: sha512-wHvyPQayIF4tqWpgwALnQAj/aTgTD7GOSEvA4PQZFvqYrUtnWXQ4df9NspLikhH3C8girq3c4s2UGk39LDL3tw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-nestjs-core@0.52.2': - resolution: {integrity: sha512-kL91hPGEjUI08VcDJeNwYKP2EpynAnymF0wr4Irqp5uHeyvE/hTX4R3DmpDP80IZ/aQ5WVxuWiaBlVP7cERu/w==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-net@0.49.2': - resolution: {integrity: sha512-rfFpCIxDMMSeUKVg3xCyGGfAANxNP4BHqFAcChWDbFSL8Y9a9ztqR7TPidKgiLb+fbKfrr9ZupwdMeKJH+zsOA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-oracledb@0.31.3': - resolution: {integrity: sha512-8lxYujVWhR+bRUGCZZFTEslRKQOlpjm27wIJvsk3e7Yb1s8g5PMQqUr+7U4hPGJX+GpvF4qszJZe6lX/6pfzbg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-pg@0.58.3': - resolution: {integrity: sha512-eGyrTHDx3WA9JiCbBQO1OUc8B9InqCJvC87uY1hSuOXU6HtawCEml1epuAVQY3cizK7Tc3IH0EYSR/q4w/kHyw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-pino@0.52.3': - resolution: {integrity: sha512-GPFxhqgmW7wNdwq5rGu8vA/YswUdF84m3p00cH12S8rb9MVKUdNdPlUROO85xE0O0yI1yfNkRzZ+l0R4iZIOrg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-redis@0.54.4': - resolution: {integrity: sha512-/XBICeY+tYZ04YNX6R2UKBgjCqj+xeLUKGJrbu8r4fGHV+hMsjLH9754xtdpuay1fecE7neCu4dX3Fr1NLWIEQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-restify@0.51.2': - resolution: {integrity: sha512-B4LMIDdgIpQw73J1qNoBRnhmvwS/gqnpzCwcddHv0zGNbK/+RntTEFRAZ8erfRYK/Kaz77DqmeoeCTHxatIoqw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-router@0.50.2': - resolution: {integrity: sha512-S0+ZL5cmV4FuCkJq70Ar6pnAHVbSmRH8BziUJ3PIeLKTsx193XKZeHDSo27841GFsrNF7VVWnFEbnYxhynn/MQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-runtime-node@0.19.2': - resolution: {integrity: sha512-sMDfMY5Be0HfK84bEN0M+FgGpyswfP6N90AGyZO3wK14DfvOQ542AWwyHos5vvpRFzDBm57y7OMqyaH//o9jDg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-socket.io@0.52.3': - resolution: {integrity: sha512-Ryy1FJ9EnHjj9HUcLIoIZNqJkq1B4+78sCBBb3IMylzAS+IVdojz7K/9bwHDj4o+o1oHo/G337ML71ZY/Q4krw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-tedious@0.24.3': - resolution: {integrity: sha512-3qVIWFQ0R0EkGU6zIX/jhKFDU2QirLSR5Z44RIcRHw4rDgrpwujoz46moDqvKHysPTA7vMTsHEzg5bP6dgok3w==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation-undici@0.16.2': - resolution: {integrity: sha512-JU0TOlwK472KxJl+4Gnf0H7UkZMZJtombC0x1D3dZ6BjES3teOzUEOvupifHmLSgZ7dlMvEK8xBMz5D2La0N5g==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.7.0 - - '@opentelemetry/instrumentation-winston@0.50.2': - resolution: {integrity: sha512-vrS7ozNmB+S3v6z9vyFZXPXQ8ygTdWA9alPnEc10JYupvN1YRKQNspSRkx12dsrqsbkbybo/Dk9SFdbhKGrpeg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation@0.205.0': - resolution: {integrity: sha512-cgvm7tvQdu9Qo7VurJP84wJ7ZV9F6WqDDGZpUc6rUEXwjV7/bXWs0kaYp9v+1Vh1+3TZCD3i6j/lUBcPhu8NhA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/otlp-exporter-base@0.205.0': - resolution: {integrity: sha512-2MN0C1IiKyo34M6NZzD6P9Nv9Dfuz3OJ3rkZwzFmF6xzjDfqqCTatc9v1EpNfaP55iDOCLHFyYNCgs61FFgtUQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/otlp-grpc-exporter-base@0.205.0': - resolution: {integrity: sha512-AeuLfrciGYffqsp4EUTdYYc6Ee2BQS+hr08mHZk1C524SFWx0WnfcTnV0NFXbVURUNU6DZu1DhS89zRRrcx/hg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/otlp-transformer@0.205.0': - resolution: {integrity: sha512-KmObgqPtk9k/XTlWPJHdMbGCylRAmMJNXIRh6VYJmvlRDMfe+DonH41G7eenG8t4FXn3fxOGh14o/WiMRR6vPg==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/propagator-b3@2.1.0': - resolution: {integrity: sha512-yOdHmFseIChYanddMMz0mJIFQHyjwbNhoxc65fEAA8yanxcBPwoFDoh1+WBUWAO/Z0NRgk+k87d+aFIzAZhcBw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/propagator-jaeger@2.1.0': - resolution: {integrity: sha512-QYo7vLyMjrBCUTpwQBF/e+rvP7oGskrSELGxhSvLj5gpM0az9oJnu/0O4l2Nm7LEhAff80ntRYKkAcSwVgvSVQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/redis-common@0.38.2': - resolution: {integrity: sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==} - engines: {node: ^18.19.0 || >=20.6.0} - - '@opentelemetry/resource-detector-alibaba-cloud@0.31.8': - resolution: {integrity: sha512-wq3IrSro0/YttSL+CrAhjsH72RhsAAOTNrpm6PJT5CyFaMCQCV6FOgGftxHb+vw4/gvPmYKeNnCxkPpzhkimvw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - - '@opentelemetry/resource-detector-aws@2.5.3': - resolution: {integrity: sha512-PpaQBwa0cDi4nHYxgVbmDJWNyBN7WOXH41XfInWN/kAHqVw8nO4L/s4IoN9pEnJSSin3Z9oA1CyIiy2rxj5R3A==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - - '@opentelemetry/resource-detector-azure@0.13.2': - resolution: {integrity: sha512-YdRHZHdyDh6QcCkMK3eL/Nf0erN7xrz2TFRhN/DUAPaAzg0fECmq555B4lcxPsK9NeZajVOBvHu3z95ZAKYFdw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - - '@opentelemetry/resource-detector-container@0.7.8': - resolution: {integrity: sha512-PW7FjoJxqC2cFbEI3C5rIevSNT9KHcS1mNM7L1CxPXFIBleV0S4nYSolblE5uh+NHw+FIzxy0VETitUfr23TtQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - - '@opentelemetry/resource-detector-gcp@0.40.3': - resolution: {integrity: sha512-C796YjBA5P1JQldovApYfFA/8bQwFfpxjUbOtGhn1YZkVTLoNQN+kvBwgALfTPWzug6fWsd0xhn9dzeiUcndag==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.0.0 - - '@opentelemetry/resources@2.1.0': - resolution: {integrity: sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - - '@opentelemetry/sdk-logs@0.205.0': - resolution: {integrity: sha512-nyqhNQ6eEzPWQU60Nc7+A5LIq8fz3UeIzdEVBQYefB4+msJZ2vuVtRuk9KxPMw1uHoHDtYEwkr2Ct0iG29jU8w==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.4.0 <1.10.0' - - '@opentelemetry/sdk-metrics@2.1.0': - resolution: {integrity: sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.9.0 <1.10.0' - - '@opentelemetry/sdk-node@0.205.0': - resolution: {integrity: sha512-Y4Wcs8scj/Wy1u61pX1ggqPXPtCsGaqx/UnFu7BtRQE1zCQR+b0h56K7I0jz7U2bRlPUZIFdnNLtoaJSMNzz2g==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - - '@opentelemetry/sdk-trace-base@2.1.0': - resolution: {integrity: sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - - '@opentelemetry/sdk-trace-node@2.1.0': - resolution: {integrity: sha512-SvVlBFc/jI96u/mmlKm86n9BbTCbQ35nsPoOohqJX6DXH92K0kTe73zGY5r8xoI1QkjR9PizszVJLzMC966y9Q==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' - - '@opentelemetry/semantic-conventions@1.37.0': - resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} - engines: {node: '>=14'} - - '@opentelemetry/sql-common@0.41.2': - resolution: {integrity: sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -1508,36 +1045,6 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@rolldown/pluginutils@1.0.0-beta.29': resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} @@ -1979,15 +1486,9 @@ packages: '@tsconfig/svelte@5.0.5': resolution: {integrity: sha512-48fAnUjKye38FvMiNOj0J9I/4XlQQiZlpe9xaNPfe8vy2Y1hFBt8g1yqf2EGjVvHavo4jf2lC+TQyENCr4BJBQ==} - '@types/aws-lambda@8.10.152': - resolution: {integrity: sha512-soT/c2gYBnT5ygwiHPmd9a1bftj462NWVk2tKCc1PYHSIacB2UwbTS2zYG4jzag1mRDuzg/OjtxQjQ2NKRB6Rw==} - '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} - '@types/bunyan@1.8.11': - resolution: {integrity: sha512-758fRH7umIMk5qt5ELmRMff4mLDlN+xyYzC+dkPTdKwbSkJFvz6xwyScrytPU0QIBbRRwbiE8/BIg8bpajerNQ==} - '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -2009,30 +1510,15 @@ packages: '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} - '@types/memcached@2.2.10': - resolution: {integrity: sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==} - '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/mysql@2.15.27': - resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==} - '@types/node@24.0.15': resolution: {integrity: sha512-oaeTSbCef7U/z7rDeJA138xpG3NuKc64/rZ2qmUFkFJmnMsAPaluIifqyWd8hSSMxyP9oie3dLAqYPblag9KgA==} '@types/nodemailer@6.4.17': resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==} - '@types/oracledb@6.5.2': - resolution: {integrity: sha512-kK1eBS/Adeyis+3OlBDMeQQuasIDLUYXsi2T15ccNJ0iyUpQ4xDF7svFu3+bGVrI0CMBUclPciz+lsQR3JX3TQ==} - - '@types/pg-pool@2.0.6': - resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} - - '@types/pg@8.15.5': - resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} - '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} @@ -2048,9 +1534,6 @@ packages: '@types/serve-static@1.15.8': resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} - '@types/tedious@4.0.14': - resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} - '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -2098,20 +1581,11 @@ packages: '@vue/shared@3.5.18': resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==} - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} - ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -2170,9 +1644,6 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bignumber.js@9.3.1: - resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} - binary-install@1.1.2: resolution: {integrity: sha512-ZS2cqFHPZOy4wLxvzqfQvDjCOifn+7uCPqNmYRIBM/03+yllON+4fNnsD0VJdW0p97y+E+dTRNPStWNqMBq+9g==} engines: {node: '>=10'} @@ -2245,9 +1716,6 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - class-transformer@0.5.1: resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} @@ -2267,10 +1735,6 @@ packages: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -2602,9 +2066,6 @@ packages: ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - fast-xml-parser@4.5.3: resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} hasBin: true @@ -2661,9 +2122,6 @@ packages: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} - forwarded-parse@2.1.2: - resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} - fs-extra@11.3.0: resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} @@ -2683,18 +2141,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gaxios@6.7.1: - resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} - engines: {node: '>=14'} - - gcp-metadata@6.1.1: - resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} - engines: {node: '>=14'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.4.0: resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} @@ -2740,10 +2186,6 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - google-logging-utils@0.0.2: - resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} - engines: {node: '>=14'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -2770,10 +2212,6 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - human-signals@8.0.1: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} @@ -2795,9 +2233,6 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-in-the-middle@1.14.4: - resolution: {integrity: sha512-eWjxh735SJLFJJDs5X82JQ2405OdJeAHDBnaoFCfdr5GVc7AWc9xU7KbrF+3Xd5F2ccP1aQFKtY+65X6EfKZ7A==} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -2867,10 +2302,6 @@ packages: is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - is-stream@4.0.1: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} @@ -2908,9 +2339,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -3058,9 +2486,6 @@ packages: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} - long@5.3.2: - resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} - lru-cache@11.2.2: resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} engines: {node: 20 || >=22} @@ -3157,9 +2582,6 @@ packages: peerDependencies: svelte: ^5.27.0 - module-details-from-path@1.0.4: - resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} - mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -3194,15 +2616,6 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -3279,17 +2692,6 @@ packages: pg-connection-string@2.6.2: resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-protocol@1.10.3: - resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3517,22 +2919,6 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - engines: {node: '>=0.10.0'} - - postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - - postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - prettier-plugin-svelte@3.4.0: resolution: {integrity: sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==} peerDependencies: @@ -3548,10 +2934,6 @@ packages: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} - protobufjs@7.5.4: - resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} - engines: {node: '>=12.0.0'} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -3587,14 +2969,6 @@ packages: relative-time-format@1.1.6: resolution: {integrity: sha512-aCv3juQw4hT1/P/OrVltKWLlp15eW1GRcwP1XdxHrPdZE9MtgqFpegjnTjLhi2m2WI9MT/hQQtE+tjEWG1hgkQ==} - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-in-the-middle@7.5.2: - resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} - engines: {node: '>=8.6.0'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -3897,9 +3271,6 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -3956,10 +3327,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - vite-plugin-wasm@3.5.0: resolution: {integrity: sha512-X5VWgCnqiQEGb+omhlBVsvTfxikKtoOgAzQ95+BZ8gQ+VfMHIjSHr0wyvXFQCa0eKQ0fKyaL0kWcEnYqBac4lQ==} peerDependencies: @@ -4081,12 +3448,6 @@ packages: resolution: {integrity: sha512-P9exD4YkjpDbw68xUhF3MDm/CC/3eTmmthyG5bHJ56kalxOTewOunxTke4SyF8MTXV6jUtNjXggPgrGmMtczGg==} hasBin: true - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -4127,14 +3488,6 @@ packages: utf-8-validate: optional: true - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -4142,14 +3495,6 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - yoctocolors-cjs@2.1.2: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} @@ -4621,18 +3966,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@grpc/grpc-js@1.14.0': - dependencies: - '@grpc/proto-loader': 0.8.0 - '@js-sdsl/ordered-map': 4.4.2 - - '@grpc/proto-loader@0.8.0': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.3.2 - protobufjs: 7.5.4 - yargs: 17.7.2 - '@hapi/address@5.1.1': dependencies: '@hapi/hoek': 11.0.7 @@ -4861,667 +4194,12 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.4 - '@js-sdsl/ordered-map@4.4.2': {} - '@lucide/svelte@0.544.0(svelte@5.38.6)': dependencies: svelte: 5.38.6 - '@opentelemetry/api-logs@0.205.0': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/api@1.9.0': {} - - '@opentelemetry/auto-instrumentations-node@0.64.6(@opentelemetry/api@1.9.0)(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-amqplib': 0.52.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-aws-lambda': 0.57.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-aws-sdk': 0.61.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-bunyan': 0.51.4(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-cassandra-driver': 0.51.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-connect': 0.49.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-cucumber': 0.21.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-dataloader': 0.23.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-dns': 0.49.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-express': 0.54.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fastify': 0.50.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fs': 0.25.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-generic-pool': 0.49.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-graphql': 0.53.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-grpc': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-hapi': 0.52.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-http': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-ioredis': 0.53.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-kafkajs': 0.15.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-knex': 0.50.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-koa': 0.54.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-lru-memoizer': 0.50.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-memcached': 0.49.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongodb': 0.58.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongoose': 0.52.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql': 0.51.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql2': 0.52.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-nestjs-core': 0.52.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-net': 0.49.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-oracledb': 0.31.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-pg': 0.58.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-pino': 0.52.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-redis': 0.54.4(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-restify': 0.51.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-router': 0.50.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-runtime-node': 0.19.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-socket.io': 0.52.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-tedious': 0.24.3(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-undici': 0.16.2(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-winston': 0.50.2(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-alibaba-cloud': 0.31.8(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-aws': 2.5.3(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-azure': 0.13.2(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-container': 0.7.8(@opentelemetry/api@1.9.0) - '@opentelemetry/resource-detector-gcp': 0.40.3(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-node': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - encoding - - supports-color - - '@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - - '@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.37.0 - - '@opentelemetry/exporter-logs-otlp-grpc@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@grpc/grpc-js': 1.14.0 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.205.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-logs-otlp-http@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.205.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.205.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-logs-otlp-proto@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.205.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-metrics-otlp-grpc@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@grpc/grpc-js': 1.14.0 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-metrics-otlp-http@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-metrics-otlp-proto@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-prometheus@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-trace-otlp-grpc@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@grpc/grpc-js': 1.14.0 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-trace-otlp-http@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-trace-otlp-proto@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/exporter-zipkin@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - - '@opentelemetry/instrumentation-amqplib@0.52.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-aws-lambda@0.57.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - '@types/aws-lambda': 8.10.152 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-aws-sdk@0.61.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-bunyan@0.51.4(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.205.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@types/bunyan': 1.8.11 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-cassandra-driver@0.51.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-connect@0.49.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - '@types/connect': 3.4.38 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-cucumber@0.21.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-dataloader@0.23.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-dns@0.49.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-express@0.54.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-fastify@0.50.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-fs@0.25.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-generic-pool@0.49.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-graphql@0.53.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-grpc@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-hapi@0.52.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-http@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - forwarded-parse: 2.1.2 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-ioredis@0.53.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.38.2 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-kafkajs@0.15.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-knex@0.50.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-koa@0.54.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-lru-memoizer@0.50.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-memcached@0.49.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@types/memcached': 2.2.10 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-mongodb@0.58.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-mongoose@0.52.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-mysql2@0.52.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-mysql@0.51.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@types/mysql': 2.15.27 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-nestjs-core@0.52.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-net@0.49.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-oracledb@0.31.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - '@types/oracledb': 6.5.2 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-pg@0.58.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) - '@types/pg': 8.15.5 - '@types/pg-pool': 2.0.6 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-pino@0.52.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.205.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-redis@0.54.4(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.38.2 - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-restify@0.51.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-router@0.50.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-runtime-node@0.19.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-socket.io@0.52.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-tedious@0.24.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@types/tedious': 4.0.14 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-undici@0.16.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation-winston@0.50.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.205.0 - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color - - '@opentelemetry/instrumentation@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.205.0 - import-in-the-middle: 1.14.4 - require-in-the-middle: 7.5.2 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/otlp-exporter-base@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/otlp-grpc-exporter-base@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@grpc/grpc-js': 1.14.0 - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.205.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/otlp-transformer@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.205.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) - protobufjs: 7.5.4 - - '@opentelemetry/propagator-b3@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/propagator-jaeger@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/redis-common@0.38.2': {} - - '@opentelemetry/resource-detector-alibaba-cloud@0.31.8(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/resource-detector-aws@2.5.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - - '@opentelemetry/resource-detector-azure@0.13.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - - '@opentelemetry/resource-detector-container@0.7.8(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/resource-detector-gcp@0.40.3(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - gcp-metadata: 6.1.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@opentelemetry/resources@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - - '@opentelemetry/sdk-logs@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.205.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/sdk-metrics@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/sdk-node@0.205.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.205.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-grpc': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-http': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-logs-otlp-proto': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-grpc': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-http': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-metrics-otlp-proto': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-prometheus': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-grpc': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-http': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-trace-otlp-proto': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/exporter-zipkin': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-b3': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-jaeger': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.205.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-node': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - transitivePeerDependencies: - - supports-color - - '@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 - - '@opentelemetry/sdk-trace-node@2.1.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) - - '@opentelemetry/semantic-conventions@1.37.0': {} - - '@opentelemetry/sql-common@0.41.2(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api@1.9.0': + optional: true '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -5586,29 +4264,6 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@protobufjs/aspromise@1.1.2': {} - - '@protobufjs/base64@1.1.2': {} - - '@protobufjs/codegen@2.0.4': {} - - '@protobufjs/eventemitter@1.1.0': {} - - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - '@protobufjs/float@1.0.2': {} - - '@protobufjs/inquire@1.1.0': {} - - '@protobufjs/path@1.1.2': {} - - '@protobufjs/pool@1.1.0': {} - - '@protobufjs/utf8@1.1.0': {} - '@rolldown/pluginutils@1.0.0-beta.29': {} '@rollup/plugin-commonjs@28.0.6(rollup@4.46.2)': @@ -5988,17 +4643,11 @@ snapshots: '@tsconfig/svelte@5.0.5': {} - '@types/aws-lambda@8.10.152': {} - '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 '@types/node': 24.0.15 - '@types/bunyan@1.8.11': - dependencies: - '@types/node': 24.0.15 - '@types/connect@3.4.38': dependencies: '@types/node': 24.0.15 @@ -6025,16 +4674,8 @@ snapshots: '@types/http-errors@2.0.5': {} - '@types/memcached@2.2.10': - dependencies: - '@types/node': 24.0.15 - '@types/mime@1.3.5': {} - '@types/mysql@2.15.27': - dependencies: - '@types/node': 24.0.15 - '@types/node@24.0.15': dependencies: undici-types: 7.8.0 @@ -6043,20 +4684,6 @@ snapshots: dependencies: '@types/node': 24.0.15 - '@types/oracledb@6.5.2': - dependencies: - '@types/node': 24.0.15 - - '@types/pg-pool@2.0.6': - dependencies: - '@types/pg': 8.15.5 - - '@types/pg@8.15.5': - dependencies: - '@types/node': 24.0.15 - pg-protocol: 1.10.3 - pg-types: 2.2.0 - '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} @@ -6074,10 +4701,6 @@ snapshots: '@types/node': 24.0.15 '@types/send': 0.17.5 - '@types/tedious@4.0.14': - dependencies: - '@types/node': 24.0.15 - '@types/ws@8.18.1': dependencies: '@types/node': 24.0.15 @@ -6150,14 +4773,8 @@ snapshots: '@vue/shared@3.5.18': {} - acorn-import-attributes@1.9.5(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - acorn@8.15.0: {} - agent-base@7.1.4: {} - ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -6206,8 +4823,6 @@ snapshots: balanced-match@1.0.2: {} - bignumber.js@9.3.1: {} - binary-install@1.1.2: dependencies: axios: 0.26.1 @@ -6287,8 +4902,6 @@ snapshots: chownr@3.0.0: {} - cjs-module-lexer@1.4.3: {} - class-transformer@0.5.1: {} cli-color@2.0.4: @@ -6307,12 +4920,6 @@ snapshots: cli-width@4.1.0: {} - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - clsx@2.1.1: {} color-convert@1.9.3: @@ -6718,8 +5325,6 @@ snapshots: dependencies: type: 2.7.3 - extend@3.0.2: {} - fast-xml-parser@4.5.3: dependencies: strnum: 1.1.2 @@ -6765,8 +5370,6 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 - forwarded-parse@2.1.2: {} - fs-extra@11.3.0: dependencies: graceful-fs: 4.2.11 @@ -6784,28 +5387,6 @@ snapshots: function-bind@1.1.2: {} - gaxios@6.7.1: - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.6 - is-stream: 2.0.1 - node-fetch: 2.7.0 - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - - gcp-metadata@6.1.1: - dependencies: - gaxios: 6.7.1 - google-logging-utils: 0.0.2 - json-bigint: 1.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - get-caller-file@2.0.5: {} - get-east-asian-width@1.4.0: {} get-intrinsic@1.3.0: @@ -6863,8 +5444,6 @@ snapshots: globrex@0.1.2: {} - google-logging-utils@0.0.2: {} - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -6883,13 +5462,6 @@ snapshots: hookable@5.5.3: {} - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.4 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - human-signals@8.0.1: {} iconv-lite@0.7.0: @@ -6908,13 +5480,6 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-in-the-middle@1.14.4: - dependencies: - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) - cjs-module-lexer: 1.4.3 - module-details-from-path: 1.0.4 - inflight@1.0.6: dependencies: once: 1.4.0 @@ -6980,8 +5545,6 @@ snapshots: dependencies: '@types/estree': 1.0.8 - is-stream@2.0.1: {} - is-stream@4.0.1: {} is-unicode-supported@1.3.0: {} @@ -7016,10 +5579,6 @@ snapshots: dependencies: argparse: 2.0.1 - json-bigint@1.0.0: - dependencies: - bignumber.js: 9.3.1 - json-parse-even-better-errors@2.3.1: {} jsonfile@6.1.0: @@ -7129,8 +5688,6 @@ snapshots: chalk: 5.4.1 is-unicode-supported: 1.3.0 - long@5.3.2: {} - lru-cache@11.2.2: {} lru-queue@0.1.0: @@ -7224,8 +5781,6 @@ snapshots: svelte: 5.38.6 svelte-toolbelt: 0.7.1(svelte@5.38.6) - module-details-from-path@1.0.4: {} - mri@1.2.0: {} mrmime@2.0.1: {} @@ -7245,10 +5800,6 @@ snapshots: node-addon-api@7.1.1: optional: true - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - node-releases@2.0.19: {} npm-run-path@6.0.0: @@ -7323,18 +5874,6 @@ snapshots: pg-connection-string@2.6.2: {} - pg-int8@1.0.1: {} - - pg-protocol@1.10.3: {} - - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - picocolors@1.1.1: {} picomatch@2.3.1: @@ -7552,16 +6091,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postgres-array@2.0.0: {} - - postgres-bytea@1.0.0: {} - - postgres-date@1.0.7: {} - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - prettier-plugin-svelte@3.4.0(prettier@3.6.2)(svelte@5.38.6): dependencies: prettier: 3.6.2 @@ -7573,21 +6102,6 @@ snapshots: dependencies: parse-ms: 4.0.0 - protobufjs@7.5.4: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 24.0.15 - long: 5.3.2 - proxy-from-env@1.1.0: {} quansync@0.2.11: {} @@ -7617,16 +6131,6 @@ snapshots: relative-time-format@1.1.6: {} - require-directory@2.1.1: {} - - require-in-the-middle@7.5.2: - dependencies: - debug: 4.4.1 - module-details-from-path: 1.0.4 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -8009,8 +6513,6 @@ snapshots: totalist@3.0.1: {} - tr46@0.0.3: {} - tslib@2.8.1: {} tw-animate-css@1.3.8: {} @@ -8050,8 +6552,6 @@ snapshots: util-deprecate@1.0.2: {} - uuid@9.0.1: {} - vite-plugin-wasm@3.5.0(vite@7.1.4(@types/node@24.0.15)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.43.1)): dependencies: vite: 7.1.4(@types/node@24.0.15)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.92.1)(terser@5.43.1) @@ -8118,13 +6618,6 @@ snapshots: transitivePeerDependencies: - debug - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which@1.3.1: dependencies: isexe: 2.0.0 @@ -8160,26 +6653,10 @@ snapshots: ws@8.18.3: {} - xtend@4.0.2: {} - - y18n@5.0.8: {} - yallist@4.0.0: {} yallist@5.0.0: {} - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - yoctocolors-cjs@2.1.2: {} yoctocolors@2.1.2: {}