You've already forked domainstack.io
mirror of
https://github.com/jakejarvis/domainstack.io.git
synced 2025-12-02 19:33:48 -05:00
Random v2 cleanup
This commit is contained in:
23
.env.example
23
.env.example
@@ -1,27 +1,26 @@
|
||||
# Public PostHog keys for analytics/error tracking
|
||||
NEXT_PUBLIC_POSTHOG_KEY=
|
||||
# PostHog keys for analytics/error tracking and build-time sourcemap uploads
|
||||
NEXT_PUBLIC_POSTHOG_HOST=
|
||||
NEXT_PUBLIC_POSTHOG_KEY=
|
||||
POSTHOG_API_KEY=
|
||||
POSTHOG_ENV_ID=
|
||||
|
||||
# Postgres credentials (set by Neon integration)
|
||||
DATABASE_URL=
|
||||
|
||||
# Redis credentials (set by Upstash integration)
|
||||
KV_REST_API_URL=
|
||||
KV_REST_API_TOKEN=
|
||||
|
||||
# UploadThing credentials
|
||||
UPLOADTHING_SECRET=
|
||||
UPLOADTHING_APP_ID=
|
||||
KV_REST_API_URL=
|
||||
|
||||
# Inngest credentials (set by Inngest integration)
|
||||
INNGEST_EVENT_KEY=
|
||||
INNGEST_SIGNING_KEY=
|
||||
|
||||
# Mapbox access token for react-map-gl
|
||||
# UploadThing credentials
|
||||
UPLOADTHING_APP_ID=
|
||||
UPLOADTHING_SECRET=
|
||||
|
||||
# Mapbox public token for react-map-gl
|
||||
NEXT_PUBLIC_MAPBOX_TOKEN=
|
||||
|
||||
# Secret used by Vercel to authenticate cron job endpoints
|
||||
CRON_SECRET=
|
||||
|
||||
# Optional: override user agent for upstream fetches
|
||||
# Optional: override user agent sent with upstream requests
|
||||
EXTERNAL_USER_AGENT=
|
||||
|
||||
97
.github/copilot-instructions.md
vendored
97
.github/copilot-instructions.md
vendored
@@ -1,97 +0,0 @@
|
||||
# GitHub Copilot Instructions for Domainstack
|
||||
|
||||
This repository contains Domainstack, a domain intelligence tool built with Next.js 15 and React 19. Please follow these guidelines when assisting with code in this repository.
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- **AGENTS.md** - Contains detailed repository guidelines for project structure, coding conventions, testing, and security
|
||||
- **README.md** - Project overview, features, tech stack, and getting started instructions
|
||||
|
||||
Refer to these files for comprehensive information about the repository's architecture and development practices.
|
||||
|
||||
## Project Overview
|
||||
|
||||
Domainstack is an all-in-one app for exploring domain names, providing instant insights including WHOIS info, DNS records, SSL certificates, HTTP headers, hosting details, and geolocation. The app features a modern, interactive UI with dark mode support and fast, privacy-focused data fetching with caching.
|
||||
|
||||
## Project Structure & Module Organization
|
||||
|
||||
- `app/` - Next.js App Router with server components by default. Keep `app/page.tsx` and `app/api/*` thin and delegate to `server/` or `lib/`.
|
||||
- `components/` - Reusable UI primitives (kebab-case files, PascalCase exports).
|
||||
- `hooks/` - Shared stateful helpers (camelCase named exports).
|
||||
- `lib/` - Domain utilities and caching (`lib/cache`). Import via `@/...` aliases.
|
||||
- `server/` - Backend integrations and tRPC routers. Isolate DNS, RDAP/WHOIS, TLS, headers, and screenshot services.
|
||||
- `public/` - Static assets. Tailwind v4 tokens live in `app/globals.css`. Update `instrumentation-client.ts` when adding analytics.
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Next.js 15** with Turbopack
|
||||
- **React 19** with React Compiler
|
||||
- **TypeScript** (strict mode enabled)
|
||||
- **Tailwind CSS v4**
|
||||
- **tRPC** for API endpoints
|
||||
- **Upstash Redis** for caching
|
||||
- **UploadThing** for favicon and screenshot storage
|
||||
- **Puppeteer Core + @sparticuz/chromium** for server screenshots (fallback to `puppeteer` locally)
|
||||
- **Biome** for linting and formatting
|
||||
|
||||
## Development Commands
|
||||
|
||||
- `pnpm dev` - Start dev server at http://localhost:3000
|
||||
- `pnpm build` - Compile production bundle
|
||||
- `pnpm start` - Serve compiled output for smoke tests
|
||||
- `pnpm lint` - Run Biome lint + type-aware checks (`--write` to fix)
|
||||
- `pnpm format` - Apply Biome formatting
|
||||
- `pnpm typecheck` - Run `tsc --noEmit` for stricter diagnostics
|
||||
- `pnpm test:run` - Run test suite
|
||||
|
||||
## Coding Style & Conventions
|
||||
|
||||
- **TypeScript only** with `strict` mode enabled
|
||||
- Prefer small, pure modules (≈≤300 LOC)
|
||||
- **2-space indentation**
|
||||
- Files/folders: **kebab-case**
|
||||
- Exports: **PascalCase** for components, **camelCase** for helpers
|
||||
- Client components must begin with `"use client"`
|
||||
- Consolidate imports via `@/...` aliases
|
||||
- Keep page roots lean, delegate to `server/` or `lib/`
|
||||
|
||||
## Key Domain Analysis Features
|
||||
|
||||
### Data Sources & Services
|
||||
- **RDAP/WHOIS** - Domain registration information via `rdapper`
|
||||
- **DNS Resolution** - A/AAAA/MX/NS/TXT via Cloudflare DoH
|
||||
- **TLS/SSL Certificates** - Chain analysis
|
||||
- **HTTP Headers** - Security headers and tech detection
|
||||
- **Geolocation** - IP → map
|
||||
- **Favicon & Screenshot Storage** - UploadThing with Redis index
|
||||
|
||||
- Service: `server/services/screenshot.ts` using Puppeteer.
|
||||
- Storage: `lib/storage.ts` uploads via UploadThing and returns `{ url, key }` stored in Redis with TTLs.
|
||||
- Client UI: `components/domain/screenshot.tsx` and `components/domain/screenshot-tooltip.tsx` with optimized loading state and one-time fetch gating.
|
||||
- Router: `server/routers/domain.ts` exposes `domain.screenshot` via `createDomainProcedure`.
|
||||
- Config: prefer `puppeteer-core` + `@sparticuz/chromium` on Vercel; fallback to `puppeteer` locally. In `next.config.ts`, `serverExternalPackages: ["@sparticuz/chromium", "puppeteer-core"]`.
|
||||
- Env:
|
||||
- `UPLOADTHING_SECRET` (required)
|
||||
- `UPLOADTHING_APP_ID` (recommended)
|
||||
- `SCREENSHOT_TTL_SECONDS` (optional, default 7 days)
|
||||
- `EXTERNAL_USER_AGENT` (optional UA override)
|
||||
- `PUPPETEER_SKIP_DOWNLOAD=1` on Vercel to skip full puppeteer install
|
||||
|
||||
### Cron Upload Pruning
|
||||
- Route: `app/api/cron/blob-prune/route.ts` (GET only, Bearer auth via `CRON_SECRET`).
|
||||
- Deletes expired UploadThing files by key from `purge:favicon` and `purge:screenshot` ZSETs; batch size configurable via `PURGE_BATCH`.
|
||||
|
||||
## Testing Guidelines
|
||||
- Runner: **Vitest**; environment `jsdom` by default; Node tests with `/* @vitest-environment node */`.
|
||||
- Setup: `vitest.setup.ts` mocks analytics, `server-only`, and Redis.
|
||||
- UI tests: prefer behavior tests; mock Radix primitives and TRPC/React Query as needed.
|
||||
- Server tests: hoisted ESM mocks; unique cache domains; reset Redis between tests.
|
||||
- New tests:
|
||||
- `server/services/screenshot.test.ts` mocks puppeteer and UploadThing storage.
|
||||
- `lib/storage.test.ts` covers upload helpers.
|
||||
|
||||
## Security & Configuration
|
||||
- Keep secrets in `.env.local`
|
||||
- Review `server/trpc.ts` when extending routers
|
||||
- Validate all external inputs with Zod
|
||||
- Use `server-only` imports for sensitive modules
|
||||
6
.vscode/extensions.json
vendored
Normal file
6
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"biomejs.biome",
|
||||
"vitest.explorer"
|
||||
]
|
||||
}
|
||||
12
AGENTS.md
12
AGENTS.md
@@ -6,6 +6,8 @@
|
||||
- `hooks/` shared stateful helpers (camelCase named exports).
|
||||
- `lib/` domain utilities and caching (`lib/cache`); import via `@/...` aliases.
|
||||
- `server/` backend integrations and tRPC routers; isolate DNS, RDAP/WHOIS, TLS, and header probing services.
|
||||
- `server/db/` Drizzle ORM schema, migrations, and repository layer for Postgres persistence.
|
||||
- `server/inngest/` Inngest functions for background jobs and scheduled section revalidation.
|
||||
- `public/` static assets; Tailwind v4 tokens live in `app/globals.css`. Update `instrumentation-client.ts` when adding analytics.
|
||||
|
||||
## Build, Test, and Development Commands
|
||||
@@ -15,6 +17,12 @@
|
||||
- `pnpm lint` — run Biome lint + type-aware checks (`--write` to fix).
|
||||
- `pnpm format` — apply Biome formatting.
|
||||
- `pnpm typecheck` — run `tsc --noEmit` for stricter diagnostics.
|
||||
- `pnpm db:generate` — generate Drizzle migrations.
|
||||
- `pnpm db:push` — push the current schema to the database.
|
||||
- `pnpm db:migrate` — apply migrations to the database.
|
||||
- `pnpm db:studio` — open Drizzle Studio.
|
||||
- `pnpm db:seed:providers` — seed known provider rules.
|
||||
- Requires Node.js >= 22 (see `package.json` engines).
|
||||
|
||||
## Coding Style & Naming Conventions
|
||||
- TypeScript only, `strict` enabled; prefer small, pure modules (≈≤300 LOC).
|
||||
@@ -27,6 +35,7 @@
|
||||
- Mocks analytics clients/servers and `server-only`.
|
||||
- Centralized Redis mock exposed via `global.__redisTestHelper` for consistent state and resets.
|
||||
- `unstable_cache` mocked as a no-op; caching behavior is not under test.
|
||||
- Database in tests: Drizzle client is not globally mocked. Replace `@/server/db/client` with a PGlite-backed instance when needed.
|
||||
- UI tests:
|
||||
- Do not add direct tests for `components/ui/*` (shadcn).
|
||||
- Mock Radix primitives (Accordion, Tooltip) when testing domain sections.
|
||||
@@ -46,5 +55,6 @@
|
||||
## Security & Configuration Tips
|
||||
- Keep secrets in `.env.local`.
|
||||
- Screenshots (Puppeteer): prefer `puppeteer-core` + `@sparticuz/chromium` on Vercel.
|
||||
- Cache Cloudflare DoH, RDAP, TLS, and header probes via `lib/cache`; apply retry backoff to respect provider limits.
|
||||
- Persist domain data in Postgres via Drizzle; use Redis for short-lived caching/locks. Apply retry backoff to respect provider limits.
|
||||
- Background revalidation runs via Inngest functions (scheduled and event-driven).
|
||||
- Review `server/trpc.ts` when extending procedures to ensure auth/context remain intact.
|
||||
|
||||
13
biome.json
13
biome.json
@@ -7,7 +7,18 @@
|
||||
},
|
||||
"files": {
|
||||
"ignoreUnknown": true,
|
||||
"includes": ["**", "!node_modules", "!.next", "!dist", "!build", "!drizzle"]
|
||||
"includes": [
|
||||
"**",
|
||||
"!node_modules",
|
||||
"!.next",
|
||||
"!dist",
|
||||
"!build",
|
||||
"!coverage",
|
||||
"!drizzle",
|
||||
"!public",
|
||||
"!.github",
|
||||
"!.vscode"
|
||||
]
|
||||
},
|
||||
"formatter": {
|
||||
"enabled": true,
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
"@vitest/ui": "^3.2.4",
|
||||
"babel-plugin-react-compiler": "19.1.0-rc.3",
|
||||
"drizzle-kit": "^0.31.5",
|
||||
"jsdom": "^27.0.0",
|
||||
"jsdom": "^27.0.1",
|
||||
"puppeteer": "24.22.3",
|
||||
"tailwindcss": "^4.1.14",
|
||||
"tsx": "^4.20.6",
|
||||
|
||||
221
pnpm-lock.yaml
generated
221
pnpm-lock.yaml
generated
@@ -190,8 +190,8 @@ importers:
|
||||
specifier: ^0.31.5
|
||||
version: 0.31.5
|
||||
jsdom:
|
||||
specifier: ^27.0.0
|
||||
version: 27.0.0(postcss@8.5.6)
|
||||
specifier: ^27.0.1
|
||||
version: 27.0.1(postcss@8.5.6)
|
||||
puppeteer:
|
||||
specifier: 24.22.3
|
||||
version: 24.22.3(typescript@5.9.3)
|
||||
@@ -212,7 +212,7 @@ importers:
|
||||
version: 5.1.4(typescript@5.9.3)(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(lightningcss@1.30.1)(tsx@4.20.6))
|
||||
vitest:
|
||||
specifier: ^3.2.4
|
||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.8.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(tsx@4.20.6)
|
||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.8.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.6))(lightningcss@1.30.1)(tsx@4.20.6)
|
||||
|
||||
packages:
|
||||
|
||||
@@ -2258,113 +2258,113 @@ packages:
|
||||
'@rolldown/pluginutils@1.0.0-beta.38':
|
||||
resolution: {integrity: sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==}
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.52.4':
|
||||
resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==}
|
||||
'@rollup/rollup-android-arm-eabi@4.52.5':
|
||||
resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-android-arm64@4.52.4':
|
||||
resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==}
|
||||
'@rollup/rollup-android-arm64@4.52.5':
|
||||
resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.52.4':
|
||||
resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==}
|
||||
'@rollup/rollup-darwin-arm64@4.52.5':
|
||||
resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.52.4':
|
||||
resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==}
|
||||
'@rollup/rollup-darwin-x64@4.52.5':
|
||||
resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-freebsd-arm64@4.52.4':
|
||||
resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==}
|
||||
'@rollup/rollup-freebsd-arm64@4.52.5':
|
||||
resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-freebsd-x64@4.52.4':
|
||||
resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==}
|
||||
'@rollup/rollup-freebsd-x64@4.52.5':
|
||||
resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.52.4':
|
||||
resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==}
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
|
||||
resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.52.4':
|
||||
resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==}
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
|
||||
resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.52.4':
|
||||
resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==}
|
||||
'@rollup/rollup-linux-arm64-gnu@4.52.5':
|
||||
resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.52.4':
|
||||
resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==}
|
||||
'@rollup/rollup-linux-arm64-musl@4.52.5':
|
||||
resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-loong64-gnu@4.52.4':
|
||||
resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==}
|
||||
'@rollup/rollup-linux-loong64-gnu@4.52.5':
|
||||
resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-ppc64-gnu@4.52.4':
|
||||
resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==}
|
||||
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
|
||||
resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.52.4':
|
||||
resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==}
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
|
||||
resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-musl@4.52.4':
|
||||
resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==}
|
||||
'@rollup/rollup-linux-riscv64-musl@4.52.5':
|
||||
resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.52.4':
|
||||
resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==}
|
||||
'@rollup/rollup-linux-s390x-gnu@4.52.5':
|
||||
resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.52.4':
|
||||
resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==}
|
||||
'@rollup/rollup-linux-x64-gnu@4.52.5':
|
||||
resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.52.4':
|
||||
resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==}
|
||||
'@rollup/rollup-linux-x64-musl@4.52.5':
|
||||
resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@rollup/rollup-openharmony-arm64@4.52.4':
|
||||
resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==}
|
||||
'@rollup/rollup-openharmony-arm64@4.52.5':
|
||||
resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
|
||||
cpu: [arm64]
|
||||
os: [openharmony]
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.52.4':
|
||||
resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==}
|
||||
'@rollup/rollup-win32-arm64-msvc@4.52.5':
|
||||
resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.52.4':
|
||||
resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==}
|
||||
'@rollup/rollup-win32-ia32-msvc@4.52.5':
|
||||
resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-x64-gnu@4.52.4':
|
||||
resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==}
|
||||
'@rollup/rollup-win32-x64-gnu@4.52.5':
|
||||
resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.52.4':
|
||||
resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==}
|
||||
'@rollup/rollup-win32-x64-msvc@4.52.5':
|
||||
resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
@@ -2897,8 +2897,8 @@ packages:
|
||||
base64-js@1.5.1:
|
||||
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
||||
|
||||
baseline-browser-mapping@2.8.17:
|
||||
resolution: {integrity: sha512-j5zJcx6golJYTG6c05LUZ3Z8Gi+M62zRT/ycz4Xq4iCOdpcxwg7ngEYD4KA0eWZC7U17qh/Smq8bYbACJ0ipBA==}
|
||||
baseline-browser-mapping@2.8.18:
|
||||
resolution: {integrity: sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==}
|
||||
hasBin: true
|
||||
|
||||
basic-ftp@5.0.5:
|
||||
@@ -3757,8 +3757,8 @@ packages:
|
||||
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
||||
hasBin: true
|
||||
|
||||
jsdom@27.0.0:
|
||||
resolution: {integrity: sha512-lIHeR1qlIRrIN5VMccd8tI2Sgw6ieYXSVktcSHaNe3Z5nE/tcPQYQWOq00wxMvYOsz+73eAkNenVvmPC6bba9A==}
|
||||
jsdom@27.0.1:
|
||||
resolution: {integrity: sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==}
|
||||
engines: {node: '>=20'}
|
||||
peerDependencies:
|
||||
canvas: ^3.0.0
|
||||
@@ -4079,6 +4079,9 @@ packages:
|
||||
parse5@7.3.0:
|
||||
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
|
||||
|
||||
parse5@8.0.0:
|
||||
resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==}
|
||||
|
||||
path-key@3.1.1:
|
||||
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -4362,8 +4365,8 @@ packages:
|
||||
robust-predicates@2.0.4:
|
||||
resolution: {integrity: sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==}
|
||||
|
||||
rollup@4.52.4:
|
||||
resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==}
|
||||
rollup@4.52.5:
|
||||
resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
|
||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||
hasBin: true
|
||||
|
||||
@@ -7122,70 +7125,70 @@ snapshots:
|
||||
|
||||
'@rolldown/pluginutils@1.0.0-beta.38': {}
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.52.4':
|
||||
'@rollup/rollup-android-arm-eabi@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-android-arm64@4.52.4':
|
||||
'@rollup/rollup-android-arm64@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.52.4':
|
||||
'@rollup/rollup-darwin-arm64@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.52.4':
|
||||
'@rollup/rollup-darwin-x64@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-freebsd-arm64@4.52.4':
|
||||
'@rollup/rollup-freebsd-arm64@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-freebsd-x64@4.52.4':
|
||||
'@rollup/rollup-freebsd-x64@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.52.4':
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.52.4':
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.52.4':
|
||||
'@rollup/rollup-linux-arm64-gnu@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.52.4':
|
||||
'@rollup/rollup-linux-arm64-musl@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-loong64-gnu@4.52.4':
|
||||
'@rollup/rollup-linux-loong64-gnu@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-ppc64-gnu@4.52.4':
|
||||
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.52.4':
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-riscv64-musl@4.52.4':
|
||||
'@rollup/rollup-linux-riscv64-musl@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.52.4':
|
||||
'@rollup/rollup-linux-s390x-gnu@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.52.4':
|
||||
'@rollup/rollup-linux-x64-gnu@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.52.4':
|
||||
'@rollup/rollup-linux-x64-musl@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-openharmony-arm64@4.52.4':
|
||||
'@rollup/rollup-openharmony-arm64@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.52.4':
|
||||
'@rollup/rollup-win32-arm64-msvc@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.52.4':
|
||||
'@rollup/rollup-win32-ia32-msvc@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-x64-gnu@4.52.4':
|
||||
'@rollup/rollup-win32-x64-gnu@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.52.4':
|
||||
'@rollup/rollup-win32-x64-msvc@4.52.5':
|
||||
optional: true
|
||||
|
||||
'@sparticuz/chromium@140.0.0':
|
||||
@@ -7532,7 +7535,7 @@ snapshots:
|
||||
std-env: 3.10.0
|
||||
test-exclude: 7.0.1
|
||||
tinyrainbow: 2.0.0
|
||||
vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.8.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(tsx@4.20.6)
|
||||
vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.8.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.6))(lightningcss@1.30.1)(tsx@4.20.6)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -7581,7 +7584,7 @@ snapshots:
|
||||
sirv: 3.0.2
|
||||
tinyglobby: 0.2.15
|
||||
tinyrainbow: 2.0.0
|
||||
vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.8.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(tsx@4.20.6)
|
||||
vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.8.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.6))(lightningcss@1.30.1)(tsx@4.20.6)
|
||||
|
||||
'@vitest/utils@3.2.4':
|
||||
dependencies:
|
||||
@@ -7706,7 +7709,7 @@ snapshots:
|
||||
|
||||
base64-js@1.5.1: {}
|
||||
|
||||
baseline-browser-mapping@2.8.17: {}
|
||||
baseline-browser-mapping@2.8.18: {}
|
||||
|
||||
basic-ftp@5.0.5: {}
|
||||
|
||||
@@ -7726,7 +7729,7 @@ snapshots:
|
||||
|
||||
browserslist@4.26.3:
|
||||
dependencies:
|
||||
baseline-browser-mapping: 2.8.17
|
||||
baseline-browser-mapping: 2.8.18
|
||||
caniuse-lite: 1.0.30001751
|
||||
electron-to-chromium: 1.5.237
|
||||
node-releases: 2.0.25
|
||||
@@ -8549,7 +8552,7 @@ snapshots:
|
||||
dependencies:
|
||||
argparse: 2.0.1
|
||||
|
||||
jsdom@27.0.0(postcss@8.5.6):
|
||||
jsdom@27.0.1(postcss@8.5.6):
|
||||
dependencies:
|
||||
'@asamuzakjp/dom-selector': 6.7.2
|
||||
cssstyle: 5.3.1(postcss@8.5.6)
|
||||
@@ -8559,7 +8562,7 @@ snapshots:
|
||||
http-proxy-agent: 7.0.2
|
||||
https-proxy-agent: 7.0.6
|
||||
is-potential-custom-element-name: 1.0.1
|
||||
parse5: 7.3.0
|
||||
parse5: 8.0.0
|
||||
rrweb-cssom: 0.8.0
|
||||
saxes: 6.0.0
|
||||
symbol-tree: 3.2.4
|
||||
@@ -8881,6 +8884,10 @@ snapshots:
|
||||
dependencies:
|
||||
entities: 6.0.1
|
||||
|
||||
parse5@8.0.0:
|
||||
dependencies:
|
||||
entities: 6.0.1
|
||||
|
||||
path-key@3.1.1: {}
|
||||
|
||||
path-parse@1.0.7: {}
|
||||
@@ -9222,32 +9229,32 @@ snapshots:
|
||||
|
||||
robust-predicates@2.0.4: {}
|
||||
|
||||
rollup@4.52.4:
|
||||
rollup@4.52.5:
|
||||
dependencies:
|
||||
'@types/estree': 1.0.8
|
||||
optionalDependencies:
|
||||
'@rollup/rollup-android-arm-eabi': 4.52.4
|
||||
'@rollup/rollup-android-arm64': 4.52.4
|
||||
'@rollup/rollup-darwin-arm64': 4.52.4
|
||||
'@rollup/rollup-darwin-x64': 4.52.4
|
||||
'@rollup/rollup-freebsd-arm64': 4.52.4
|
||||
'@rollup/rollup-freebsd-x64': 4.52.4
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.52.4
|
||||
'@rollup/rollup-linux-arm-musleabihf': 4.52.4
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.52.4
|
||||
'@rollup/rollup-linux-arm64-musl': 4.52.4
|
||||
'@rollup/rollup-linux-loong64-gnu': 4.52.4
|
||||
'@rollup/rollup-linux-ppc64-gnu': 4.52.4
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.52.4
|
||||
'@rollup/rollup-linux-riscv64-musl': 4.52.4
|
||||
'@rollup/rollup-linux-s390x-gnu': 4.52.4
|
||||
'@rollup/rollup-linux-x64-gnu': 4.52.4
|
||||
'@rollup/rollup-linux-x64-musl': 4.52.4
|
||||
'@rollup/rollup-openharmony-arm64': 4.52.4
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.52.4
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.52.4
|
||||
'@rollup/rollup-win32-x64-gnu': 4.52.4
|
||||
'@rollup/rollup-win32-x64-msvc': 4.52.4
|
||||
'@rollup/rollup-android-arm-eabi': 4.52.5
|
||||
'@rollup/rollup-android-arm64': 4.52.5
|
||||
'@rollup/rollup-darwin-arm64': 4.52.5
|
||||
'@rollup/rollup-darwin-x64': 4.52.5
|
||||
'@rollup/rollup-freebsd-arm64': 4.52.5
|
||||
'@rollup/rollup-freebsd-x64': 4.52.5
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.52.5
|
||||
'@rollup/rollup-linux-arm-musleabihf': 4.52.5
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.52.5
|
||||
'@rollup/rollup-linux-arm64-musl': 4.52.5
|
||||
'@rollup/rollup-linux-loong64-gnu': 4.52.5
|
||||
'@rollup/rollup-linux-ppc64-gnu': 4.52.5
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.52.5
|
||||
'@rollup/rollup-linux-riscv64-musl': 4.52.5
|
||||
'@rollup/rollup-linux-s390x-gnu': 4.52.5
|
||||
'@rollup/rollup-linux-x64-gnu': 4.52.5
|
||||
'@rollup/rollup-linux-x64-musl': 4.52.5
|
||||
'@rollup/rollup-openharmony-arm64': 4.52.5
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.52.5
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.52.5
|
||||
'@rollup/rollup-win32-x64-gnu': 4.52.5
|
||||
'@rollup/rollup-win32-x64-msvc': 4.52.5
|
||||
fsevents: 2.3.3
|
||||
|
||||
rrweb-cssom@0.8.0: {}
|
||||
@@ -9697,7 +9704,7 @@ snapshots:
|
||||
fdir: 6.5.0(picomatch@4.0.3)
|
||||
picomatch: 4.0.3
|
||||
postcss: 8.5.6
|
||||
rollup: 4.52.4
|
||||
rollup: 4.52.5
|
||||
tinyglobby: 0.2.15
|
||||
optionalDependencies:
|
||||
'@types/node': 24.8.1
|
||||
@@ -9706,7 +9713,7 @@ snapshots:
|
||||
lightningcss: 1.30.1
|
||||
tsx: 4.20.6
|
||||
|
||||
vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.8.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(tsx@4.20.6):
|
||||
vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.8.1)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.0.1(postcss@8.5.6))(lightningcss@1.30.1)(tsx@4.20.6):
|
||||
dependencies:
|
||||
'@types/chai': 5.2.2
|
||||
'@vitest/expect': 3.2.4
|
||||
@@ -9735,7 +9742,7 @@ snapshots:
|
||||
'@types/debug': 4.1.12
|
||||
'@types/node': 24.8.1
|
||||
'@vitest/ui': 3.2.4(vitest@3.2.4)
|
||||
jsdom: 27.0.0(postcss@8.5.6)
|
||||
jsdom: 27.0.1(postcss@8.5.6)
|
||||
transitivePeerDependencies:
|
||||
- jiti
|
||||
- less
|
||||
|
||||
@@ -5,6 +5,5 @@
|
||||
"ENABLE_EXPERIMENTAL_COREPACK": "1",
|
||||
"PUPPETEER_SKIP_DOWNLOAD": "1"
|
||||
}
|
||||
},
|
||||
"crons": []
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user