diff --git a/README.md b/README.md
index 050093c..f65ccc5 100644
--- a/README.md
+++ b/README.md
@@ -10,3 +10,5 @@ Some Astro content loaders
- [@ascorbic/mock-loader](packages/mock) - Mock data for development
- [@ascorbic/bluesky-loader](packages/bluesky) - Load Bluesky posts
- [@ascorbic/youtube-loader](packages/youtube) - Load YouTube videos
+- [@ascorbic/s3-media-loader](packages/s3-media) - Load media files from S3-compatible storage
+- [@ascorbic/github-commits-loader](packages/github-commits) - Load commit history from GitHub repositories
\ No newline at end of file
diff --git a/packages/airtable/package.json b/packages/airtable/package.json
index f8fe3b7..4b5914d 100644
--- a/packages/airtable/package.json
+++ b/packages/airtable/package.json
@@ -45,4 +45,4 @@
"airtable": "^0.12.2",
"ts-pattern": "^5.6.2"
}
-}
\ No newline at end of file
+}
diff --git a/packages/bluesky/package.json b/packages/bluesky/package.json
index dd19220..3d7e309 100644
--- a/packages/bluesky/package.json
+++ b/packages/bluesky/package.json
@@ -45,4 +45,4 @@
"@ascorbic/loader-utils": "workspace:^",
"@atproto/api": "^0.13.31"
}
-}
\ No newline at end of file
+}
diff --git a/packages/csv/package.json b/packages/csv/package.json
index d719c80..d96738a 100644
--- a/packages/csv/package.json
+++ b/packages/csv/package.json
@@ -46,4 +46,4 @@
"papaparse": "^5.5.2",
"pathe": "^2.0.2"
}
-}
\ No newline at end of file
+}
diff --git a/packages/feed/package.json b/packages/feed/package.json
index 8ecebe3..2105d10 100644
--- a/packages/feed/package.json
+++ b/packages/feed/package.json
@@ -42,7 +42,7 @@
},
"homepage": "https://github.com/ascorbic/astro-loaders",
"dependencies": {
- "@rowanmanning/feed-parser": "^2.0.0",
- "@ascorbic/loader-utils": "workspace:^"
+ "@ascorbic/loader-utils": "workspace:^",
+ "@rowanmanning/feed-parser": "^2.0.0"
}
-}
\ No newline at end of file
+}
diff --git a/packages/github-commits/CHANGELOG.md b/packages/github-commits/CHANGELOG.md
new file mode 100644
index 0000000..449ccc9
--- /dev/null
+++ b/packages/github-commits/CHANGELOG.md
@@ -0,0 +1,11 @@
+# @ascorbic/github-commits
+
+## 0.0.1
+
+### Initial Release
+
+- Initial release of GitHub commits loader for Astro
+- Load commits from any GitHub repository
+- Support for fetching commit files
+- ETag caching support for efficient re-fetching
+- Configurable pagination and timeout
diff --git a/packages/github-commits/README.md b/packages/github-commits/README.md
new file mode 100644
index 0000000..734787d
--- /dev/null
+++ b/packages/github-commits/README.md
@@ -0,0 +1,80 @@
+# Astro GitHub Commits Loader
+
+This package provides a GitHub commits loader for Astro. It allows you to load commits from any GitHub repository and use them as content in your Astro project.
+
+## Installation
+
+```sh
+npm install @ascorbic/github-commits
+```
+
+## Usage
+
+This package requires Astro 5.0.0 or later.
+
+You can use the GitHub loader in your content collection configuration:
+
+```typescript
+// src/content/config.ts
+import { defineCollection } from "astro:content";
+import { githubLoader } from "@ascorbic/github-commits";
+
+const commits = defineCollection({
+ loader: githubLoader({
+ repo: "owner/repo",
+ token: import.meta.env.GITHUB_TOKEN,
+ perPage: 15,
+ fetchFilesFor: 5,
+ }),
+});
+
+export const collections = { commits };
+```
+
+You can then use these like any other content collection in Astro:
+
+```astro
+---
+import { getCollection } from "astro:content";
+const commits = await getCollection("commits");
+---
+
+
+ {commits.map((commit) => (
+ -
+ {commit.data.shortSha} - {commit.data.message}
+
+ by {commit.data.author} on {commit.data.date.toDateString()}
+
+ ))}
+
+```
+
+## Options
+
+The `githubLoader` function takes an object with the following options:
+
+- `repo` (required): GitHub repository in the format "owner/repo"
+- `token` (optional): GitHub personal access token for higher API rate limits
+- `perPage` (optional): Number of commits to fetch per page (default: 15)
+- `timeoutMs` (optional): Request timeout in milliseconds (default: 8000)
+- `fetchFilesFor` (optional): Number of recent commits to fetch files for (default: 0)
+
+## Data Structure
+
+Each commit item contains:
+
+- `sha`: Full commit SHA
+- `shortSha`: Shortened 7-character SHA
+- `message`: Commit message (first line)
+- `author`: Author name
+- `date`: Commit date
+- `files`: Array of changed files (if fetchFilesFor > 0)
+
+Each file contains:
+
+- `filename`: File path
+- `status`: File status (added, modified, deleted)
+- `changes`: Total changes
+- `additions`: Number of additions
+- `deletions`: Number of deletions
diff --git a/packages/github-commits/package.json b/packages/github-commits/package.json
new file mode 100644
index 0000000..8c0c2c8
--- /dev/null
+++ b/packages/github-commits/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "@ascorbic/github-commits-loader",
+ "version": "0.0.1",
+ "description": "Load commits from a GitHub repository into Astro",
+ "type": "module",
+ "main": "dist/index.js",
+ "files": [
+ "dist"
+ ],
+ "exports": {
+ ".": "./dist/index.js"
+ },
+ "scripts": {
+ "build": "tsup src/index.ts --format esm --dts --clean",
+ "dev": "tsup src/index.ts --format esm --dts --watch",
+ "prepublishOnly": "node --run build",
+ "check": "publint && attw --pack --ignore-rules=cjs-resolves-to-esm",
+ "test": "vitest run",
+ "test:watch": "vitest"
+ },
+ "devDependencies": {
+ "@arethetypeswrong/cli": "^0.17.3",
+ "astro": "^5.10.1",
+ "publint": "^0.3.2",
+ "tsup": "^8.3.6",
+ "typescript": "^5.7.3"
+ },
+ "peerDependencies": {
+ "astro": "^4.14.0 || ^5.0.0"
+ },
+ "keywords": [
+ "withastro",
+ "astro-loader"
+ ],
+ "author": "strangeZombies",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com:ascorbic/astro-loaders.git",
+ "directory": "packages/github-commits"
+ },
+ "homepage": "https://github.com/ascorbic/astro-loaders",
+ "dependencies": {
+ "@ascorbic/loader-utils": "workspace:^"
+ }
+}
diff --git a/packages/github-commits/src/github-commits-loader.ts b/packages/github-commits/src/github-commits-loader.ts
new file mode 100644
index 0000000..acb96e5
--- /dev/null
+++ b/packages/github-commits/src/github-commits-loader.ts
@@ -0,0 +1,150 @@
+// packages/github/src/github-commits-loader.ts
+import type { Loader, LoaderContext } from "astro/loaders";
+import { getLoaderFetch } from "@ascorbic/loader-utils";
+import type { GitHubCommit, GitHubCommitFile, ProcessedCommit, GitHubLoaderOptions } from "./schema.js";
+
+const ETAG_KEY = (repo: string, perPage: number) => `gh-commits-etag:${repo}:${perPage}`;
+
+export function githubLoader(options: GitHubLoaderOptions): Loader {
+ const {
+ repo,
+ token,
+ perPage = 15,
+ timeoutMs = 8000,
+ fetchFilesFor = 0,
+ } = options;
+
+ return {
+ name: "github",
+
+ load: async ({ store, logger, parseData, meta, generateDigest }: LoaderContext) => {
+ const etagKey = ETAG_KEY(repo, perPage);
+ const fetchImpl = getLoaderFetch();
+
+ try {
+ // Test if repo is accessible
+ const testRes = await fetchImpl(`https://api.github.com/repos/${repo}`, {
+ headers: getHeaders(token),
+ });
+ if (!testRes.ok) {
+ const text = await testRes.text().catch(() => "");
+ logger.error(`Cannot access repo ${repo}: ${testRes.status} - ${text.slice(0, 200)}`);
+ return;
+ }
+
+ const url = `https://api.github.com/repos/${repo}/commits?per_page=${perPage}`;
+ const headers = getHeaders(token);
+
+ // ETag support
+ const prevEtag = meta.get(etagKey);
+ if (prevEtag) {
+ headers["If-None-Match"] = prevEtag;
+ }
+
+ const controller = new AbortController();
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
+
+ const res = await fetchImpl(url, { headers, signal: controller.signal });
+ clearTimeout(timeoutId);
+
+ if (res.status === 304) {
+ logger.info(`Commits not modified (ETag hit) → keeping existing data`);
+ return;
+ }
+
+ if (!res.ok) {
+ throw new Error(`GitHub API error: ${res.status} ${await res.text().catch(() => "")}`);
+ }
+
+ const etag = res.headers.get("ETag");
+ if (etag) meta.set(etagKey, etag);
+
+ const commits = (await res.json()) as GitHubCommit[];
+
+ logger.info(`Fetched ${commits.length} commits from ${repo}`);
+
+ const detailedCommits = await Promise.all(
+ commits.map(async (c, index) => {
+ let files: ProcessedCommit["files"] = [];
+
+ if (fetchFilesFor > 0 && index < fetchFilesFor) {
+ try {
+ const detailRes = await fetchImpl(
+ `https://api.github.com/repos/${repo}/commits/${c.sha}`,
+ { headers }
+ );
+
+ if (detailRes.ok) {
+ const detail = (await detailRes.json()) as { files?: GitHubCommitFile[] };
+ files = (detail.files || []).map((f) => ({
+ filename: f.filename,
+ status: f.status,
+ changes: f.changes,
+ additions: f.additions,
+ deletions: f.deletions,
+ }));
+ } else if (detailRes.status === 403 || detailRes.status === 429) {
+ logger.warn(`Rate limit hit when fetching files for ${c.sha.slice(0, 7)}`);
+ }
+ } catch (e) {
+ logger.warn(`Failed to fetch files for ${c.sha.slice(0, 7)}: ${e}`);
+ }
+ }
+
+ return {
+ sha: c.sha,
+ shortSha: c.sha.slice(0, 7),
+ message: c.commit?.message?.split("\n")[0]?.trim() ?? "",
+ author: c.commit.author.name,
+ date: new Date(c.commit.author.date),
+ files,
+ };
+ })
+ );
+
+ await store.clear();
+
+ for (const commit of detailedCommits) {
+ const id = commit.shortSha;
+
+ const digest = generateDigest({
+ sha: commit.sha,
+ message: commit.message,
+ date: commit.date.toISOString(),
+ filesLength: commit.files.length,
+ });
+
+ const parsed = await parseData({
+ id,
+ data: commit,
+ });
+
+ await store.set({
+ id,
+ data: parsed,
+ digest,
+ });
+ }
+
+ logger.info(`Stored ${detailedCommits.length} commits`);
+ } catch (err: unknown) {
+ if (err instanceof Error && err.name === "AbortError") {
+ logger.error("GitHub request timeout");
+ } else {
+ logger.error(`Load failed: ${err instanceof Error ? err.message : err}`);
+ }
+ }
+ },
+ };
+}
+
+function getHeaders(token?: string): Record {
+ const h: Record = {
+ Accept: "application/vnd.github+json",
+ "User-Agent": "Astro-GitHub-Loader",
+ };
+ if (token) {
+ h.Authorization = `Bearer ${token}`;
+ }
+ return h;
+}
diff --git a/packages/github-commits/src/index.ts b/packages/github-commits/src/index.ts
new file mode 100644
index 0000000..19bbe21
--- /dev/null
+++ b/packages/github-commits/src/index.ts
@@ -0,0 +1,3 @@
+// packages/github/src/index.ts
+export { githubLoader } from "./github-commits-loader.js";
+export type { GitHubLoaderOptions, ProcessedCommit, GitHubCommit, GitHubCommitFile } from "./schema.js";
diff --git a/packages/github-commits/src/schema.ts b/packages/github-commits/src/schema.ts
new file mode 100644
index 0000000..83addfb
--- /dev/null
+++ b/packages/github-commits/src/schema.ts
@@ -0,0 +1,43 @@
+// packages/github/src/schema.ts
+export interface GitHubCommit {
+ sha: string;
+ commit: {
+ message: string;
+ author: {
+ name: string;
+ date: string;
+ };
+ };
+ author?: { avatar_url?: string };
+}
+
+export interface GitHubCommitFile {
+ sha: string;
+ filename: string;
+ status: string;
+ additions: number;
+ deletions: number;
+ changes: number;
+}
+
+export interface ProcessedCommit {
+ sha: string;
+ shortSha: string;
+ message: string;
+ author: string;
+ date: Date;
+ files: Pick[];
+}
+
+export interface GitHubLoaderOptions {
+ /** GitHub repository in the format "owner/repo" */
+ repo: string;
+ /** GitHub personal access token for higher rate limits */
+ token?: string;
+ /** Number of commits to fetch per page */
+ perPage?: number;
+ /** Request timeout in milliseconds */
+ timeoutMs?: number;
+ /** Number of recent commits to fetch files for (0 = none) */
+ fetchFilesFor?: number;
+}
diff --git a/packages/github-commits/tsconfig.json b/packages/github-commits/tsconfig.json
new file mode 100644
index 0000000..b1224f9
--- /dev/null
+++ b/packages/github-commits/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./dist"
+ },
+ "include": ["src"]
+}
diff --git a/packages/mock/package.json b/packages/mock/package.json
index 9d49de0..bdc0f84 100644
--- a/packages/mock/package.json
+++ b/packages/mock/package.json
@@ -45,4 +45,4 @@
"@ascorbic/loader-utils": "workspace:^",
"@faker-js/faker": "^9.4.0"
}
-}
\ No newline at end of file
+}
diff --git a/packages/s3-media/CHANGELOG.md b/packages/s3-media/CHANGELOG.md
new file mode 100644
index 0000000..eb20019
--- /dev/null
+++ b/packages/s3-media/CHANGELOG.md
@@ -0,0 +1,11 @@
+# @ascorbic/s3-media-loader
+
+## 0.0.1
+
+### Initial Release
+
+- Initial release of S3 media loader for Astro
+- Load media files from S3-compatible storage (AWS S3, Cloudflare R2, MinIO, etc.)
+- Support for filtering by file extensions (.mp3, .flac, .wav, .mp4, .webm, .ogg by default)
+- Caching support for production environments
+- Configurable prefix and max keys
diff --git a/packages/s3-media/README.md b/packages/s3-media/README.md
new file mode 100644
index 0000000..ccb071b
--- /dev/null
+++ b/packages/s3-media/README.md
@@ -0,0 +1,103 @@
+# Astro S3 Media Loader
+
+This package provides an S3 media loader for Astro. It allows you to load media files from S3-compatible storage (AWS S3, Cloudflare R2, MinIO, DigitalOcean Spaces, etc.) and use them as content in your Astro project.
+
+## Installation
+
+```sh
+npm install @ascorbic/s3-media-loader
+```
+
+## Usage
+
+This package requires Astro 5.0.0 or later.
+
+You can use the S3 loader in your content collection configuration:
+
+```typescript
+// src/content/config.ts
+import { defineCollection } from "astro:content";
+import { s3Loader } from "@ascorbic/s3-media-loader";
+
+const media = defineCollection({
+ loader: s3Loader({
+ endpoint: import.meta.env.S3_ENDPOINT,
+ bucket: import.meta.env.S3_BUCKET,
+ accessKeyId: import.meta.env.S3_ACCESS_KEY_ID,
+ secretAccessKey: import.meta.env.S3_SECRET_ACCESS_KEY,
+ region: "auto",
+ publicBaseUrl: import.meta.env.S3_PUBLIC_URL,
+ prefix: "music/",
+ extensions: [".mp3", ".flac", ".wav"],
+ }),
+});
+
+export const collections = { media };
+```
+
+You can then use these like any other content collection in Astro:
+
+```astro
+---
+import { getCollection } from "astro:content";
+const media = await getCollection("media");
+---
+
+
+ {media.map((item) => (
+ -
+
+ {item.data.name}
+
+ ))}
+
+```
+
+## Options
+
+The `s3Loader` function takes an object with the following options:
+
+- `endpoint` (required): S3 endpoint URL (e.g., `https://r2.cloudflarestorage.com`)
+- `bucket` (required): S3 bucket name
+- `accessKeyId` (required): AWS access key ID
+- `secretAccessKey` (required): AWS secret access key
+- `region` (optional): AWS region (default: "auto" for Cloudflare R2)
+- `prefix` (optional): Prefix to filter objects (e.g., "music/" or "images/")
+- `forcePathStyle` (optional): Force path-style URLs (default: true)
+- `publicBaseUrl` (required): Public base URL for media files
+- `extensions` (optional): Allowed file extensions (default: [".mp3", ".flac", ".wav", ".mp4", ".webm", ".ogg"])
+- `maxKeys` (optional): Maximum number of keys to retrieve (default: 1000)
+
+## Data Structure
+
+Each media item contains:
+
+- `id`: Full S3 object key
+- `name`: File name
+- `ext`: File extension (including dot)
+- `url`: Public URL of the file
+- `size` (optional): File size in bytes
+- `lastModified` (optional): Last modified date
+
+## Example: Cloudflare R2
+
+```typescript
+const media = defineCollection({
+ loader: s3Loader({
+ endpoint: `https://${import.meta.env.R2_ACCOUNT_ID}.r2.cloudflarestorage.com`,
+ bucket: import.meta.env.R2_BUCKET_NAME,
+ accessKeyId: import.meta.env.R2_ACCESS_KEY_ID,
+ secretAccessKey: import.meta.env.R2_SECRET_ACCESS_KEY,
+ region: "auto",
+ publicBaseUrl: import.meta.env.R2_PUBLIC_URL,
+ prefix: "podcasts/",
+ extensions: [".mp3", ".m4a"],
+ }),
+});
+```
+
+## Caching
+
+The loader includes built-in caching for production environments. In production mode, media items are cached for 5 minutes to reduce API calls and improve performance.
diff --git a/packages/s3-media/package.json b/packages/s3-media/package.json
new file mode 100644
index 0000000..bde4cf1
--- /dev/null
+++ b/packages/s3-media/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "@ascorbic/s3-media-loader",
+ "version": "0.0.1",
+ "description": "Load media files from S3-compatible storage into Astro",
+ "type": "module",
+ "main": "dist/index.js",
+ "files": [
+ "dist"
+ ],
+ "exports": {
+ ".": "./dist/index.js"
+ },
+ "scripts": {
+ "build": "tsup src/index.ts --format esm --dts --clean",
+ "dev": "tsup src/index.ts --format esm --dts --watch",
+ "prepublishOnly": "node --run build",
+ "check": "publint && attw --pack --ignore-rules=cjs-resolves-to-esm",
+ "test": "vitest run",
+ "test:watch": "vitest"
+ },
+ "devDependencies": {
+ "@arethetypeswrong/cli": "^0.17.3",
+ "astro": "^5.10.1",
+ "publint": "^0.3.2",
+ "tsup": "^8.3.6",
+ "typescript": "^5.7.3"
+ },
+ "peerDependencies": {
+ "astro": "^4.14.0 || ^5.0.0"
+ },
+ "keywords": [
+ "withastro",
+ "astro-loader"
+ ],
+ "author": "strangezombies",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com:ascorbic/astro-loaders.git",
+ "directory": "packages/s3-media"
+ },
+ "homepage": "https://github.com/ascorbic/astro-loaders",
+ "dependencies": {
+ "@ascorbic/loader-utils": "workspace:^",
+ "@aws-sdk/client-s3": "^3.986.0",
+ "@smithy/node-http-handler": "^4.2.4"
+ }
+}
diff --git a/packages/s3-media/src/index.ts b/packages/s3-media/src/index.ts
new file mode 100644
index 0000000..1244cb1
--- /dev/null
+++ b/packages/s3-media/src/index.ts
@@ -0,0 +1,3 @@
+// packages/s3/src/index.ts
+export { s3Loader } from "./s3-media-loader.js";
+export type { S3LoaderOptions, MediaItem } from "./schema.js";
diff --git a/packages/s3-media/src/s3-media-loader.ts b/packages/s3-media/src/s3-media-loader.ts
new file mode 100644
index 0000000..90219bf
--- /dev/null
+++ b/packages/s3-media/src/s3-media-loader.ts
@@ -0,0 +1,178 @@
+// packages/s3/src/s3-media-loader.ts
+import type { Loader } from "astro/loaders";
+import { S3Client, ListObjectsV2Command } from "@aws-sdk/client-s3";
+import type { ListObjectsV2CommandOutput } from "@aws-sdk/client-s3";
+import { NodeHttpHandler } from "@smithy/node-http-handler";
+import { getLoaderProxyAgent } from "@ascorbic/loader-utils";
+import type { MediaItem, S3LoaderOptions } from "./schema.js";
+
+let cachedClient: S3Client | null = null;
+let cachedOptions: S3LoaderOptions | null = null;
+
+interface CacheEntry {
+ data: MediaItem[];
+ timestamp: number;
+}
+
+const loaderCache = new Map();
+const CACHE_TTL = 5 * 60 * 1000;
+
+function getCacheKey(options: S3LoaderOptions): string {
+ return `${options.bucket}:${options.prefix || ""}`;
+}
+
+function getOrCreateClient(options: S3LoaderOptions): S3Client {
+ if (
+ cachedClient &&
+ cachedOptions &&
+ cachedOptions.endpoint === options.endpoint &&
+ cachedOptions.bucket === options.bucket &&
+ cachedOptions.accessKeyId === options.accessKeyId
+ ) {
+ return cachedClient;
+ }
+
+ const proxyAgent = getLoaderProxyAgent();
+
+ cachedClient = new S3Client({
+ endpoint: options.endpoint,
+ region: options.region || "auto",
+ credentials: {
+ accessKeyId: options.accessKeyId,
+ secretAccessKey: options.secretAccessKey,
+ },
+ forcePathStyle: options.forcePathStyle ?? true,
+ ...(proxyAgent
+ ? {
+ requestHandler: new NodeHttpHandler({
+ httpAgent: proxyAgent,
+ httpsAgent: proxyAgent,
+ }),
+ }
+ : {}),
+ });
+
+ cachedOptions = options;
+ return cachedClient;
+}
+
+function buildUrl(publicBaseUrl: string, key: string): string {
+ const base = publicBaseUrl.endsWith("/") ? publicBaseUrl.slice(0, -1) : publicBaseUrl;
+ const normalizedKey = key.startsWith("/") ? key.slice(1) : key;
+ return `${base}/${normalizedKey}`;
+}
+
+async function* listAllObjects(
+ client: S3Client,
+ bucket: string,
+ prefix: string,
+ maxKeys: number
+): AsyncGenerator[number]> {
+ let continuationToken: string | undefined;
+
+ do {
+ const command = new ListObjectsV2Command({
+ Bucket: bucket,
+ Prefix: prefix,
+ MaxKeys: maxKeys,
+ ContinuationToken: continuationToken,
+ });
+
+ const response = await client.send(command);
+
+ if (response.Contents) {
+ for (const item of response.Contents) {
+ yield item;
+ }
+ }
+
+ continuationToken = response.NextContinuationToken;
+ } while (continuationToken);
+}
+
+export function s3Loader(options: S3LoaderOptions): Loader {
+ return {
+ name: "s3",
+
+ async load({ store, logger }) {
+ const cacheKey = getCacheKey(options);
+ const now = Date.now();
+
+ // Production cache
+ const isProd = process.env.NODE_ENV === "production";
+ if (isProd) {
+ const cached = loaderCache.get(cacheKey);
+ if (cached && now - cached.timestamp < CACHE_TTL) {
+ for (const item of cached.data) {
+ store.set({
+ id: item.id,
+ data: item,
+ rendered: { html: "" },
+ });
+ }
+ logger.info(`Loaded ${cached.data.length} media items from cache`);
+ return;
+ }
+ }
+
+ const client = getOrCreateClient(options);
+ const maxKeys = options.maxKeys ?? 1000;
+
+ const allowedExts = new Set(
+ (options.extensions ?? [".mp3", ".flac", ".wav", ".mp4", ".webm", ".ogg"]).map((ext) =>
+ ext.toLowerCase()
+ )
+ );
+
+ const results: MediaItem[] = [];
+
+ try {
+ for await (const item of listAllObjects(client, options.bucket, options.prefix || "", maxKeys)) {
+ if (!item.Key) continue;
+
+ const key = item.Key;
+ const lastDotIndex = key.lastIndexOf(".");
+ const ext = lastDotIndex !== -1 ? key.substring(lastDotIndex).toLowerCase() : "";
+
+ if (!ext || !allowedExts.has(ext)) continue;
+
+ const parts = key.split("/");
+ const name = parts.pop() || key;
+
+ const mediaItem: MediaItem = {
+ id: key,
+ name,
+ ext,
+ url: buildUrl(options.publicBaseUrl, key),
+ };
+
+ if (item.Size !== undefined) {
+ mediaItem.size = item.Size;
+ }
+ if (item.LastModified) {
+ mediaItem.lastModified = item.LastModified;
+ }
+
+ results.push(mediaItem);
+
+ store.set({
+ id: key,
+ data: mediaItem,
+ rendered: { html: "" },
+ });
+ }
+
+ loaderCache.set(cacheKey, {
+ data: results,
+ timestamp: now,
+ });
+
+ logger.info(`Loaded ${results.length} media items from S3`);
+ } catch (err) {
+ const errorMessage = err instanceof Error ? err.message : String(err);
+ logger.error(`Error loading media from S3: ${errorMessage}`);
+ throw err;
+ }
+ },
+ };
+}
diff --git a/packages/s3-media/src/schema.ts b/packages/s3-media/src/schema.ts
new file mode 100644
index 0000000..6fab968
--- /dev/null
+++ b/packages/s3-media/src/schema.ts
@@ -0,0 +1,32 @@
+// packages/s3/src/schema.ts
+export interface MediaItem extends Record {
+ id: string;
+ name: string;
+ ext: string;
+ url: string;
+ size?: number;
+ lastModified?: Date;
+}
+
+export interface S3LoaderOptions {
+ /** S3 endpoint URL */
+ endpoint: string;
+ /** S3 bucket name */
+ bucket: string;
+ /** AWS access key ID */
+ accessKeyId: string;
+ /** AWS secret access key */
+ secretAccessKey: string;
+ /** AWS region (default: "auto" for Cloudflare R2) */
+ region?: string;
+ /** Prefix to filter objects */
+ prefix?: string;
+ /** Force path-style URLs */
+ forcePathStyle?: boolean;
+ /** Public base URL for media files */
+ publicBaseUrl: string;
+ /** Allowed file extensions */
+ extensions?: string[];
+ /** Max keys per request */
+ maxKeys?: number;
+}
diff --git a/packages/s3-media/tsconfig.json b/packages/s3-media/tsconfig.json
new file mode 100644
index 0000000..237f211
--- /dev/null
+++ b/packages/s3-media/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../../tsconfig.json",
+ "include": [
+ "src"
+ ],
+ "compilerOptions": {
+ "outDir": "./dist"
+ }
+}
diff --git a/packages/utils/package.json b/packages/utils/package.json
index a598272..8a1ba8a 100644
--- a/packages/utils/package.json
+++ b/packages/utils/package.json
@@ -35,5 +35,7 @@
"directory": "packages/utils"
},
"homepage": "https://github.com/ascorbic/astro-loaders",
- "dependencies": {}
-}
\ No newline at end of file
+ "dependencies": {
+ "node-fetch-native": "^1.6.6"
+ }
+}
diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts
index 8a3b083..3884fdd 100644
--- a/packages/utils/src/index.ts
+++ b/packages/utils/src/index.ts
@@ -1,4 +1,9 @@
import type { LoaderContext } from "astro/loaders";
+import {
+ createFetch as createProxyFetch,
+ createProxy,
+ type ProxyOptions,
+} from "node-fetch-native/proxy";
/**
* Get the headers needed to make a conditional request.
@@ -28,8 +33,8 @@ export function getConditionalHeaders({
* Store the etag or last-modified headers from a response in the meta store.
*/
export function storeConditionalHeaders({
- headers,
- meta,
+ headers,
+ meta,
}: {
/** Headers from the response */
headers: Headers;
@@ -44,5 +49,89 @@ export function storeConditionalHeaders({
meta.set("etag", etag);
} else if (lastModified) {
meta.set("last-modified", lastModified);
- }
+ }
+}
+
+let cachedProxyFetch: typeof globalThis.fetch | null = null;
+let cachedProxyAgent: ReturnType["agent"] | null = null;
+let cachedProxyDispatcher: ReturnType["dispatcher"] | null = null;
+let cachedProxyCacheKey: string | null = null;
+
+function getEnvValue(name: string): string | undefined {
+ const value = process.env[name]?.trim();
+ return value ? value : undefined;
+}
+
+export function getLoaderProxyOptions(): ProxyOptions | undefined {
+ if (process.env.NODE_ENV === "production") {
+ return undefined;
+ }
+
+ const url =
+ getEnvValue("ASTRO_LOADER_PROXY") ??
+ getEnvValue("HTTPS_PROXY") ??
+ getEnvValue("https_proxy") ??
+ getEnvValue("HTTP_PROXY") ??
+ getEnvValue("http_proxy");
+
+ if (!url) {
+ return undefined;
+ }
+
+ const noProxy = getEnvValue("NO_PROXY") ?? getEnvValue("no_proxy");
+
+ return {
+ url,
+ ...(noProxy ? { noProxy } : {}),
+ };
+}
+
+function getProxyCacheKey(options?: ProxyOptions): string {
+ if (!options?.url) return "no-proxy";
+ return `${options.url}::${Array.isArray(options.noProxy) ? options.noProxy.join(",") : options.noProxy ?? ""}`;
+}
+
+export function getLoaderFetch(): typeof globalThis.fetch {
+ const proxyOptions = getLoaderProxyOptions();
+ if (!proxyOptions?.url) {
+ return globalThis.fetch;
+ }
+
+ const cacheKey = getProxyCacheKey(proxyOptions);
+ if (!cachedProxyFetch || cacheKey !== cachedProxyCacheKey) {
+ cachedProxyFetch = createProxyFetch(proxyOptions);
+ cachedProxyCacheKey = cacheKey;
+ }
+
+ return cachedProxyFetch;
+}
+
+function ensureProxyCache() {
+ const proxyOptions = getLoaderProxyOptions();
+ if (!proxyOptions?.url) {
+ cachedProxyAgent = null;
+ cachedProxyDispatcher = null;
+ cachedProxyCacheKey = "no-proxy";
+ return;
+ }
+
+ const cacheKey = getProxyCacheKey(proxyOptions);
+ if (cacheKey === cachedProxyCacheKey && (cachedProxyAgent || cachedProxyDispatcher)) {
+ return;
+ }
+
+ const proxy = createProxy(proxyOptions);
+ cachedProxyAgent = proxy.agent ?? null;
+ cachedProxyDispatcher = proxy.dispatcher ?? null;
+ cachedProxyCacheKey = cacheKey;
+}
+
+export function getLoaderProxyAgent(): ReturnType["agent"] | undefined {
+ ensureProxyCache();
+ return cachedProxyAgent ?? undefined;
+}
+
+export function getLoaderProxyDispatcher(): ReturnType["dispatcher"] | undefined {
+ ensureProxyCache();
+ return cachedProxyDispatcher ?? undefined;
}
diff --git a/packages/youtube/package.json b/packages/youtube/package.json
index 3ac12ff..ad5d296 100644
--- a/packages/youtube/package.json
+++ b/packages/youtube/package.json
@@ -48,4 +48,4 @@
"@ascorbic/loader-utils": "workspace:^",
"zod": "^3.24.1"
}
-}
\ No newline at end of file
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e1618f9..5f30d24 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -187,6 +187,28 @@ importers:
specifier: ^5.7.3
version: 5.7.3
+ packages/github-commits:
+ dependencies:
+ '@ascorbic/loader-utils':
+ specifier: workspace:^
+ version: link:../utils
+ devDependencies:
+ '@arethetypeswrong/cli':
+ specifier: ^0.17.3
+ version: 0.17.3
+ astro:
+ specifier: ^5.10.1
+ version: 5.10.1(@netlify/blobs@8.2.0)(@types/node@22.12.0)(jiti@2.4.2)(rollup@4.44.0)(typescript@5.7.3)(yaml@2.5.0)
+ publint:
+ specifier: ^0.3.2
+ version: 0.3.2
+ tsup:
+ specifier: ^8.3.6
+ version: 8.3.6(jiti@2.4.2)(postcss@8.5.6)(typescript@5.7.3)(yaml@2.5.0)
+ typescript:
+ specifier: ^5.7.3
+ version: 5.7.3
+
packages/mock:
dependencies:
'@anatine/zod-mock':
@@ -215,6 +237,31 @@ importers:
specifier: ^5.7.3
version: 5.7.3
+ packages/s3-media:
+ dependencies:
+ '@ascorbic/loader-utils':
+ specifier: workspace:^
+ version: link:../utils
+ '@aws-sdk/client-s3':
+ specifier: ^3.986.0
+ version: 3.1012.0
+ devDependencies:
+ '@arethetypeswrong/cli':
+ specifier: ^0.17.3
+ version: 0.17.3
+ astro:
+ specifier: ^5.10.1
+ version: 5.10.1(@netlify/blobs@8.2.0)(@types/node@22.12.0)(jiti@2.4.2)(rollup@4.44.0)(typescript@5.7.3)(yaml@2.5.0)
+ publint:
+ specifier: ^0.3.2
+ version: 0.3.2
+ tsup:
+ specifier: ^8.3.6
+ version: 8.3.6(jiti@2.4.2)(postcss@8.5.6)(typescript@5.7.3)(yaml@2.5.0)
+ typescript:
+ specifier: ^5.7.3
+ version: 5.7.3
+
packages/utils:
devDependencies:
'@arethetypeswrong/cli':
@@ -355,6 +402,165 @@ packages:
'@atproto/xrpc@0.6.6':
resolution: {integrity: sha512-umXEYVMo9/pyIBoKmIAIi64RXDW9tSXY+wqztlQ6I2GZtjLfNZqmAWU+wADk3SxUe54mvjxxGyA4TtyGtDMfhA==}
+ '@aws-crypto/crc32@5.2.0':
+ resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==}
+ engines: {node: '>=16.0.0'}
+
+ '@aws-crypto/crc32c@5.2.0':
+ resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==}
+
+ '@aws-crypto/sha1-browser@5.2.0':
+ resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==}
+
+ '@aws-crypto/sha256-browser@5.2.0':
+ resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==}
+
+ '@aws-crypto/sha256-js@5.2.0':
+ resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==}
+ engines: {node: '>=16.0.0'}
+
+ '@aws-crypto/supports-web-crypto@5.2.0':
+ resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==}
+
+ '@aws-crypto/util@5.2.0':
+ resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==}
+
+ '@aws-sdk/client-s3@3.1012.0':
+ resolution: {integrity: sha512-YB44c/NVLwyLw2x8hYSIdMFRwFJyZRuaq1HCTS2RiUWmHucSGxohuKwQdQn/XWh+NILugB+RnXrBkSqTlR3ypw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/core@3.973.21':
+ resolution: {integrity: sha512-OTUcDX9Yfz/FLKbHjiMaP9D4Hs44lYJzN7zBcrK2nDmBt0Wr8D6nYt12QoBkZsW0nVMFsTIGaZCrsU9zCcIMXQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/crc64-nvme@3.972.5':
+ resolution: {integrity: sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-env@3.972.19':
+ resolution: {integrity: sha512-33NpkQtmnsjLr9QdZvL3w8bjy+WoBJ+jY8JwuzxIq38rDNi1kwpBWW7Yjh+8bMlksd+ZAWW0fH4S/6OeoAdU5A==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-http@3.972.21':
+ resolution: {integrity: sha512-xFke7yjbON4unNOG0TApQwz+o1LH5VhVLgWlUuiLRWNDyBfeHIFje2ck8qHybvJ8Fkm5m3SsN+pvHtVo6PGWlQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-ini@3.972.21':
+ resolution: {integrity: sha512-fmJN7KhB7CoG65w9fC2LVOd2wZbR2d1yJIpZNe2J5CeDPu7nUHSmavuJAeGEoE3OL5UIBVPNhmK/fV/NQrs3Hw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-login@3.972.21':
+ resolution: {integrity: sha512-ENU+YCiuQocQjfIf9bPxZ+ZY0wIBkl3SMH22optBQwy8UFpSfonHynXzGT27xQxer4cYTNOpwDqbfo57BusbpQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-node@3.972.22':
+ resolution: {integrity: sha512-VE6i8nkmrRyhKut7nnfCWRbdDf+CfyRr8ixSwdaPDguYlgvkAO2pHu9oK11XzbSuatB0io1ozI/vpYhelXn8Pg==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-process@3.972.19':
+ resolution: {integrity: sha512-hjj5bFo4kf5/WzAMjDEFByVOMbq5gZiagIpJexf7Kp9nIDaGzhCphMsx03NCA8s9zUJzHlD1lXazd7MS+e03Lg==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-sso@3.972.21':
+ resolution: {integrity: sha512-9jWRCuMZpZKlqCZ46bvievqdfswsyB2yPAr9rOiN+FxaGgf8jrR5iYDqJgscvk1jrbAxiK4cIjHv3XjIAWAhzQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-web-identity@3.972.21':
+ resolution: {integrity: sha512-ShWQO/cQVZ+j3zUDK7Kj+m7grPzQCVA2iaZdJ+hJTGvVH5lR32Ip/rgZZ+zBdH6D6wczP9Upa4NMXoqJdGpK1g==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-bucket-endpoint@3.972.8':
+ resolution: {integrity: sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-expect-continue@3.972.8':
+ resolution: {integrity: sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-flexible-checksums@3.974.1':
+ resolution: {integrity: sha512-1MQ8czTjW8b8SpM+ZoQ0k5yD4rd19G9ALPlGgbFdRS7bwlm9ArxXWu2M22mUgSjsGJwzDkpV8e9tjUnre6adAw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-host-header@3.972.8':
+ resolution: {integrity: sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-location-constraint@3.972.8':
+ resolution: {integrity: sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-logger@3.972.8':
+ resolution: {integrity: sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-recursion-detection@3.972.8':
+ resolution: {integrity: sha512-BnnvYs2ZEpdlmZ2PNlV2ZyQ8j8AEkMTjN79y/YA475ER1ByFYrkVR85qmhni8oeTaJcDqbx364wDpitDAA/wCA==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-sdk-s3@3.972.21':
+ resolution: {integrity: sha512-SXkHy8OET88y4NaSui3gMfoTpg4jHvcbAVXYJuP74vsgsJKCv/vzWM+0hVJ1W+EBOghd+qFIud80ZiuPt2RXRw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-ssec@3.972.8':
+ resolution: {integrity: sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-user-agent@3.972.22':
+ resolution: {integrity: sha512-pZPNGWZVQvgUIO/P9PXZNz7ciq9mLYb/wQEurg3phKTa3DiBIunIRcgA0eBNwmog6S3oy0KR1bv4EJ4ld9A5sQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/nested-clients@3.996.11':
+ resolution: {integrity: sha512-i7SwoSR4JB/79JoGDUACnFUQOZwXGLWNX35lIb1Pq72nUGlVV+RFZp+BLa8S+mog2pbXU9+6Kc5YwGiMi5bKhQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/region-config-resolver@3.972.8':
+ resolution: {integrity: sha512-1eD4uhTDeambO/PNIDVG19A6+v4NdD7xzwLHDutHsUqz0B+i661MwQB2eYO4/crcCvCiQG4SRm1k81k54FEIvw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/signature-v4-multi-region@3.996.9':
+ resolution: {integrity: sha512-2aAUwudVQ3uNkCfkBLQwNVD2jkfb299NSeDueXsT2NcNdFrWtHRkiQzX3wk47UFYbm87BkdxrsAJcQO7PdQOhA==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/token-providers@3.1012.0':
+ resolution: {integrity: sha512-vzKwy020zjuiF4WTJzejx5nYcXJnRhHpb6i3lyZHIwfFwXG1yX4bzBVNMWYWF+bz1i2Pp2VhJbPyzpqj4VuJXQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/types@3.973.6':
+ resolution: {integrity: sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/util-arn-parser@3.972.3':
+ resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/util-endpoints@3.996.5':
+ resolution: {integrity: sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/util-locate-window@3.965.5':
+ resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/util-user-agent-browser@3.972.8':
+ resolution: {integrity: sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==}
+
+ '@aws-sdk/util-user-agent-node@3.973.8':
+ resolution: {integrity: sha512-Kvb96TafGPLYo4Z2GRCzQTne77epXgiZEo0DDXwavzkWmgDV/1XD1tMA766gzRcHHFUraWsE+4T8DKtPTZUxgQ==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ aws-crt: '>=1.0.0'
+ peerDependenciesMeta:
+ aws-crt:
+ optional: true
+
+ '@aws-sdk/xml-builder@3.972.13':
+ resolution: {integrity: sha512-I/+BMxM4WE/6xL0tyV7tAUDOAXmyw/va1oGr/eSly43HmLUcD1G+v96vEKAA8VoLcZ03ZQo/PWzjmN9zQErqPQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws/lambda-invoke-store@0.2.4':
+ resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==}
+ engines: {node: '>=18.0.0'}
+
'@babel/code-frame@7.27.1':
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
@@ -509,6 +715,12 @@ packages:
'@emnapi/runtime@1.2.0':
resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==}
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/aix-ppc64@0.24.0':
resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
engines: {node: '>=18'}
@@ -521,6 +733,12 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/android-arm64@0.21.5':
+ resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm64@0.24.0':
resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==}
engines: {node: '>=18'}
@@ -533,6 +751,12 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-arm@0.24.0':
resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==}
engines: {node: '>=18'}
@@ -545,6 +769,12 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/android-x64@0.24.0':
resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==}
engines: {node: '>=18'}
@@ -557,6 +787,12 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/darwin-arm64@0.21.5':
+ resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-arm64@0.24.0':
resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==}
engines: {node: '>=18'}
@@ -569,6 +805,12 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.24.0':
resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==}
engines: {node: '>=18'}
@@ -581,6 +823,12 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/freebsd-arm64@0.21.5':
+ resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-arm64@0.24.0':
resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==}
engines: {node: '>=18'}
@@ -593,6 +841,12 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.24.0':
resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==}
engines: {node: '>=18'}
@@ -605,6 +859,12 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/linux-arm64@0.21.5':
+ resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm64@0.24.0':
resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==}
engines: {node: '>=18'}
@@ -617,6 +877,12 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-arm@0.24.0':
resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==}
engines: {node: '>=18'}
@@ -629,6 +895,12 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-ia32@0.24.0':
resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==}
engines: {node: '>=18'}
@@ -641,6 +913,12 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-loong64@0.21.5':
+ resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-loong64@0.24.0':
resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==}
engines: {node: '>=18'}
@@ -653,6 +931,12 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.24.0':
resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==}
engines: {node: '>=18'}
@@ -665,6 +949,12 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-ppc64@0.21.5':
+ resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.24.0':
resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==}
engines: {node: '>=18'}
@@ -677,6 +967,12 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.24.0':
resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==}
engines: {node: '>=18'}
@@ -689,6 +985,12 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-s390x@0.24.0':
resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==}
engines: {node: '>=18'}
@@ -701,6 +1003,12 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/linux-x64@0.24.0':
resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==}
engines: {node: '>=18'}
@@ -719,6 +1027,12 @@ packages:
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.24.0':
resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==}
engines: {node: '>=18'}
@@ -743,6 +1057,12 @@ packages:
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.24.0':
resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==}
engines: {node: '>=18'}
@@ -755,6 +1075,12 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/sunos-x64@0.21.5':
+ resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/sunos-x64@0.24.0':
resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==}
engines: {node: '>=18'}
@@ -767,6 +1093,12 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-arm64@0.24.0':
resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==}
engines: {node: '>=18'}
@@ -779,6 +1111,12 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-ia32@0.21.5':
+ resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-ia32@0.24.0':
resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==}
engines: {node: '>=18'}
@@ -791,6 +1129,12 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
'@esbuild/win32-x64@0.24.0':
resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==}
engines: {node: '>=18'}
@@ -1286,82 +1630,298 @@ packages:
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
engines: {node: '>=10'}
- '@swc/helpers@0.5.17':
- resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
+ '@smithy/abort-controller@4.2.12':
+ resolution: {integrity: sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==}
+ engines: {node: '>=18.0.0'}
- '@types/chai@5.2.2':
- resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
+ '@smithy/chunked-blob-reader-native@4.2.3':
+ resolution: {integrity: sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==}
+ engines: {node: '>=18.0.0'}
- '@types/cookie@0.6.0':
- resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
+ '@smithy/chunked-blob-reader@5.2.2':
+ resolution: {integrity: sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==}
+ engines: {node: '>=18.0.0'}
- '@types/debug@4.1.12':
- resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ '@smithy/config-resolver@4.4.11':
+ resolution: {integrity: sha512-YxFiiG4YDAtX7WMN7RuhHZLeTmRRAOyCbr+zB8e3AQzHPnUhS8zXjB1+cniPVQI3xbWsQPM0X2aaIkO/ME0ymw==}
+ engines: {node: '>=18.0.0'}
- '@types/deep-eql@4.0.2':
- resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+ '@smithy/core@3.23.12':
+ resolution: {integrity: sha512-o9VycsYNtgC+Dy3I0yrwCqv9CWicDnke0L7EVOrZtJpjb2t0EjaEofmMrYc0T1Kn3yk32zm6cspxF9u9Bj7e5w==}
+ engines: {node: '>=18.0.0'}
- '@types/estree@1.0.6':
- resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+ '@smithy/credential-provider-imds@4.2.12':
+ resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==}
+ engines: {node: '>=18.0.0'}
- '@types/estree@1.0.8':
- resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+ '@smithy/eventstream-codec@4.2.12':
+ resolution: {integrity: sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==}
+ engines: {node: '>=18.0.0'}
- '@types/fontkit@2.0.8':
- resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==}
+ '@smithy/eventstream-serde-browser@4.2.12':
+ resolution: {integrity: sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==}
+ engines: {node: '>=18.0.0'}
- '@types/hast@3.0.4':
- resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+ '@smithy/eventstream-serde-config-resolver@4.3.12':
+ resolution: {integrity: sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==}
+ engines: {node: '>=18.0.0'}
- '@types/mdast@4.0.4':
- resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+ '@smithy/eventstream-serde-node@4.2.12':
+ resolution: {integrity: sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==}
+ engines: {node: '>=18.0.0'}
- '@types/ms@0.7.34':
- resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ '@smithy/eventstream-serde-universal@4.2.12':
+ resolution: {integrity: sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==}
+ engines: {node: '>=18.0.0'}
- '@types/nlcst@2.0.3':
- resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
+ '@smithy/fetch-http-handler@5.3.15':
+ resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==}
+ engines: {node: '>=18.0.0'}
- '@types/node@12.20.55':
- resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
+ '@smithy/hash-blob-browser@4.2.13':
+ resolution: {integrity: sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==}
+ engines: {node: '>=18.0.0'}
- '@types/node@20.16.13':
- resolution: {integrity: sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==}
+ '@smithy/hash-node@4.2.12':
+ resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==}
+ engines: {node: '>=18.0.0'}
- '@types/node@22.12.0':
- resolution: {integrity: sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==}
+ '@smithy/hash-stream-node@4.2.12':
+ resolution: {integrity: sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==}
+ engines: {node: '>=18.0.0'}
- '@types/normalize-package-data@2.4.4':
- resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+ '@smithy/invalid-dependency@4.2.12':
+ resolution: {integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==}
+ engines: {node: '>=18.0.0'}
- '@types/papaparse@5.3.15':
- resolution: {integrity: sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw==}
+ '@smithy/is-array-buffer@2.2.0':
+ resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==}
+ engines: {node: '>=14.0.0'}
- '@types/pngjs@6.0.5':
- resolution: {integrity: sha512-0k5eKfrA83JOZPppLtS2C7OUtyNAl2wKNxfyYl9Q5g9lPkgBl/9hNyAu6HuEH2J4XmIv2znEpkDd0SaZVxW6iQ==}
+ '@smithy/is-array-buffer@4.2.2':
+ resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==}
+ engines: {node: '>=18.0.0'}
- '@types/statuses@2.0.6':
- resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==}
+ '@smithy/md5-js@4.2.12':
+ resolution: {integrity: sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==}
+ engines: {node: '>=18.0.0'}
- '@types/tough-cookie@4.0.5':
- resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
+ '@smithy/middleware-content-length@4.2.12':
+ resolution: {integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==}
+ engines: {node: '>=18.0.0'}
- '@types/triple-beam@1.3.5':
- resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==}
+ '@smithy/middleware-endpoint@4.4.26':
+ resolution: {integrity: sha512-8Qfikvd2GVKSm8S6IbjfwFlRY9VlMrj0Dp4vTwAuhqbX7NhJKE5DQc2bnfJIcY0B+2YKMDBWfvexbSZeejDgeg==}
+ engines: {node: '>=18.0.0'}
- '@types/unist@3.0.2':
- resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
+ '@smithy/middleware-retry@4.4.43':
+ resolution: {integrity: sha512-ZwsifBdyuNHrFGmbc7bAfP2b54+kt9J2rhFd18ilQGAB+GDiP4SrawqyExbB7v455QVR7Psyhb2kjULvBPIhvA==}
+ engines: {node: '>=18.0.0'}
- '@types/yauzl@2.10.3':
- resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
+ '@smithy/middleware-serde@4.2.15':
+ resolution: {integrity: sha512-ExYhcltZSli0pgAKOpQQe1DLFBLryeZ22605y/YS+mQpdNWekum9Ujb/jMKfJKgjtz1AZldtwA/wCYuKJgjjlg==}
+ engines: {node: '>=18.0.0'}
- '@typescript-eslint/project-service@8.34.1':
- resolution: {integrity: sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <5.9.0'
+ '@smithy/middleware-stack@4.2.12':
+ resolution: {integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==}
+ engines: {node: '>=18.0.0'}
- '@typescript-eslint/tsconfig-utils@8.34.1':
+ '@smithy/node-config-provider@4.3.12':
+ resolution: {integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/node-http-handler@4.5.0':
+ resolution: {integrity: sha512-Rnq9vQWiR1+/I6NZZMNzJHV6pZYyEHt2ZnuV3MG8z2NNenC4i/8Kzttz7CjZiHSmsN5frhXhg17z3Zqjjhmz1A==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/property-provider@4.2.12':
+ resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/protocol-http@5.3.12':
+ resolution: {integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/querystring-builder@4.2.12':
+ resolution: {integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/querystring-parser@4.2.12':
+ resolution: {integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/service-error-classification@4.2.12':
+ resolution: {integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/shared-ini-file-loader@4.4.7':
+ resolution: {integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/signature-v4@5.3.12':
+ resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/smithy-client@4.12.6':
+ resolution: {integrity: sha512-aib3f0jiMsJ6+cvDnXipBsGDL7ztknYSVqJs1FdN9P+u9tr/VzOR7iygSh6EUOdaBeMCMSh3N0VdyYsG4o91DQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/types@4.13.1':
+ resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/url-parser@4.2.12':
+ resolution: {integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-base64@4.3.2':
+ resolution: {integrity: sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-body-length-browser@4.2.2':
+ resolution: {integrity: sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-body-length-node@4.2.3':
+ resolution: {integrity: sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-buffer-from@2.2.0':
+ resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==}
+ engines: {node: '>=14.0.0'}
+
+ '@smithy/util-buffer-from@4.2.2':
+ resolution: {integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-config-provider@4.2.2':
+ resolution: {integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-defaults-mode-browser@4.3.42':
+ resolution: {integrity: sha512-0vjwmcvkWAUtikXnWIUOyV6IFHTEeQUYh3JUZcDgcszF+hD/StAsQ3rCZNZEPHgI9kVNcbnyc8P2CBHnwgmcwg==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-defaults-mode-node@4.2.45':
+ resolution: {integrity: sha512-q5dOqqfTgUcLe38TAGiFn9srToKj2YCHJ34QGOLzM+xYLLA+qRZv7N+33kl1MERVusue36ZHnlNaNEvY/PzSrw==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-endpoints@3.3.3':
+ resolution: {integrity: sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-hex-encoding@4.2.2':
+ resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-middleware@4.2.12':
+ resolution: {integrity: sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-retry@4.2.12':
+ resolution: {integrity: sha512-1zopLDUEOwumjcHdJ1mwBHddubYF8GMQvstVCLC54Y46rqoHwlIU+8ZzUeaBcD+WCJHyDGSeZ2ml9YSe9aqcoQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-stream@4.5.20':
+ resolution: {integrity: sha512-4yXLm5n/B5SRBR2p8cZ90Sbv4zL4NKsgxdzCzp/83cXw2KxLEumt5p+GAVyRNZgQOSrzXn9ARpO0lUe8XSlSDw==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-uri-escape@4.2.2':
+ resolution: {integrity: sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-utf8@2.3.0':
+ resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==}
+ engines: {node: '>=14.0.0'}
+
+ '@smithy/util-utf8@4.2.2':
+ resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/util-waiter@4.2.13':
+ resolution: {integrity: sha512-2zdZ9DTHngRtcYxJK1GUDxruNr53kv5W2Lupe0LMU+Imr6ohQg8M2T14MNkj1Y0wS3FFwpgpGQyvuaMF7CiTmQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/uuid@1.1.2':
+ resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==}
+ engines: {node: '>=18.0.0'}
+
+ '@swc/helpers@0.5.17':
+ resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
+
+ '@types/chai@5.2.2':
+ resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
+
+ '@types/cookie@0.6.0':
+ resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
+
+ '@types/debug@4.1.12':
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+
+ '@types/deep-eql@4.0.2':
+ resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+
+ '@types/estree@1.0.6':
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+
+ '@types/fontkit@2.0.8':
+ resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==}
+
+ '@types/hast@3.0.4':
+ resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+
+ '@types/mdast@4.0.4':
+ resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+
+ '@types/ms@0.7.34':
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+
+ '@types/nlcst@2.0.3':
+ resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
+
+ '@types/node@12.20.55':
+ resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
+
+ '@types/node@20.16.13':
+ resolution: {integrity: sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==}
+
+ '@types/node@22.12.0':
+ resolution: {integrity: sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==}
+
+ '@types/normalize-package-data@2.4.4':
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+
+ '@types/papaparse@5.3.15':
+ resolution: {integrity: sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw==}
+
+ '@types/pngjs@6.0.5':
+ resolution: {integrity: sha512-0k5eKfrA83JOZPppLtS2C7OUtyNAl2wKNxfyYl9Q5g9lPkgBl/9hNyAu6HuEH2J4XmIv2znEpkDd0SaZVxW6iQ==}
+
+ '@types/statuses@2.0.6':
+ resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==}
+
+ '@types/tough-cookie@4.0.5':
+ resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
+
+ '@types/triple-beam@1.3.5':
+ resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==}
+
+ '@types/unist@3.0.2':
+ resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==}
+
+ '@types/yauzl@2.10.3':
+ resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
+
+ '@typescript-eslint/project-service@8.34.1':
+ resolution: {integrity: sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <5.9.0'
+
+ '@typescript-eslint/tsconfig-utils@8.34.1':
resolution: {integrity: sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
@@ -1403,12 +1963,26 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ '@vitest/expect@2.1.9':
+ resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==}
+
'@vitest/expect@3.0.4':
resolution: {integrity: sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==}
'@vitest/expect@3.2.4':
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
+ '@vitest/mocker@2.1.9':
+ resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^5.0.0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
'@vitest/mocker@3.0.4':
resolution: {integrity: sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==}
peerDependencies:
@@ -1431,30 +2005,45 @@ packages:
vite:
optional: true
+ '@vitest/pretty-format@2.1.9':
+ resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==}
+
'@vitest/pretty-format@3.0.4':
resolution: {integrity: sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==}
'@vitest/pretty-format@3.2.4':
resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==}
+ '@vitest/runner@2.1.9':
+ resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==}
+
'@vitest/runner@3.0.4':
resolution: {integrity: sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==}
'@vitest/runner@3.2.4':
resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
+ '@vitest/snapshot@2.1.9':
+ resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==}
+
'@vitest/snapshot@3.0.4':
resolution: {integrity: sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==}
'@vitest/snapshot@3.2.4':
resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==}
+ '@vitest/spy@2.1.9':
+ resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==}
+
'@vitest/spy@3.0.4':
resolution: {integrity: sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==}
'@vitest/spy@3.2.4':
resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==}
+ '@vitest/utils@2.1.9':
+ resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==}
+
'@vitest/utils@3.0.4':
resolution: {integrity: sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==}
@@ -1674,6 +2263,9 @@ packages:
blurhash@2.0.5:
resolution: {integrity: sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==}
+ bowser@2.14.1:
+ resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==}
+
boxen@8.0.1:
resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==}
engines: {node: '>=18'}
@@ -2131,6 +2723,11 @@ packages:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
esbuild@0.24.0:
resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
engines: {node: '>=18'}
@@ -2232,10 +2829,17 @@ packages:
fast-uri@3.0.1:
resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==}
+ fast-xml-builder@1.1.4:
+ resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==}
+
fast-xml-parser@5.2.5:
resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==}
hasBin: true
+ fast-xml-parser@5.5.6:
+ resolution: {integrity: sha512-3+fdZyBRVg29n4rXP0joHthhcHdPUHaIC16cuyyd1iLsuaO6Vea36MPrxgAzbZna8lhvZeRL8Bc9GP56/J9xEw==}
+ hasBin: true
+
fastq@1.17.1:
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
@@ -2412,9 +3016,6 @@ packages:
hast-util-raw@9.0.4:
resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==}
- hast-util-to-html@9.0.4:
- resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==}
-
hast-util-to-html@9.0.5:
resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
@@ -3160,6 +3761,10 @@ packages:
resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ path-expression-matcher@1.1.3:
+ resolution: {integrity: sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==}
+ engines: {node: '>=14.0.0'}
+
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@@ -3182,6 +3787,9 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
pathe@2.0.2:
resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==}
@@ -3647,6 +4255,9 @@ packages:
strnum@2.1.1:
resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==}
+ strnum@2.2.1:
+ resolution: {integrity: sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg==}
+
sucrase@3.35.0:
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -3713,6 +4324,10 @@ packages:
resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
engines: {node: ^18.0.0 || >=20.0.0}
+ tinyrainbow@1.2.0:
+ resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==}
+ engines: {node: '>=14.0.0'}
+
tinyrainbow@2.0.0:
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
engines: {node: '>=14.0.0'}
@@ -4018,6 +4633,11 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+ vite-node@2.1.9:
+ resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+
vite-node@3.0.4:
resolution: {integrity: sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
@@ -4028,6 +4648,37 @@ packages:
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
+ vite@5.4.21:
+ resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
vite@6.3.5:
resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
@@ -4116,6 +4767,31 @@ packages:
vite:
optional: true
+ vitest@2.1.9:
+ resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@types/node': ^18.0.0 || >=20.0.0
+ '@vitest/browser': 2.1.9
+ '@vitest/ui': 2.1.9
+ happy-dom: '*'
+ jsdom: '*'
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
vitest@3.0.4:
resolution: {integrity: sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
@@ -4575,7 +5251,7 @@ snapshots:
'@astrojs/telemetry@3.3.0':
dependencies:
ci-info: 4.2.0
- debug: 4.4.0
+ debug: 4.4.1
dlv: 1.1.3
dset: 3.1.4
is-docker: 3.0.0
@@ -4623,48 +5299,492 @@ snapshots:
'@atproto/lexicon': 0.4.5
zod: 3.25.67
- '@babel/code-frame@7.27.1':
+ '@aws-crypto/crc32@5.2.0':
dependencies:
- '@babel/helper-validator-identifier': 7.27.1
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/helper-string-parser@7.25.7': {}
-
- '@babel/helper-string-parser@7.27.1': {}
-
- '@babel/helper-validator-identifier@7.25.7': {}
+ '@aws-crypto/util': 5.2.0
+ '@aws-sdk/types': 3.973.6
+ tslib: 2.8.1
- '@babel/helper-validator-identifier@7.27.1': {}
+ '@aws-crypto/crc32c@5.2.0':
+ dependencies:
+ '@aws-crypto/util': 5.2.0
+ '@aws-sdk/types': 3.973.6
+ tslib: 2.8.1
- '@babel/parser@7.25.8':
+ '@aws-crypto/sha1-browser@5.2.0':
dependencies:
- '@babel/types': 7.25.8
+ '@aws-crypto/supports-web-crypto': 5.2.0
+ '@aws-crypto/util': 5.2.0
+ '@aws-sdk/types': 3.973.6
+ '@aws-sdk/util-locate-window': 3.965.5
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.8.1
- '@babel/parser@7.27.5':
+ '@aws-crypto/sha256-browser@5.2.0':
dependencies:
- '@babel/types': 7.27.6
+ '@aws-crypto/sha256-js': 5.2.0
+ '@aws-crypto/supports-web-crypto': 5.2.0
+ '@aws-crypto/util': 5.2.0
+ '@aws-sdk/types': 3.973.6
+ '@aws-sdk/util-locate-window': 3.965.5
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.8.1
- '@babel/runtime@7.24.8':
+ '@aws-crypto/sha256-js@5.2.0':
dependencies:
- regenerator-runtime: 0.14.1
+ '@aws-crypto/util': 5.2.0
+ '@aws-sdk/types': 3.973.6
+ tslib: 2.8.1
- '@babel/types@7.25.8':
+ '@aws-crypto/supports-web-crypto@5.2.0':
dependencies:
- '@babel/helper-string-parser': 7.25.7
- '@babel/helper-validator-identifier': 7.25.7
- to-fast-properties: 2.0.0
+ tslib: 2.8.1
- '@babel/types@7.27.6':
+ '@aws-crypto/util@5.2.0':
dependencies:
- '@babel/helper-string-parser': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
+ '@aws-sdk/types': 3.973.6
+ '@smithy/util-utf8': 2.3.0
+ tslib: 2.8.1
- '@bundled-es-modules/cookie@2.0.1':
+ '@aws-sdk/client-s3@3.1012.0':
+ dependencies:
+ '@aws-crypto/sha1-browser': 5.2.0
+ '@aws-crypto/sha256-browser': 5.2.0
+ '@aws-crypto/sha256-js': 5.2.0
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/credential-provider-node': 3.972.22
+ '@aws-sdk/middleware-bucket-endpoint': 3.972.8
+ '@aws-sdk/middleware-expect-continue': 3.972.8
+ '@aws-sdk/middleware-flexible-checksums': 3.974.1
+ '@aws-sdk/middleware-host-header': 3.972.8
+ '@aws-sdk/middleware-location-constraint': 3.972.8
+ '@aws-sdk/middleware-logger': 3.972.8
+ '@aws-sdk/middleware-recursion-detection': 3.972.8
+ '@aws-sdk/middleware-sdk-s3': 3.972.21
+ '@aws-sdk/middleware-ssec': 3.972.8
+ '@aws-sdk/middleware-user-agent': 3.972.22
+ '@aws-sdk/region-config-resolver': 3.972.8
+ '@aws-sdk/signature-v4-multi-region': 3.996.9
+ '@aws-sdk/types': 3.973.6
+ '@aws-sdk/util-endpoints': 3.996.5
+ '@aws-sdk/util-user-agent-browser': 3.972.8
+ '@aws-sdk/util-user-agent-node': 3.973.8
+ '@smithy/config-resolver': 4.4.11
+ '@smithy/core': 3.23.12
+ '@smithy/eventstream-serde-browser': 4.2.12
+ '@smithy/eventstream-serde-config-resolver': 4.3.12
+ '@smithy/eventstream-serde-node': 4.2.12
+ '@smithy/fetch-http-handler': 5.3.15
+ '@smithy/hash-blob-browser': 4.2.13
+ '@smithy/hash-node': 4.2.12
+ '@smithy/hash-stream-node': 4.2.12
+ '@smithy/invalid-dependency': 4.2.12
+ '@smithy/md5-js': 4.2.12
+ '@smithy/middleware-content-length': 4.2.12
+ '@smithy/middleware-endpoint': 4.4.26
+ '@smithy/middleware-retry': 4.4.43
+ '@smithy/middleware-serde': 4.2.15
+ '@smithy/middleware-stack': 4.2.12
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/node-http-handler': 4.5.0
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/smithy-client': 4.12.6
+ '@smithy/types': 4.13.1
+ '@smithy/url-parser': 4.2.12
+ '@smithy/util-base64': 4.3.2
+ '@smithy/util-body-length-browser': 4.2.2
+ '@smithy/util-body-length-node': 4.2.3
+ '@smithy/util-defaults-mode-browser': 4.3.42
+ '@smithy/util-defaults-mode-node': 4.2.45
+ '@smithy/util-endpoints': 3.3.3
+ '@smithy/util-middleware': 4.2.12
+ '@smithy/util-retry': 4.2.12
+ '@smithy/util-stream': 4.5.20
+ '@smithy/util-utf8': 4.2.2
+ '@smithy/util-waiter': 4.2.13
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/core@3.973.21':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@aws-sdk/xml-builder': 3.972.13
+ '@smithy/core': 3.23.12
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/property-provider': 4.2.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/signature-v4': 5.3.12
+ '@smithy/smithy-client': 4.12.6
+ '@smithy/types': 4.13.1
+ '@smithy/util-base64': 4.3.2
+ '@smithy/util-middleware': 4.2.12
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
+
+ '@aws-sdk/crc64-nvme@3.972.5':
dependencies:
- cookie: 0.7.2
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@bundled-es-modules/statuses@1.0.1':
+ '@aws-sdk/credential-provider-env@3.972.19':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/types': 3.973.6
+ '@smithy/property-provider': 4.2.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-http@3.972.21':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/types': 3.973.6
+ '@smithy/fetch-http-handler': 5.3.15
+ '@smithy/node-http-handler': 4.5.0
+ '@smithy/property-provider': 4.2.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/smithy-client': 4.12.6
+ '@smithy/types': 4.13.1
+ '@smithy/util-stream': 4.5.20
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-ini@3.972.21':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/credential-provider-env': 3.972.19
+ '@aws-sdk/credential-provider-http': 3.972.21
+ '@aws-sdk/credential-provider-login': 3.972.21
+ '@aws-sdk/credential-provider-process': 3.972.19
+ '@aws-sdk/credential-provider-sso': 3.972.21
+ '@aws-sdk/credential-provider-web-identity': 3.972.21
+ '@aws-sdk/nested-clients': 3.996.11
+ '@aws-sdk/types': 3.973.6
+ '@smithy/credential-provider-imds': 4.2.12
+ '@smithy/property-provider': 4.2.12
+ '@smithy/shared-ini-file-loader': 4.4.7
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/credential-provider-login@3.972.21':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/nested-clients': 3.996.11
+ '@aws-sdk/types': 3.973.6
+ '@smithy/property-provider': 4.2.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/shared-ini-file-loader': 4.4.7
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/credential-provider-node@3.972.22':
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.972.19
+ '@aws-sdk/credential-provider-http': 3.972.21
+ '@aws-sdk/credential-provider-ini': 3.972.21
+ '@aws-sdk/credential-provider-process': 3.972.19
+ '@aws-sdk/credential-provider-sso': 3.972.21
+ '@aws-sdk/credential-provider-web-identity': 3.972.21
+ '@aws-sdk/types': 3.973.6
+ '@smithy/credential-provider-imds': 4.2.12
+ '@smithy/property-provider': 4.2.12
+ '@smithy/shared-ini-file-loader': 4.4.7
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/credential-provider-process@3.972.19':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/types': 3.973.6
+ '@smithy/property-provider': 4.2.12
+ '@smithy/shared-ini-file-loader': 4.4.7
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-sso@3.972.21':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/nested-clients': 3.996.11
+ '@aws-sdk/token-providers': 3.1012.0
+ '@aws-sdk/types': 3.973.6
+ '@smithy/property-provider': 4.2.12
+ '@smithy/shared-ini-file-loader': 4.4.7
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/credential-provider-web-identity@3.972.21':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/nested-clients': 3.996.11
+ '@aws-sdk/types': 3.973.6
+ '@smithy/property-provider': 4.2.12
+ '@smithy/shared-ini-file-loader': 4.4.7
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/middleware-bucket-endpoint@3.972.8':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@aws-sdk/util-arn-parser': 3.972.3
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ '@smithy/util-config-provider': 4.2.2
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-expect-continue@3.972.8':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-flexible-checksums@3.974.1':
+ dependencies:
+ '@aws-crypto/crc32': 5.2.0
+ '@aws-crypto/crc32c': 5.2.0
+ '@aws-crypto/util': 5.2.0
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/crc64-nvme': 3.972.5
+ '@aws-sdk/types': 3.973.6
+ '@smithy/is-array-buffer': 4.2.2
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ '@smithy/util-middleware': 4.2.12
+ '@smithy/util-stream': 4.5.20
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-host-header@3.972.8':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-location-constraint@3.972.8':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-logger@3.972.8':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-recursion-detection@3.972.8':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@aws/lambda-invoke-store': 0.2.4
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-sdk-s3@3.972.21':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/types': 3.973.6
+ '@aws-sdk/util-arn-parser': 3.972.3
+ '@smithy/core': 3.23.12
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/signature-v4': 5.3.12
+ '@smithy/smithy-client': 4.12.6
+ '@smithy/types': 4.13.1
+ '@smithy/util-config-provider': 4.2.2
+ '@smithy/util-middleware': 4.2.12
+ '@smithy/util-stream': 4.5.20
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-ssec@3.972.8':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-user-agent@3.972.22':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/types': 3.973.6
+ '@aws-sdk/util-endpoints': 3.996.5
+ '@smithy/core': 3.23.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ '@smithy/util-retry': 4.2.12
+ tslib: 2.8.1
+
+ '@aws-sdk/nested-clients@3.996.11':
+ dependencies:
+ '@aws-crypto/sha256-browser': 5.2.0
+ '@aws-crypto/sha256-js': 5.2.0
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/middleware-host-header': 3.972.8
+ '@aws-sdk/middleware-logger': 3.972.8
+ '@aws-sdk/middleware-recursion-detection': 3.972.8
+ '@aws-sdk/middleware-user-agent': 3.972.22
+ '@aws-sdk/region-config-resolver': 3.972.8
+ '@aws-sdk/types': 3.973.6
+ '@aws-sdk/util-endpoints': 3.996.5
+ '@aws-sdk/util-user-agent-browser': 3.972.8
+ '@aws-sdk/util-user-agent-node': 3.973.8
+ '@smithy/config-resolver': 4.4.11
+ '@smithy/core': 3.23.12
+ '@smithy/fetch-http-handler': 5.3.15
+ '@smithy/hash-node': 4.2.12
+ '@smithy/invalid-dependency': 4.2.12
+ '@smithy/middleware-content-length': 4.2.12
+ '@smithy/middleware-endpoint': 4.4.26
+ '@smithy/middleware-retry': 4.4.43
+ '@smithy/middleware-serde': 4.2.15
+ '@smithy/middleware-stack': 4.2.12
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/node-http-handler': 4.5.0
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/smithy-client': 4.12.6
+ '@smithy/types': 4.13.1
+ '@smithy/url-parser': 4.2.12
+ '@smithy/util-base64': 4.3.2
+ '@smithy/util-body-length-browser': 4.2.2
+ '@smithy/util-body-length-node': 4.2.3
+ '@smithy/util-defaults-mode-browser': 4.3.42
+ '@smithy/util-defaults-mode-node': 4.2.45
+ '@smithy/util-endpoints': 3.3.3
+ '@smithy/util-middleware': 4.2.12
+ '@smithy/util-retry': 4.2.12
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/region-config-resolver@3.972.8':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@smithy/config-resolver': 4.4.11
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/signature-v4-multi-region@3.996.9':
+ dependencies:
+ '@aws-sdk/middleware-sdk-s3': 3.972.21
+ '@aws-sdk/types': 3.973.6
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/signature-v4': 5.3.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/token-providers@3.1012.0':
+ dependencies:
+ '@aws-sdk/core': 3.973.21
+ '@aws-sdk/nested-clients': 3.996.11
+ '@aws-sdk/types': 3.973.6
+ '@smithy/property-provider': 4.2.12
+ '@smithy/shared-ini-file-loader': 4.4.7
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - aws-crt
+
+ '@aws-sdk/types@3.973.6':
+ dependencies:
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@aws-sdk/util-arn-parser@3.972.3':
+ dependencies:
+ tslib: 2.8.1
+
+ '@aws-sdk/util-endpoints@3.996.5':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@smithy/types': 4.13.1
+ '@smithy/url-parser': 4.2.12
+ '@smithy/util-endpoints': 3.3.3
+ tslib: 2.8.1
+
+ '@aws-sdk/util-locate-window@3.965.5':
+ dependencies:
+ tslib: 2.8.1
+
+ '@aws-sdk/util-user-agent-browser@3.972.8':
+ dependencies:
+ '@aws-sdk/types': 3.973.6
+ '@smithy/types': 4.13.1
+ bowser: 2.14.1
+ tslib: 2.8.1
+
+ '@aws-sdk/util-user-agent-node@3.973.8':
+ dependencies:
+ '@aws-sdk/middleware-user-agent': 3.972.22
+ '@aws-sdk/types': 3.973.6
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/types': 4.13.1
+ '@smithy/util-config-provider': 4.2.2
+ tslib: 2.8.1
+
+ '@aws-sdk/xml-builder@3.972.13':
+ dependencies:
+ '@smithy/types': 4.13.1
+ fast-xml-parser: 5.5.6
+ tslib: 2.8.1
+
+ '@aws/lambda-invoke-store@0.2.4': {}
+
+ '@babel/code-frame@7.27.1':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.27.1
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/helper-string-parser@7.25.7': {}
+
+ '@babel/helper-string-parser@7.27.1': {}
+
+ '@babel/helper-validator-identifier@7.25.7': {}
+
+ '@babel/helper-validator-identifier@7.27.1': {}
+
+ '@babel/parser@7.25.8':
+ dependencies:
+ '@babel/types': 7.25.8
+
+ '@babel/parser@7.27.5':
+ dependencies:
+ '@babel/types': 7.27.6
+
+ '@babel/runtime@7.24.8':
+ dependencies:
+ regenerator-runtime: 0.14.1
+
+ '@babel/types@7.25.8':
+ dependencies:
+ '@babel/helper-string-parser': 7.25.7
+ '@babel/helper-validator-identifier': 7.25.7
+ to-fast-properties: 2.0.0
+
+ '@babel/types@7.27.6':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
+
+ '@bundled-es-modules/cookie@2.0.1':
+ dependencies:
+ cookie: 0.7.2
+
+ '@bundled-es-modules/statuses@1.0.1':
dependencies:
statuses: 2.0.2
@@ -4882,102 +6002,153 @@ snapshots:
tslib: 2.8.1
optional: true
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
'@esbuild/aix-ppc64@0.24.0':
optional: true
'@esbuild/aix-ppc64@0.25.5':
optional: true
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
'@esbuild/android-arm64@0.24.0':
optional: true
'@esbuild/android-arm64@0.25.5':
optional: true
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
'@esbuild/android-arm@0.24.0':
optional: true
'@esbuild/android-arm@0.25.5':
optional: true
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
'@esbuild/android-x64@0.24.0':
optional: true
'@esbuild/android-x64@0.25.5':
optional: true
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
'@esbuild/darwin-arm64@0.24.0':
optional: true
'@esbuild/darwin-arm64@0.25.5':
optional: true
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
+
'@esbuild/darwin-x64@0.24.0':
optional: true
'@esbuild/darwin-x64@0.25.5':
optional: true
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
+
'@esbuild/freebsd-arm64@0.24.0':
optional: true
'@esbuild/freebsd-arm64@0.25.5':
optional: true
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
+
'@esbuild/freebsd-x64@0.24.0':
optional: true
'@esbuild/freebsd-x64@0.25.5':
optional: true
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
+
'@esbuild/linux-arm64@0.24.0':
optional: true
'@esbuild/linux-arm64@0.25.5':
optional: true
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
+
'@esbuild/linux-arm@0.24.0':
optional: true
'@esbuild/linux-arm@0.25.5':
optional: true
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
+
'@esbuild/linux-ia32@0.24.0':
optional: true
'@esbuild/linux-ia32@0.25.5':
optional: true
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
+
'@esbuild/linux-loong64@0.24.0':
optional: true
'@esbuild/linux-loong64@0.25.5':
optional: true
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
+
'@esbuild/linux-mips64el@0.24.0':
optional: true
'@esbuild/linux-mips64el@0.25.5':
optional: true
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
+
'@esbuild/linux-ppc64@0.24.0':
optional: true
'@esbuild/linux-ppc64@0.25.5':
optional: true
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
+
'@esbuild/linux-riscv64@0.24.0':
optional: true
'@esbuild/linux-riscv64@0.25.5':
optional: true
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
+
'@esbuild/linux-s390x@0.24.0':
optional: true
'@esbuild/linux-s390x@0.25.5':
optional: true
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
+
'@esbuild/linux-x64@0.24.0':
optional: true
@@ -4987,6 +6158,9 @@ snapshots:
'@esbuild/netbsd-arm64@0.25.5':
optional: true
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
+
'@esbuild/netbsd-x64@0.24.0':
optional: true
@@ -4999,30 +6173,45 @@ snapshots:
'@esbuild/openbsd-arm64@0.25.5':
optional: true
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
+
'@esbuild/openbsd-x64@0.24.0':
optional: true
'@esbuild/openbsd-x64@0.25.5':
optional: true
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
+
'@esbuild/sunos-x64@0.24.0':
optional: true
'@esbuild/sunos-x64@0.25.5':
optional: true
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
+
'@esbuild/win32-arm64@0.24.0':
optional: true
'@esbuild/win32-arm64@0.25.5':
optional: true
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
'@esbuild/win32-ia32@0.24.0':
optional: true
'@esbuild/win32-ia32@0.25.5':
optional: true
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
+
'@esbuild/win32-x64@0.24.0':
optional: true
@@ -5364,117 +6553,456 @@ snapshots:
'@rollup/rollup-linux-arm-gnueabihf@4.44.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.24.0':
- optional: true
+ '@rollup/rollup-linux-arm-musleabihf@4.24.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.44.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.24.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.44.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.24.0':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.44.0':
+ optional: true
+
+ '@rollup/rollup-linux-loongarch64-gnu@4.44.0':
+ optional: true
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
+ optional: true
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.24.0':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.44.0':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.44.0':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.24.0':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.44.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.24.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.44.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.24.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.44.0':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.24.0':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.44.0':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.24.0':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.44.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.24.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.44.0':
+ optional: true
+
+ '@rowanmanning/feed-parser@2.1.0':
+ dependencies:
+ fast-xml-parser: 5.2.5
+ html-entities: 2.6.0
+
+ '@shikijs/core@3.7.0':
+ dependencies:
+ '@shikijs/types': 3.7.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.5
+
+ '@shikijs/engine-javascript@3.7.0':
+ dependencies:
+ '@shikijs/types': 3.7.0
+ '@shikijs/vscode-textmate': 10.0.2
+ oniguruma-to-es: 4.3.3
+
+ '@shikijs/engine-oniguruma@3.7.0':
+ dependencies:
+ '@shikijs/types': 3.7.0
+ '@shikijs/vscode-textmate': 10.0.2
+
+ '@shikijs/langs@3.7.0':
+ dependencies:
+ '@shikijs/types': 3.7.0
+
+ '@shikijs/themes@3.7.0':
+ dependencies:
+ '@shikijs/types': 3.7.0
+
+ '@shikijs/types@3.7.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
+ '@shikijs/vscode-textmate@10.0.2': {}
+
+ '@sindresorhus/is@4.6.0': {}
+
+ '@smithy/abort-controller@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@smithy/chunked-blob-reader-native@4.2.3':
+ dependencies:
+ '@smithy/util-base64': 4.3.2
+ tslib: 2.8.1
+
+ '@smithy/chunked-blob-reader@5.2.2':
+ dependencies:
+ tslib: 2.8.1
+
+ '@smithy/config-resolver@4.4.11':
+ dependencies:
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/types': 4.13.1
+ '@smithy/util-config-provider': 4.2.2
+ '@smithy/util-endpoints': 3.3.3
+ '@smithy/util-middleware': 4.2.12
+ tslib: 2.8.1
+
+ '@smithy/core@3.23.12':
+ dependencies:
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ '@smithy/url-parser': 4.2.12
+ '@smithy/util-base64': 4.3.2
+ '@smithy/util-body-length-browser': 4.2.2
+ '@smithy/util-middleware': 4.2.12
+ '@smithy/util-stream': 4.5.20
+ '@smithy/util-utf8': 4.2.2
+ '@smithy/uuid': 1.1.2
+ tslib: 2.8.1
+
+ '@smithy/credential-provider-imds@4.2.12':
+ dependencies:
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/property-provider': 4.2.12
+ '@smithy/types': 4.13.1
+ '@smithy/url-parser': 4.2.12
+ tslib: 2.8.1
+
+ '@smithy/eventstream-codec@4.2.12':
+ dependencies:
+ '@aws-crypto/crc32': 5.2.0
+ '@smithy/types': 4.13.1
+ '@smithy/util-hex-encoding': 4.2.2
+ tslib: 2.8.1
+
+ '@smithy/eventstream-serde-browser@4.2.12':
+ dependencies:
+ '@smithy/eventstream-serde-universal': 4.2.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@smithy/eventstream-serde-config-resolver@4.3.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@smithy/eventstream-serde-node@4.2.12':
+ dependencies:
+ '@smithy/eventstream-serde-universal': 4.2.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@smithy/eventstream-serde-universal@4.2.12':
+ dependencies:
+ '@smithy/eventstream-codec': 4.2.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@smithy/fetch-http-handler@5.3.15':
+ dependencies:
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/querystring-builder': 4.2.12
+ '@smithy/types': 4.13.1
+ '@smithy/util-base64': 4.3.2
+ tslib: 2.8.1
+
+ '@smithy/hash-blob-browser@4.2.13':
+ dependencies:
+ '@smithy/chunked-blob-reader': 5.2.2
+ '@smithy/chunked-blob-reader-native': 4.2.3
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@smithy/hash-node@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ '@smithy/util-buffer-from': 4.2.2
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
+
+ '@smithy/hash-stream-node@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
+
+ '@smithy/invalid-dependency@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@smithy/is-array-buffer@2.2.0':
+ dependencies:
+ tslib: 2.8.1
+
+ '@smithy/is-array-buffer@4.2.2':
+ dependencies:
+ tslib: 2.8.1
+
+ '@smithy/md5-js@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
+
+ '@smithy/middleware-content-length@4.2.12':
+ dependencies:
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@smithy/middleware-endpoint@4.4.26':
+ dependencies:
+ '@smithy/core': 3.23.12
+ '@smithy/middleware-serde': 4.2.15
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/shared-ini-file-loader': 4.4.7
+ '@smithy/types': 4.13.1
+ '@smithy/url-parser': 4.2.12
+ '@smithy/util-middleware': 4.2.12
+ tslib: 2.8.1
- '@rollup/rollup-linux-arm-musleabihf@4.44.0':
- optional: true
+ '@smithy/middleware-retry@4.4.43':
+ dependencies:
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/service-error-classification': 4.2.12
+ '@smithy/smithy-client': 4.12.6
+ '@smithy/types': 4.13.1
+ '@smithy/util-middleware': 4.2.12
+ '@smithy/util-retry': 4.2.12
+ '@smithy/uuid': 1.1.2
+ tslib: 2.8.1
- '@rollup/rollup-linux-arm64-gnu@4.24.0':
- optional: true
+ '@smithy/middleware-serde@4.2.15':
+ dependencies:
+ '@smithy/core': 3.23.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-linux-arm64-gnu@4.44.0':
- optional: true
+ '@smithy/middleware-stack@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-linux-arm64-musl@4.24.0':
- optional: true
+ '@smithy/node-config-provider@4.3.12':
+ dependencies:
+ '@smithy/property-provider': 4.2.12
+ '@smithy/shared-ini-file-loader': 4.4.7
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-linux-arm64-musl@4.44.0':
- optional: true
+ '@smithy/node-http-handler@4.5.0':
+ dependencies:
+ '@smithy/abort-controller': 4.2.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/querystring-builder': 4.2.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-linux-loongarch64-gnu@4.44.0':
- optional: true
+ '@smithy/property-provider@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
- optional: true
+ '@smithy/protocol-http@5.3.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-linux-powerpc64le-gnu@4.44.0':
- optional: true
+ '@smithy/querystring-builder@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ '@smithy/util-uri-escape': 4.2.2
+ tslib: 2.8.1
- '@rollup/rollup-linux-riscv64-gnu@4.24.0':
- optional: true
+ '@smithy/querystring-parser@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-linux-riscv64-gnu@4.44.0':
- optional: true
+ '@smithy/service-error-classification@4.2.12':
+ dependencies:
+ '@smithy/types': 4.13.1
- '@rollup/rollup-linux-riscv64-musl@4.44.0':
- optional: true
+ '@smithy/shared-ini-file-loader@4.4.7':
+ dependencies:
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-linux-s390x-gnu@4.24.0':
- optional: true
+ '@smithy/signature-v4@5.3.12':
+ dependencies:
+ '@smithy/is-array-buffer': 4.2.2
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ '@smithy/util-hex-encoding': 4.2.2
+ '@smithy/util-middleware': 4.2.12
+ '@smithy/util-uri-escape': 4.2.2
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
- '@rollup/rollup-linux-s390x-gnu@4.44.0':
- optional: true
+ '@smithy/smithy-client@4.12.6':
+ dependencies:
+ '@smithy/core': 3.23.12
+ '@smithy/middleware-endpoint': 4.4.26
+ '@smithy/middleware-stack': 4.2.12
+ '@smithy/protocol-http': 5.3.12
+ '@smithy/types': 4.13.1
+ '@smithy/util-stream': 4.5.20
+ tslib: 2.8.1
- '@rollup/rollup-linux-x64-gnu@4.24.0':
- optional: true
+ '@smithy/types@4.13.1':
+ dependencies:
+ tslib: 2.8.1
- '@rollup/rollup-linux-x64-gnu@4.44.0':
- optional: true
+ '@smithy/url-parser@4.2.12':
+ dependencies:
+ '@smithy/querystring-parser': 4.2.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-linux-x64-musl@4.24.0':
- optional: true
+ '@smithy/util-base64@4.3.2':
+ dependencies:
+ '@smithy/util-buffer-from': 4.2.2
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
- '@rollup/rollup-linux-x64-musl@4.44.0':
- optional: true
+ '@smithy/util-body-length-browser@4.2.2':
+ dependencies:
+ tslib: 2.8.1
- '@rollup/rollup-win32-arm64-msvc@4.24.0':
- optional: true
+ '@smithy/util-body-length-node@4.2.3':
+ dependencies:
+ tslib: 2.8.1
- '@rollup/rollup-win32-arm64-msvc@4.44.0':
- optional: true
+ '@smithy/util-buffer-from@2.2.0':
+ dependencies:
+ '@smithy/is-array-buffer': 2.2.0
+ tslib: 2.8.1
- '@rollup/rollup-win32-ia32-msvc@4.24.0':
- optional: true
+ '@smithy/util-buffer-from@4.2.2':
+ dependencies:
+ '@smithy/is-array-buffer': 4.2.2
+ tslib: 2.8.1
- '@rollup/rollup-win32-ia32-msvc@4.44.0':
- optional: true
+ '@smithy/util-config-provider@4.2.2':
+ dependencies:
+ tslib: 2.8.1
- '@rollup/rollup-win32-x64-msvc@4.24.0':
- optional: true
+ '@smithy/util-defaults-mode-browser@4.3.42':
+ dependencies:
+ '@smithy/property-provider': 4.2.12
+ '@smithy/smithy-client': 4.12.6
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rollup/rollup-win32-x64-msvc@4.44.0':
- optional: true
+ '@smithy/util-defaults-mode-node@4.2.45':
+ dependencies:
+ '@smithy/config-resolver': 4.4.11
+ '@smithy/credential-provider-imds': 4.2.12
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/property-provider': 4.2.12
+ '@smithy/smithy-client': 4.12.6
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@rowanmanning/feed-parser@2.1.0':
+ '@smithy/util-endpoints@3.3.3':
dependencies:
- fast-xml-parser: 5.2.5
- html-entities: 2.6.0
+ '@smithy/node-config-provider': 4.3.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@shikijs/core@3.7.0':
+ '@smithy/util-hex-encoding@4.2.2':
dependencies:
- '@shikijs/types': 3.7.0
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.4
- hast-util-to-html: 9.0.5
+ tslib: 2.8.1
- '@shikijs/engine-javascript@3.7.0':
+ '@smithy/util-middleware@4.2.12':
dependencies:
- '@shikijs/types': 3.7.0
- '@shikijs/vscode-textmate': 10.0.2
- oniguruma-to-es: 4.3.3
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@shikijs/engine-oniguruma@3.7.0':
+ '@smithy/util-retry@4.2.12':
dependencies:
- '@shikijs/types': 3.7.0
- '@shikijs/vscode-textmate': 10.0.2
+ '@smithy/service-error-classification': 4.2.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
- '@shikijs/langs@3.7.0':
+ '@smithy/util-stream@4.5.20':
dependencies:
- '@shikijs/types': 3.7.0
+ '@smithy/fetch-http-handler': 5.3.15
+ '@smithy/node-http-handler': 4.5.0
+ '@smithy/types': 4.13.1
+ '@smithy/util-base64': 4.3.2
+ '@smithy/util-buffer-from': 4.2.2
+ '@smithy/util-hex-encoding': 4.2.2
+ '@smithy/util-utf8': 4.2.2
+ tslib: 2.8.1
- '@shikijs/themes@3.7.0':
+ '@smithy/util-uri-escape@4.2.2':
dependencies:
- '@shikijs/types': 3.7.0
+ tslib: 2.8.1
- '@shikijs/types@3.7.0':
+ '@smithy/util-utf8@2.3.0':
dependencies:
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.4
+ '@smithy/util-buffer-from': 2.2.0
+ tslib: 2.8.1
- '@shikijs/vscode-textmate@10.0.2': {}
+ '@smithy/util-utf8@4.2.2':
+ dependencies:
+ '@smithy/util-buffer-from': 4.2.2
+ tslib: 2.8.1
- '@sindresorhus/is@4.6.0': {}
+ '@smithy/util-waiter@4.2.13':
+ dependencies:
+ '@smithy/abort-controller': 4.2.12
+ '@smithy/types': 4.13.1
+ tslib: 2.8.1
+
+ '@smithy/uuid@1.1.2':
+ dependencies:
+ tslib: 2.8.1
'@swc/helpers@0.5.17':
dependencies:
@@ -5551,7 +7079,7 @@ snapshots:
dependencies:
'@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.7.3)
'@typescript-eslint/types': 8.34.1
- debug: 4.4.0
+ debug: 4.4.1
typescript: 5.7.3
transitivePeerDependencies:
- supports-color
@@ -5568,7 +7096,7 @@ snapshots:
'@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.7.3)
'@typescript-eslint/types': 8.34.1
'@typescript-eslint/visitor-keys': 8.34.1
- debug: 4.4.0
+ debug: 4.4.1
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
@@ -5626,11 +7154,18 @@ snapshots:
- rollup
- supports-color
+ '@vitest/expect@2.1.9':
+ dependencies:
+ '@vitest/spy': 2.1.9
+ '@vitest/utils': 2.1.9
+ chai: 5.2.0
+ tinyrainbow: 1.2.0
+
'@vitest/expect@3.0.4':
dependencies:
'@vitest/spy': 3.0.4
'@vitest/utils': 3.0.4
- chai: 5.1.2
+ chai: 5.2.0
tinyrainbow: 2.0.0
'@vitest/expect@3.2.4':
@@ -5641,6 +7176,15 @@ snapshots:
chai: 5.2.0
tinyrainbow: 2.0.0
+ '@vitest/mocker@2.1.9(msw@2.10.2(@types/node@22.12.0)(typescript@5.7.3))(vite@5.4.21(@types/node@22.12.0))':
+ dependencies:
+ '@vitest/spy': 2.1.9
+ estree-walker: 3.0.3
+ magic-string: 0.30.17
+ optionalDependencies:
+ msw: 2.10.2(@types/node@22.12.0)(typescript@5.7.3)
+ vite: 5.4.21(@types/node@22.12.0)
+
'@vitest/mocker@3.0.4(msw@2.10.2(@types/node@22.12.0)(typescript@5.7.3))(vite@6.3.5(@types/node@22.12.0)(jiti@2.4.2)(yaml@2.5.0))':
dependencies:
'@vitest/spy': 3.0.4
@@ -5659,6 +7203,10 @@ snapshots:
msw: 2.10.2(@types/node@22.12.0)(typescript@5.7.3)
vite: 6.3.5(@types/node@22.12.0)(jiti@2.4.2)(yaml@2.5.0)
+ '@vitest/pretty-format@2.1.9':
+ dependencies:
+ tinyrainbow: 1.2.0
+
'@vitest/pretty-format@3.0.4':
dependencies:
tinyrainbow: 2.0.0
@@ -5667,10 +7215,15 @@ snapshots:
dependencies:
tinyrainbow: 2.0.0
+ '@vitest/runner@2.1.9':
+ dependencies:
+ '@vitest/utils': 2.1.9
+ pathe: 1.1.2
+
'@vitest/runner@3.0.4':
dependencies:
'@vitest/utils': 3.0.4
- pathe: 2.0.2
+ pathe: 2.0.3
'@vitest/runner@3.2.4':
dependencies:
@@ -5678,11 +7231,17 @@ snapshots:
pathe: 2.0.3
strip-literal: 3.0.0
+ '@vitest/snapshot@2.1.9':
+ dependencies:
+ '@vitest/pretty-format': 2.1.9
+ magic-string: 0.30.17
+ pathe: 1.1.2
+
'@vitest/snapshot@3.0.4':
dependencies:
'@vitest/pretty-format': 3.0.4
magic-string: 0.30.17
- pathe: 2.0.2
+ pathe: 2.0.3
'@vitest/snapshot@3.2.4':
dependencies:
@@ -5690,6 +7249,10 @@ snapshots:
magic-string: 0.30.17
pathe: 2.0.3
+ '@vitest/spy@2.1.9':
+ dependencies:
+ tinyspy: 3.0.2
+
'@vitest/spy@3.0.4':
dependencies:
tinyspy: 3.0.2
@@ -5698,6 +7261,12 @@ snapshots:
dependencies:
tinyspy: 4.0.3
+ '@vitest/utils@2.1.9':
+ dependencies:
+ '@vitest/pretty-format': 2.1.9
+ loupe: 3.1.4
+ tinyrainbow: 1.2.0
+
'@vitest/utils@3.0.4':
dependencies:
'@vitest/pretty-format': 3.0.4
@@ -5938,13 +7507,13 @@ snapshots:
common-ancestor-path: 1.0.1
cookie: 1.0.2
cssesc: 3.0.0
- debug: 4.4.0
+ debug: 4.4.1
deterministic-object-hash: 2.0.2
devalue: 5.1.1
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.4
- es-module-lexer: 1.6.0
+ es-module-lexer: 1.7.0
esbuild: 0.25.5
estree-walker: 3.0.3
flattie: 1.1.1
@@ -6053,6 +7622,8 @@ snapshots:
blurhash@2.0.5: {}
+ bowser@2.14.1: {}
+
boxen@8.0.1:
dependencies:
ansi-align: 3.0.1
@@ -6060,7 +7631,7 @@ snapshots:
chalk: 5.3.0
cli-boxes: 3.0.0
string-width: 7.2.0
- type-fest: 4.26.1
+ type-fest: 4.41.0
widest-line: 5.0.0
wrap-ansi: 9.0.0
@@ -6470,6 +8041,32 @@ snapshots:
dependencies:
es-errors: 1.3.0
+ esbuild@0.21.5:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.21.5
+ '@esbuild/android-arm': 0.21.5
+ '@esbuild/android-arm64': 0.21.5
+ '@esbuild/android-x64': 0.21.5
+ '@esbuild/darwin-arm64': 0.21.5
+ '@esbuild/darwin-x64': 0.21.5
+ '@esbuild/freebsd-arm64': 0.21.5
+ '@esbuild/freebsd-x64': 0.21.5
+ '@esbuild/linux-arm': 0.21.5
+ '@esbuild/linux-arm64': 0.21.5
+ '@esbuild/linux-ia32': 0.21.5
+ '@esbuild/linux-loong64': 0.21.5
+ '@esbuild/linux-mips64el': 0.21.5
+ '@esbuild/linux-ppc64': 0.21.5
+ '@esbuild/linux-riscv64': 0.21.5
+ '@esbuild/linux-s390x': 0.21.5
+ '@esbuild/linux-x64': 0.21.5
+ '@esbuild/netbsd-x64': 0.21.5
+ '@esbuild/openbsd-x64': 0.21.5
+ '@esbuild/sunos-x64': 0.21.5
+ '@esbuild/win32-arm64': 0.21.5
+ '@esbuild/win32-ia32': 0.21.5
+ '@esbuild/win32-x64': 0.21.5
+
esbuild@0.24.0:
optionalDependencies:
'@esbuild/aix-ppc64': 0.24.0
@@ -6585,7 +8182,7 @@ snapshots:
extract-zip@2.0.1:
dependencies:
- debug: 4.4.0
+ debug: 4.4.1
get-stream: 5.2.0
yauzl: 2.10.0
optionalDependencies:
@@ -6615,10 +8212,20 @@ snapshots:
fast-uri@3.0.1: {}
+ fast-xml-builder@1.1.4:
+ dependencies:
+ path-expression-matcher: 1.1.3
+
fast-xml-parser@5.2.5:
dependencies:
strnum: 2.1.1
+ fast-xml-parser@5.5.6:
+ dependencies:
+ fast-xml-builder: 1.1.4
+ path-expression-matcher: 1.1.3
+ strnum: 2.2.1
+
fastq@1.17.1:
dependencies:
reusify: 1.0.4
@@ -6841,20 +8448,6 @@ snapshots:
web-namespaces: 2.0.1
zwitch: 2.0.4
- hast-util-to-html@9.0.4:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.2
- ccount: 2.0.1
- comma-separated-tokens: 2.0.3
- hast-util-whitespace: 3.0.0
- html-void-elements: 3.0.0
- mdast-util-to-hast: 13.2.0
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
- stringify-entities: 4.0.4
- zwitch: 2.0.4
-
hast-util-to-html@9.0.5:
dependencies:
'@types/hast': 3.0.4
@@ -6917,7 +8510,7 @@ snapshots:
https-proxy-agent@7.0.6:
dependencies:
agent-base: 7.1.3
- debug: 4.4.0
+ debug: 4.4.1
transitivePeerDependencies:
- supports-color
@@ -7110,8 +8703,8 @@ snapshots:
magicast@0.3.5:
dependencies:
- '@babel/parser': 7.25.8
- '@babel/types': 7.25.8
+ '@babel/parser': 7.27.5
+ '@babel/types': 7.27.6
source-map-js: 1.2.1
markdown-table@3.0.3: {}
@@ -7433,7 +9026,7 @@ snapshots:
micromark@4.0.0:
dependencies:
'@types/debug': 4.1.12
- debug: 4.4.0
+ debug: 4.4.1
decode-named-character-reference: 1.0.2
devlop: 1.1.0
micromark-core-commonmark: 2.0.1
@@ -7722,6 +9315,8 @@ snapshots:
path-exists@5.0.0: {}
+ path-expression-matcher@1.1.3: {}
+
path-key@3.1.1: {}
path-key@4.0.0: {}
@@ -7737,6 +9332,8 @@ snapshots:
path-type@4.0.0: {}
+ pathe@1.1.2: {}
+
pathe@2.0.2: {}
pathe@2.0.3: {}
@@ -7933,7 +9530,7 @@ snapshots:
rehype-stringify@10.0.1:
dependencies:
'@types/hast': 3.0.4
- hast-util-to-html: 9.0.4
+ hast-util-to-html: 9.0.5
unified: 11.0.5
rehype@13.0.2:
@@ -8303,6 +9900,8 @@ snapshots:
strnum@2.1.1: {}
+ strnum@2.2.1: {}
+
sucrase@3.35.0:
dependencies:
'@jridgewell/gen-mapping': 0.3.5
@@ -8375,6 +9974,8 @@ snapshots:
tinypool@1.1.1: {}
+ tinyrainbow@1.2.0: {}
+
tinyrainbow@2.0.0: {}
tinyspy@3.0.2: {}
@@ -8622,12 +10223,30 @@ snapshots:
'@types/unist': 3.0.2
vfile-message: 4.0.2
+ vite-node@2.1.9(@types/node@22.12.0):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.1
+ es-module-lexer: 1.7.0
+ pathe: 1.1.2
+ vite: 5.4.21(@types/node@22.12.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
vite-node@3.0.4(@types/node@22.12.0)(jiti@2.4.2)(yaml@2.5.0):
dependencies:
cac: 6.7.14
- debug: 4.4.0
+ debug: 4.4.1
es-module-lexer: 1.6.0
- pathe: 2.0.2
+ pathe: 2.0.3
vite: 6.3.5(@types/node@22.12.0)(jiti@2.4.2)(yaml@2.5.0)
transitivePeerDependencies:
- '@types/node'
@@ -8649,7 +10268,7 @@ snapshots:
debug: 4.4.1
es-module-lexer: 1.7.0
pathe: 2.0.3
- vite: 6.3.5(@types/node@22.12.0)(jiti@2.4.2)(yaml@2.5.0)
+ vite: 7.0.2(@types/node@22.12.0)(jiti@2.4.2)(yaml@2.5.0)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -8664,6 +10283,15 @@ snapshots:
- tsx
- yaml
+ vite@5.4.21(@types/node@22.12.0):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.5.6
+ rollup: 4.44.0
+ optionalDependencies:
+ '@types/node': 22.12.0
+ fsevents: 2.3.3
+
vite@6.3.5(@types/node@22.12.0)(jiti@2.4.2)(yaml@2.5.0):
dependencies:
esbuild: 0.25.5
@@ -8696,6 +10324,41 @@ snapshots:
optionalDependencies:
vite: 6.3.5(@types/node@22.12.0)(jiti@2.4.2)(yaml@2.5.0)
+ vitest@2.1.9(@types/node@22.12.0)(msw@2.10.2(@types/node@22.12.0)(typescript@5.7.3)):
+ dependencies:
+ '@vitest/expect': 2.1.9
+ '@vitest/mocker': 2.1.9(msw@2.10.2(@types/node@22.12.0)(typescript@5.7.3))(vite@5.4.21(@types/node@22.12.0))
+ '@vitest/pretty-format': 2.1.9
+ '@vitest/runner': 2.1.9
+ '@vitest/snapshot': 2.1.9
+ '@vitest/spy': 2.1.9
+ '@vitest/utils': 2.1.9
+ chai: 5.2.0
+ debug: 4.4.1
+ expect-type: 1.2.1
+ magic-string: 0.30.17
+ pathe: 1.1.2
+ std-env: 3.9.0
+ tinybench: 2.9.0
+ tinyexec: 0.3.2
+ tinypool: 1.1.1
+ tinyrainbow: 1.2.0
+ vite: 5.4.21(@types/node@22.12.0)
+ vite-node: 2.1.9(@types/node@22.12.0)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/node': 22.12.0
+ transitivePeerDependencies:
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
vitest@3.0.4(@types/debug@4.1.12)(@types/node@22.12.0)(jiti@2.4.2)(msw@2.10.2(@types/node@22.12.0)(typescript@5.7.3))(yaml@2.5.0):
dependencies:
'@vitest/expect': 3.0.4