├── backend
├── .gitignore
├── .dockerignore
├── tracer.ts
├── sst-env.d.ts
├── tsconfig.json
├── Dockerfile
├── package.json
├── logger.ts
├── main.ts
├── ecs-metadata
│ ├── types.ts
│ └── index.ts
├── middlewares.ts
└── app.ts
├── test-app-signals.js
├── .vscode
└── settings.json
├── .prettierrc
├── next.config.ts
├── postcss.config.mjs
├── eslint.config.mjs
├── tailwind.config.ts
├── sst-env.d.ts
├── tsconfig.json
├── .gitignore
├── package.json
├── lambda
└── handler.ts
├── README.md
├── scripts
├── invoke.sh
└── extract-urls.sh
├── sst.config.ts
└── pnpm-lock.yaml
/backend/.gitignore:
--------------------------------------------------------------------------------
1 | dist
--------------------------------------------------------------------------------
/backend/.dockerignore:
--------------------------------------------------------------------------------
1 |
2 | # sst
3 | .sst
--------------------------------------------------------------------------------
/test-app-signals.js:
--------------------------------------------------------------------------------
1 | const aws = require("@pulumi/aws"); console.log(typeof aws.applicationsignals);
2 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | { "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode" }
2 |
--------------------------------------------------------------------------------
/backend/tracer.ts:
--------------------------------------------------------------------------------
1 | import { trace } from '@opentelemetry/api';
2 |
3 | export const tracer = trace.getTracer(process.env.OTEL_SERVICE_NAME!);
4 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": true,
3 | "trailingComma": "es5",
4 | "singleQuote": true,
5 | "printWidth": 140,
6 | "tabWidth": 2,
7 | "useTabs": false
8 | }
9 |
--------------------------------------------------------------------------------
/next.config.ts:
--------------------------------------------------------------------------------
1 | import type { NextConfig } from "next";
2 |
3 | const nextConfig: NextConfig = {
4 | /* config options here */
5 | };
6 |
7 | export default nextConfig;
8 |
--------------------------------------------------------------------------------
/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | /** @type {import('postcss-load-config').Config} */
2 | const config = {
3 | plugins: {
4 | tailwindcss: {},
5 | },
6 | };
7 |
8 | export default config;
9 |
--------------------------------------------------------------------------------
/backend/sst-env.d.ts:
--------------------------------------------------------------------------------
1 | /* This file is auto-generated by SST. Do not edit. */
2 | /* tslint:disable */
3 | /* eslint-disable */
4 | /* deno-fmt-ignore-file */
5 |
6 | ///
7 |
8 | import "sst"
9 | export {}
--------------------------------------------------------------------------------
/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { dirname } from "path";
2 | import { fileURLToPath } from "url";
3 | import { FlatCompat } from "@eslint/eslintrc";
4 |
5 | const __filename = fileURLToPath(import.meta.url);
6 | const __dirname = dirname(__filename);
7 |
8 | const compat = new FlatCompat({
9 | baseDirectory: __dirname,
10 | });
11 |
12 | const eslintConfig = [
13 | ...compat.extends("next/core-web-vitals", "next/typescript"),
14 | ];
15 |
16 | export default eslintConfig;
17 |
--------------------------------------------------------------------------------
/tailwind.config.ts:
--------------------------------------------------------------------------------
1 | import type { Config } from "tailwindcss";
2 |
3 | export default {
4 | content: [
5 | "./pages/**/*.{js,ts,jsx,tsx,mdx}",
6 | "./components/**/*.{js,ts,jsx,tsx,mdx}",
7 | "./app/**/*.{js,ts,jsx,tsx,mdx}",
8 | ],
9 | theme: {
10 | extend: {
11 | colors: {
12 | background: "var(--background)",
13 | foreground: "var(--foreground)",
14 | },
15 | },
16 | },
17 | plugins: [],
18 | } satisfies Config;
19 |
--------------------------------------------------------------------------------
/backend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "module": "commonjs",
5 | "outDir": "./dist",
6 | "rootDir": "./",
7 | "strict": true,
8 | "esModuleInterop": true,
9 | "skipLibCheck": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "resolveJsonModule": true,
12 | "declaration": true,
13 | "sourceMap": true
14 | },
15 | "include": [
16 | "*.ts"
17 | ],
18 | "exclude": [
19 | "node_modules",
20 | "dist"
21 | ]
22 | }
--------------------------------------------------------------------------------
/sst-env.d.ts:
--------------------------------------------------------------------------------
1 | /* This file is auto-generated by SST. Do not edit. */
2 | /* tslint:disable */
3 | /* eslint-disable */
4 | /* deno-fmt-ignore-file */
5 |
6 | declare module "sst" {
7 | export interface Resource {
8 | "api": {
9 | "type": "sst.aws.ApiGatewayV2"
10 | "url": string
11 | }
12 | "lambdaFunction": {
13 | "name": string
14 | "type": "sst.aws.Function"
15 | "url": string
16 | }
17 | "service": {
18 | "service": string
19 | "type": "sst.aws.Service"
20 | }
21 | "vpc": {
22 | "type": "sst.aws.Vpc"
23 | }
24 | }
25 | }
26 | ///
27 |
28 | import "sst"
29 | export {}
--------------------------------------------------------------------------------
/backend/Dockerfile:
--------------------------------------------------------------------------------
1 | # Use the Node.js 22 Alpine image as the base
2 | FROM node:22-alpine
3 | # Install curl
4 | RUN apk add --no-cache curl
5 | # Set the working directory
6 | WORKDIR /app
7 | # Copy package.json and package-lock.json
8 | COPY package*.json .
9 | # Install all dependencies (including devDependencies for build)
10 | RUN npm install
11 | # Copy TypeScript source files and tsconfig
12 | COPY *.ts tsconfig.json .
13 | COPY ecs-metadata/ ./ecs-metadata/
14 | # Build the TypeScript application
15 | RUN npm run build
16 | # Remove devDependencies to reduce image size
17 | RUN npm prune --production
18 | # Expose port 80
19 | EXPOSE 80
20 | # Start the application
21 | CMD ["npm", "start"]
22 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2017",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "plugins": [
17 | {
18 | "name": "next"
19 | }
20 | ],
21 | "paths": {
22 | "@/*": ["./*"]
23 | }
24 | },
25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26 | "exclude": ["node_modules","sst.config.ts"]
27 | }
28 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | **/node_modules
5 | /.pnp
6 | .pnp.*
7 | .yarn/*
8 | !.yarn/patches
9 | !.yarn/plugins
10 | !.yarn/releases
11 | !.yarn/versions
12 |
13 | # testing
14 | /coverage
15 |
16 | # next.js
17 | /.next/
18 | /out/
19 |
20 | # production
21 | /build
22 |
23 | # misc
24 | .DS_Store
25 | *.pem
26 |
27 | # debug
28 | npm-debug.log*
29 | yarn-debug.log*
30 | yarn-error.log*
31 | .pnpm-debug.log*
32 |
33 | # env files (can opt-in for committing if needed)
34 | .env*
35 |
36 | # vercel
37 | .vercel
38 |
39 | # typescript
40 | *.tsbuildinfo
41 | next-env.d.ts
42 |
43 | # sst
44 | .sst
45 |
46 | # open-next
47 | .open-next
48 |
49 | # infrastructure outputs
50 | output.json
51 |
--------------------------------------------------------------------------------
/backend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "backend",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "main.ts",
6 | "scripts": {
7 | "build": "tsc",
8 | "start": "node dist/main.js",
9 | "dev": "ts-node main.ts"
10 | },
11 | "dependencies": {
12 | "@aws/aws-distro-opentelemetry-node-autoinstrumentation": "^0.7.0",
13 | "@opentelemetry/core": "^2.1.0",
14 | "cors": "^2.8.5",
15 | "express": "^4.18.2",
16 | "luxon": "^3.7.2",
17 | "winston": "^3.17.0"
18 | },
19 | "devDependencies": {
20 | "@opentelemetry/api": "^1.9.0",
21 | "@types/cors": "^2.8.17",
22 | "@types/express": "^4.17.21",
23 | "@types/luxon": "^3.7.1",
24 | "@types/node": "^20.10.0",
25 | "ts-node": "^10.9.2",
26 | "typescript": "^5.3.3"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/backend/logger.ts:
--------------------------------------------------------------------------------
1 | import winston from 'winston';
2 | import { getFormattedStartupTime, getTaskDefinitionVersion } from './ecs-metadata/index';
3 |
4 | // Custom format to add container start time dynamically
5 | const addContainerMetadata = winston.format((info) => {
6 | const containerStart = getFormattedStartupTime();
7 | const taskDefinitionVersion = getTaskDefinitionVersion();
8 | if (containerStart) {
9 | info.containerStart = containerStart;
10 | }
11 | if (taskDefinitionVersion) {
12 | info.taskDefinition = taskDefinitionVersion;
13 | }
14 | return info;
15 | });
16 |
17 | export const logger = winston.createLogger({
18 | level: process.env.LOG_LEVEL || 'info',
19 | format: winston.format.combine(
20 | winston.format.timestamp(),
21 | winston.format.errors({ stack: true }),
22 | addContainerMetadata(),
23 | winston.format.json()
24 | ),
25 | defaultMeta: {
26 | service: process.env.OTEL_SERVICE_NAME!,
27 | environment: process.env.STAGE!,
28 | region: process.env.AWS_REGION || 'local',
29 | },
30 | transports: [new winston.transports.Console()],
31 | });
32 |
--------------------------------------------------------------------------------
/backend/main.ts:
--------------------------------------------------------------------------------
1 | import app from './app';
2 | import { logger } from './logger';
3 | import { fetchECSMetadata, getFormattedStartupTime } from './ecs-metadata/index';
4 |
5 | const port = 80;
6 |
7 | async function startServer() {
8 | try {
9 | logger.info('Starting server initialization...');
10 |
11 | // Fetch ECS metadata first
12 | await fetchECSMetadata();
13 |
14 | const containerStart = getFormattedStartupTime();
15 | logger.info('ECS metadata fetching completed', { containerStart });
16 |
17 | // Start the Express server
18 | app.listen(port, () => {
19 | logger.info('Server started successfully', {
20 | port: port,
21 | environment: process.env.NODE_ENV || 'development',
22 | region: process.env.AWS_REGION || 'local',
23 | logLevel: logger.level,
24 | url: `http://localhost:${port}`,
25 | containerStart,
26 | });
27 | });
28 | } catch (error) {
29 | logger.error('Failed to start server', {
30 | error: error instanceof Error ? error.message : String(error),
31 | });
32 | process.exit(1);
33 | }
34 | }
35 |
36 | // Start the server
37 | startServer();
38 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ecs-fargate",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "build": "next build",
7 | "dev": "next dev",
8 | "lint": "next lint",
9 | "start": "next start",
10 | "sst:deploy:dev": "npx sst deploy --stage=dev",
11 | "sst:remove:dev": "npx sst remove --stage=dev",
12 | "extract-urls:dev": "chmod +x ./scripts/extract-urls.sh && ./scripts/extract-urls.sh --stage=dev",
13 | "invoke:ecs:dev": "chmod +x ./scripts/invoke.sh && ./scripts/invoke.sh --stage=dev --type=ecs --path=${INVOKE_PATH:-/}",
14 | "invoke:lambda:dev": "chmod +x ./scripts/invoke.sh && ./scripts/invoke.sh --stage=dev --type=lambda --path=${INVOKE_PATH:-/}"
15 | },
16 | "dependencies": {
17 | "@opentelemetry/api": "^1.9.0",
18 | "next": "15.1.4",
19 | "react": "^19.0.0",
20 | "react-dom": "^19.0.0",
21 | "sst": "3.17.13"
22 | },
23 | "devDependencies": {
24 | "@eslint/eslintrc": "^3",
25 | "@types/aws-lambda": "^8.10.152",
26 | "@types/node": "^20",
27 | "@types/react": "^19",
28 | "@types/react-dom": "^19",
29 | "eslint": "^9",
30 | "eslint-config-next": "15.1.4",
31 | "postcss": "^8",
32 | "prettier": "^3.4.2",
33 | "tailwindcss": "^3.4.1",
34 | "typescript": "^5"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lambda/handler.ts:
--------------------------------------------------------------------------------
1 | import { context, trace } from '@opentelemetry/api';
2 | import type { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
3 | import { randomBytes } from 'crypto';
4 |
5 | const tracer = trace.getTracer(process.env.OTEL_SERVICE_NAME!);
6 |
7 | export const handler = async (event: APIGatewayProxyEvent): Promise => {
8 | const exampleSpan = tracer.startSpan('lambda-span');
9 |
10 | console.log(`Incoming request`);
11 |
12 | exampleSpan.end();
13 |
14 | const span = trace.getSpan(context.active());
15 | const version = '00';
16 | let flags = '01';
17 | let spanId: string;
18 | let traceId: string;
19 |
20 | if (!span) {
21 | traceId = randomBytes(16).toString('hex');
22 | spanId = randomBytes(8).toString('hex');
23 | } else {
24 | traceId = span.spanContext().traceId;
25 | spanId = span.spanContext().spanId;
26 | flags = span.spanContext().traceFlags.toString();
27 | }
28 |
29 | const traceparent = `${version}-${traceId}-${spanId}-${flags}`;
30 |
31 | return {
32 | statusCode: 200,
33 | headers: {
34 | 'Content-Type': 'application/json',
35 | 'Access-Control-Allow-Origin': '*',
36 | 'traceparent': traceparent,
37 | 'trace_id': traceId,
38 | },
39 | body: JSON.stringify({
40 | message: 'Hello from Lambda!',
41 | }),
42 | };
43 | };
44 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CloudWatch Application Signals via OpenTelemetry on Fargate and Lambda
2 |
3 | This project demonstrates how to run two simple Node.js apps using [Fargate](https://docs.aws.amazon.com/AmazonECS/latest/userguide/what-is-fargate.html) via ECS and [AWS Lambda](https://docs.aws.amazon.com/lambda/) with [SST](https://sst.dev) v3 to showcase [CloudWatch's Application Signals](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Sections.html).
4 |
5 | ## Getting Started
6 |
7 | To run this application, follow these steps:
8 |
9 | 1. Ensure you have Node.js installed on your system.
10 | 2. Clone this repository to your local machine.
11 | 3. Install the dependencies by running `pnpm i` in the project root directory.
12 | 4. Provision the infrastructure via `pnpm run sst:deploy:dev`.
13 | 5. Invoke either ECS or Lambda via the provided NX commands, e.g. `INVOKE_PATH=/lambda pnpm run invoke:ecs:dev`
14 | 6. Open the CloudWatch console to explore your Application Map!
15 |
16 | ## Important: Cost Considerations
17 |
18 | ⚠️ **Warning:** This project spins up Fargate tasks that remain running and will incur ongoing costs (approximately $7-$10 per month, not including CloudWatch charges).
19 |
20 | To avoid unexpected charges, remove all resources when done by running:
21 | ```bash
22 | pnpm run sst:remove:dev
23 | ```
24 |
25 | ## Learn More
26 |
27 | For more AWS fundamentals content and resources:
28 | - Visit our blog at [awsfundamentals.com/blog](https://awsfundamentals.com/blog)
29 | - Check out our other projects on GitHub at [awsfundamentals-hq](https://github.com/awsfundamentals-hq)
30 |
--------------------------------------------------------------------------------
/backend/ecs-metadata/types.ts:
--------------------------------------------------------------------------------
1 | export interface ECSContainer {
2 | DockerId: string;
3 | Name: string;
4 | DockerName: string;
5 | Image: string;
6 | ImageID: string;
7 | Labels: {
8 | 'com.amazonaws.ecs.cluster': string;
9 | 'com.amazonaws.ecs.container-name': string;
10 | 'com.amazonaws.ecs.task-arn': string;
11 | 'com.amazonaws.ecs.task-definition-family': string;
12 | 'com.amazonaws.ecs.task-definition-version': string;
13 | [key: string]: string;
14 | };
15 | DesiredStatus: string;
16 | KnownStatus: string;
17 | Limits: {
18 | CPU: number;
19 | Memory?: number;
20 | };
21 | CreatedAt: string;
22 | StartedAt: string;
23 | Type: string;
24 | Health?: {
25 | status: string;
26 | statusSince: string;
27 | output?: string;
28 | };
29 | LogDriver: string;
30 | LogOptions: {
31 | 'awslogs-group': string;
32 | 'awslogs-region': string;
33 | 'awslogs-stream': string;
34 | mode: string;
35 | };
36 | ContainerARN: string;
37 | Networks: Array<{
38 | NetworkMode: string;
39 | IPv4Addresses: string[];
40 | AttachmentIndex: number;
41 | MACAddress: string;
42 | IPv4SubnetCIDRBlock: string;
43 | DomainNameServers: string[];
44 | DomainNameSearchList: string[];
45 | PrivateDNSName: string;
46 | SubnetGatewayIpv4Address: string;
47 | }>;
48 | Snapshotter: string;
49 | }
50 |
51 | export interface ECSTaskMetadata {
52 | Cluster: string;
53 | TaskARN: string;
54 | Family: string;
55 | Revision: string;
56 | DesiredStatus: string;
57 | KnownStatus: string;
58 | Limits: {
59 | CPU: number;
60 | Memory: number;
61 | };
62 | PullStartedAt: string;
63 | PullStoppedAt: string;
64 | AvailabilityZone: string;
65 | LaunchType: string;
66 | Containers: ECSContainer[];
67 | ServiceName?: string;
68 | ClockDrift?: {
69 | ClockErrorBound: number;
70 | ReferenceTimestamp: string;
71 | ClockSynchronizationStatus: string;
72 | };
73 | EphemeralStorageMetrics?: {
74 | Utilized: number;
75 | Reserved: number;
76 | };
77 | FaultInjectionEnabled?: boolean;
78 | }
79 |
80 | export interface ContainerMetadata {
81 | startTime: string; // ISO string format
82 | taskDefinitionVersion: string;
83 | containerName: string;
84 | taskArn: string;
85 | cluster: string;
86 | }
--------------------------------------------------------------------------------
/backend/middlewares.ts:
--------------------------------------------------------------------------------
1 | import { context, trace } from '@opentelemetry/api';
2 | import { suppressTracing } from '@opentelemetry/core';
3 | import { randomBytes } from 'crypto';
4 | import { NextFunction, Request, Response } from 'express';
5 | import { getRelativeStartupTime, getTaskDefinitionVersion } from './ecs-metadata/index';
6 | import { logger } from './logger';
7 |
8 | export const requestLoggingMiddleware = (req: Request, res: Response, next: NextFunction) => {
9 | const start = Date.now();
10 | const { url, method } = req;
11 | const userAgent = req.get('User-Agent');
12 |
13 | logger.info(`Example ECS Span opened`, { method, url, userAgent });
14 | logger.info('Incoming request', { method, url, userAgent });
15 |
16 | const originalEnd = res.end.bind(res);
17 | res.end = function (chunk?: any, encoding?: BufferEncoding | (() => void), cb?: () => void) {
18 | const duration = `${Date.now() - start}ms`;
19 | const { statusCode } = res;
20 | logger.info('Request completed', { method, url, statusCode, duration });
21 | return originalEnd(chunk, encoding as BufferEncoding, cb);
22 | };
23 |
24 | next();
25 | };
26 |
27 | export const startupHeaderMiddleware = (_req: Request, res: Response, next: NextFunction) => {
28 | const relativeStartupTime = getRelativeStartupTime();
29 | if (relativeStartupTime) {
30 | res.set('x-startup', relativeStartupTime);
31 | }
32 |
33 | const taskDefinitionVersion = getTaskDefinitionVersion();
34 | if (taskDefinitionVersion) {
35 | res.set('x-task-definition', taskDefinitionVersion);
36 | }
37 |
38 | next();
39 | };
40 |
41 | export const traceparentMiddleware = (_req: Request, res: Response, next: NextFunction) => {
42 | let traceparent: string;
43 | const span = trace.getSpan(context.active());
44 |
45 | const version = '00';
46 | let flags = '01';
47 | let spanId: string;
48 | let traceId: string;
49 |
50 | if (!span) {
51 | traceId = randomBytes(16).toString('hex');
52 | spanId = randomBytes(8).toString('hex');
53 | } else {
54 | traceId = span.spanContext().traceId;
55 | spanId = span.spanContext().spanId;
56 | flags = span.spanContext().traceFlags.toString();
57 | }
58 |
59 | traceparent = `${version}-${traceId}-${spanId}-${flags}`;
60 | res.set('traceparent', traceparent);
61 | res.set('trace_id', traceId);
62 | res.locals.traceparent = traceparent;
63 |
64 | next();
65 | };
66 |
67 | export const suppressTracingMiddleware = (req: Request, res: Response, next: NextFunction) => {
68 | if (req.path === '/health') {
69 | const suppressedContext = suppressTracing(context.active());
70 | context.with(suppressedContext, next);
71 | } else {
72 | next();
73 | }
74 | };
75 |
--------------------------------------------------------------------------------
/scripts/invoke.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Invoke deployed infrastructure endpoints
4 | # Usage: ./invoke.sh --stage=dev --type=lambda
5 | # ./invoke.sh --stage=prod --type=ecs
6 | # ./invoke.sh --stage=dev --type=ecs --path=/health
7 | # ./invoke.sh --stage=dev --type=ecs --path=lambda
8 |
9 | set -e
10 |
11 | # Default values
12 | STAGE="dev"
13 | TYPE=""
14 | REQUEST_PATH=""
15 | OUTPUT_FILE="output.json"
16 |
17 | # Parse command line arguments
18 | for arg in "$@"; do
19 | case $arg in
20 | --stage=*)
21 | STAGE="${arg#*=}"
22 | shift
23 | ;;
24 | --type=*)
25 | TYPE="${arg#*=}"
26 | shift
27 | ;;
28 | --path=*)
29 | REQUEST_PATH="${arg#*=}"
30 | shift
31 | ;;
32 | *)
33 | echo "❌ Unknown argument: $arg"
34 | echo " Usage: $0 --stage=dev --type=lambda|ecs [--path=/endpoint]"
35 | exit 1
36 | ;;
37 | esac
38 | done
39 |
40 | # Validate required parameters
41 | if [[ -z "$TYPE" ]]; then
42 | echo "❌ Error: --type parameter is required"
43 | echo " Usage: $0 --stage=$STAGE --type=lambda|ecs [--path=/endpoint]"
44 | exit 1
45 | fi
46 |
47 | if [[ "$TYPE" != "lambda" && "$TYPE" != "ecs" ]]; then
48 | echo "❌ Error: --type must be either 'lambda' or 'ecs'"
49 | echo " Usage: $0 --stage=$STAGE --type=lambda|ecs [--path=/endpoint]"
50 | exit 1
51 | fi
52 |
53 | # Function to append path to URL while avoiding double slashes
54 | append_path() {
55 | local base_url="$1"
56 | local request_path="$2"
57 |
58 | if [[ -z "$request_path" ]]; then
59 | echo "$base_url"
60 | return
61 | fi
62 |
63 | # Remove trailing slash from base URL if it exists
64 | base_url="${base_url%/}"
65 |
66 | # Add leading slash to path if it doesn't exist
67 | if [[ "$request_path" != /* ]]; then
68 | request_path="/$request_path"
69 | fi
70 |
71 | echo "${base_url}${request_path}"
72 | }
73 |
74 | # Check if output.json exists, if not generate it
75 | if [[ ! -f "$OUTPUT_FILE" ]]; then
76 | echo "📄 output.json not found, generating URLs for stage: $STAGE"
77 | if ! pnpm run extract-urls:$STAGE; then
78 | echo "❌ Failed to extract URLs for stage: $STAGE"
79 | exit 1
80 | fi
81 | echo "✅ URLs extracted successfully"
82 | fi
83 |
84 | # Extract the appropriate URL based on type
85 | if [[ "$TYPE" == "lambda" ]]; then
86 | base_url=$(jq -r '.lambdaFunctionUrl // empty' "$OUTPUT_FILE" 2>/dev/null)
87 | if [[ -z "$base_url" || "$base_url" == "null" ]]; then
88 | echo "❌ No Lambda Function URL found in $OUTPUT_FILE"
89 | exit 1
90 | fi
91 | url=$(append_path "$base_url" "$REQUEST_PATH")
92 | echo "⚡ Invoking Lambda Function: $url"
93 | elif [[ "$TYPE" == "ecs" ]]; then
94 | base_url=$(jq -r '.apiGatewayUrl // empty' "$OUTPUT_FILE" 2>/dev/null)
95 | if [[ -z "$base_url" || "$base_url" == "null" ]]; then
96 | echo "❌ No API GW URL found in $OUTPUT_FILE"
97 | exit 1
98 | fi
99 | url=$(append_path "$base_url" "$REQUEST_PATH")
100 | echo "🔗 Invoking ECS API GW: $url"
101 | fi
102 |
103 | # Perform the cURL request
104 | echo "🚀 Making HTTP request..."
105 | echo "---"
106 |
107 | echo "📊 Response Headers:"
108 | echo "----------------"
109 | if ! curl -f -s -D - -o /dev/null "$url" | grep -v "^$" && \
110 | echo "----------------" && \
111 | echo -e "\n📈 Metrics:" && \
112 | curl -f -s -o /dev/null -w "\nHTTP Status: %{http_code}\nResponse Time: %{time_total}s\nTotal Size: %{size_download} bytes\n" "$url"; then
113 | echo ""
114 | echo "❌ Request failed"
115 | exit 1
116 | fi
117 |
118 | echo ""
119 | echo "✅ Request completed successfully"
--------------------------------------------------------------------------------
/scripts/extract-urls.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Extract infrastructure URLs from AWS
4 | # Usage: ./extract-urls.sh --stage=dev
5 |
6 | set -e
7 |
8 | # Default values
9 | APP_NAME="ecs-fargate"
10 | OUTPUT_FILE="output.json"
11 |
12 | # Parse command line arguments
13 | STAGE=""
14 |
15 | for arg in "$@"; do
16 | case $arg in
17 | --stage=*)
18 | STAGE="${arg#*=}"
19 | shift
20 | ;;
21 | *)
22 | echo "❌ Unknown argument: $arg"
23 | exit 1
24 | ;;
25 | esac
26 | done
27 |
28 | # Validate required parameters
29 | if [[ -z "$STAGE" ]]; then
30 | echo "❌ Error: --stage parameter is required"
31 | echo " Usage: $0 --stage=dev"
32 | exit 1
33 | fi
34 |
35 | # Function to get API Gateway URL
36 | get_api_gateway_url() {
37 | local stage=$1
38 | local api_name="${APP_NAME}-${stage}-ecs"
39 |
40 | echo "🔍 Searching for API Gateway in stage: $stage" >&2
41 |
42 | # First, get the API ID
43 | local api_id
44 | api_id=$(aws apigatewayv2 get-apis \
45 | --query "Items[?Name=='${api_name}'].ApiId" \
46 | --output text 2>/dev/null || echo "None")
47 |
48 | if [[ -n "$api_id" && "$api_id" != "None" && "$api_id" != "" ]]; then
49 | # Get the region from AWS CLI configuration
50 | local region
51 | region=$(aws configure get region)
52 | local api_url="https://${api_id}.execute-api.${region}.amazonaws.com/"
53 |
54 | echo "✅ Found API Gateway: $api_url" >&2
55 | echo "$api_url"
56 | else
57 | echo "⚠️ No API Gateway found for stage: $stage" >&2
58 | return 1
59 | fi
60 | }
61 |
62 | # Function to get Lambda Function URL
63 | get_lambda_function_url() {
64 | local stage=$1
65 | local function_name="${APP_NAME}-${stage}-lambda"
66 |
67 | echo "🔍 Searching for Lambda Function in stage: $stage" >&2
68 |
69 | local lambda_url
70 | lambda_url=$(aws lambda get-function-url-config \
71 | --function-name "$function_name" \
72 | --query "FunctionUrl" \
73 | --output text 2>/dev/null || echo "None")
74 |
75 | if [[ -n "$lambda_url" && "$lambda_url" != "None" && "$lambda_url" != "" ]]; then
76 | echo "✅ Found Lambda Function: $lambda_url" >&2
77 | echo "$lambda_url"
78 | else
79 | echo "⚠️ No Lambda Function URL found for stage: $stage" >&2
80 | return 1
81 | fi
82 | }
83 |
84 | # Function to create/update the complete JSON file
85 | create_output_json() {
86 | local lb_url=$1
87 | local lambda_url=$2
88 | local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")
89 |
90 | local temp_file
91 | temp_file=$(mktemp)
92 |
93 | # Create the JSON structure
94 | jq -n \
95 | --arg api_url "$api_url" \
96 | --arg lambda_url "$lambda_url" \
97 | --arg timestamp "$timestamp" \
98 | '{
99 | "apiGatewayUrl": (if $api_url == "" then null else $api_url end),
100 | "lambdaFunctionUrl": (if $lambda_url == "" then null else $lambda_url end),
101 | "extractedAt": $timestamp
102 | }' > "$temp_file" && mv "$temp_file" "$OUTPUT_FILE"
103 | }
104 |
105 | # Main execution
106 | echo "🚀 Extracting infrastructure URLs for stage: $STAGE"
107 |
108 | # Extract API Gateway URL
109 | api_url=""
110 | if url=$(get_api_gateway_url "$STAGE"); then
111 | api_url="$url"
112 | fi
113 |
114 | # Extract Lambda Function URL
115 | lambda_url=""
116 | if url=$(get_lambda_function_url "$STAGE"); then
117 | lambda_url="$url"
118 | fi
119 |
120 | # Create the output file
121 | create_output_json "$api_url" "$lambda_url"
122 |
123 | echo "✅ URLs extracted successfully!"
124 | echo "📁 Written to: $OUTPUT_FILE"
125 |
126 | if [[ -n "$api_url" ]]; then
127 | echo "🌐 API Gateway URL: $api_url"
128 | fi
129 |
130 | if [[ -n "$lambda_url" ]]; then
131 | echo "⚡ Lambda Function URL: $lambda_url"
132 | fi
133 |
134 | # Show summary
135 | if [[ -z "$api_url" && -z "$lambda_url" ]]; then
136 | echo "❌ No infrastructure URLs found for stage: $STAGE"
137 | exit 1
138 | fi
139 |
--------------------------------------------------------------------------------
/backend/app.ts:
--------------------------------------------------------------------------------
1 | import cors from 'cors';
2 | import express from 'express';
3 | import { getFormattedStartupTime, metadataFetched } from './ecs-metadata/index';
4 | import { logger } from './logger';
5 | import { requestLoggingMiddleware, startupHeaderMiddleware, traceparentMiddleware, suppressTracingMiddleware } from './middlewares';
6 | import { tracer } from './tracer';
7 |
8 | const app: express.Application = express();
9 |
10 | app.use(suppressTracingMiddleware);
11 | app.use(cors());
12 | app.use(traceparentMiddleware);
13 | app.use(startupHeaderMiddleware);
14 | app.use(requestLoggingMiddleware);
15 |
16 | app.get('/health', (_req, res) => {
17 | if (!metadataFetched) {
18 | return res.status(503).json({
19 | status: 'Service Unavailable',
20 | message: 'ECS metadata is still being fetched',
21 | ready: false,
22 | });
23 | }
24 |
25 | const containerStart = getFormattedStartupTime();
26 | res.status(200).json({
27 | status: 'OK',
28 | ready: true,
29 | containerStart,
30 | });
31 | });
32 |
33 | app.get('/echo', async (_req, res) => {
34 | try {
35 | const response = await fetch('https://postman-echo.com/get', {
36 | method: 'GET',
37 | headers: { 'Content-Type': 'application/json' },
38 | });
39 |
40 | if (!response.ok) {
41 | throw new Error(`Postman Echo API returned ${response.status}`);
42 | }
43 |
44 | const data = await response.json();
45 |
46 | res.json({
47 | message: 'Echo from Postman Echo API',
48 | postmanEchoResponse: data,
49 | });
50 | } catch (error) {
51 | logger.error('Error in /echo route', { error: error instanceof Error ? error.message : String(error) });
52 | res.status(500).json({
53 | error: 'Failed to call Postman Echo API',
54 | message: error instanceof Error ? error.message : 'Unknown error',
55 | });
56 | }
57 | });
58 |
59 | app.get('/lambda', async (_req, res) => {
60 | try {
61 | const lambdaFunctionUrl = process.env.LAMBDA_FUNCTION_URL;
62 |
63 | if (!lambdaFunctionUrl) {
64 | logger.error('LAMBDA_FUNCTION_URL environment variable not set');
65 | return res.status(500).json({
66 | error: 'Lambda function URL not configured',
67 | message: 'LAMBDA_FUNCTION_URL environment variable is not set',
68 | });
69 | }
70 |
71 | logger.info('Calling Lambda function', { lambdaFunctionUrl });
72 |
73 | const lambdaSpan = tracer.startSpan('invokeLambda');
74 | const response = await fetch(lambdaFunctionUrl, {
75 | method: 'GET',
76 | headers: { 'Content-Type': 'application/json' },
77 | });
78 | lambdaSpan.setStatus({ code: response.status });
79 | lambdaSpan.end();
80 |
81 | if (!response.ok) {
82 | throw new Error(`Lambda function returned ${response.status}: ${response.statusText}`);
83 | }
84 |
85 | const data = await response.json();
86 |
87 | logger.info('Lambda function call completed', {
88 | statusCode: response.status,
89 | responseSize: JSON.stringify(data).length,
90 | });
91 |
92 | res.json(data);
93 | } catch (error) {
94 | logger.error('Error in /lambda route', {
95 | error: error instanceof Error ? error.message : String(error),
96 | lambdaFunctionUrl: process.env.LAMBDA_FUNCTION_URL || 'not-set',
97 | });
98 | res.status(500).json({
99 | error: 'Failed to call Lambda function',
100 | message: error instanceof Error ? error.message : 'Unknown error',
101 | });
102 | }
103 | });
104 |
105 | app.get('/meta', async (_req, res) => {
106 | try {
107 | const metadataUri = process.env.ECS_CONTAINER_METADATA_URI_V4;
108 |
109 | if (!metadataUri) {
110 | logger.error('ECS_CONTAINER_METADATA_URI_V4 environment variable not set');
111 | return res.status(500).json({
112 | error: 'ECS metadata URI not configured',
113 | message: 'ECS_CONTAINER_METADATA_URI_V4 environment variable is not set',
114 | });
115 | }
116 |
117 | logger.info('Fetching ECS task metadata', { metadataUri });
118 |
119 | const response = await fetch(`${metadataUri}/task`);
120 |
121 | if (!response.ok) {
122 | throw new Error(`ECS metadata API returned ${response.status}: ${response.statusText}`);
123 | }
124 |
125 | const data = await response.json();
126 |
127 | logger.info('ECS task metadata retrieved successfully', {
128 | statusCode: response.status,
129 | responseSize: JSON.stringify(data).length,
130 | });
131 |
132 | res.json(data);
133 | } catch (error) {
134 | logger.error('Error in /meta route', {
135 | error: error instanceof Error ? error.message : String(error),
136 | metadataUri: process.env.ECS_CONTAINER_METADATA_URI_V4 || 'not-set',
137 | });
138 | res.status(500).json({
139 | error: 'Failed to fetch ECS task metadata',
140 | message: error instanceof Error ? error.message : 'Unknown error',
141 | });
142 | }
143 | });
144 |
145 | app.use('*', (_req, res) => res.json({ message: 'Hello from Fargate! 🏗️' }));
146 |
147 | export default app;
148 |
--------------------------------------------------------------------------------
/backend/ecs-metadata/index.ts:
--------------------------------------------------------------------------------
1 | import { DateTime } from 'luxon';
2 | import { logger } from '../logger';
3 | import { ECSTaskMetadata, ECSContainer, ContainerMetadata } from './types';
4 |
5 | // Global variable to store the app container's startup time
6 | export let containerStartTime: DateTime | null = null;
7 |
8 | // Global variable to store container metadata
9 | export let containerMetadata: ContainerMetadata | null = null;
10 |
11 | // Flag to track if metadata fetching is complete
12 | export let metadataFetched = false;
13 |
14 | const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
15 |
16 | export async function fetchECSMetadata(): Promise {
17 | const metadataUri = process.env.ECS_CONTAINER_METADATA_URI_V4;
18 |
19 | // If not in ECS environment, use current time as fallback
20 | if (!metadataUri) {
21 | logger.info('Not running in ECS environment, using current time as container start time');
22 | containerStartTime = DateTime.now();
23 | containerMetadata = {
24 | startTime: containerStartTime.toISO() || containerStartTime.toISODate() || 'unknown',
25 | taskDefinitionVersion: 'local-dev',
26 | containerName: 'app',
27 | taskArn: 'local-development',
28 | cluster: 'local',
29 | };
30 | metadataFetched = true;
31 | return;
32 | }
33 |
34 | logger.info('Fetching ECS metadata for container startup time', { metadataUri });
35 |
36 | let retryCount = 0;
37 | const maxRetries = 30; // Maximum number of retries
38 | const baseDelay = 1000; // Base delay in milliseconds
39 |
40 | while (retryCount < maxRetries) {
41 | try {
42 | const controller = new AbortController();
43 | const timeoutId = setTimeout(() => controller.abort(), 5000);
44 |
45 | const response = await fetch(`${metadataUri}/task`, {
46 | signal: controller.signal,
47 | });
48 |
49 | clearTimeout(timeoutId);
50 |
51 | if (!response.ok) {
52 | throw new Error(`ECS metadata API returned ${response.status}: ${response.statusText}`);
53 | }
54 |
55 | const data: ECSTaskMetadata = await response.json();
56 |
57 | // Find the 'app' container
58 | const appContainer = data.Containers.find(container => container.Name === 'app');
59 |
60 | if (!appContainer) {
61 | throw new Error('Could not find "app" container in ECS metadata');
62 | }
63 |
64 | if (appContainer.KnownStatus !== 'RUNNING') {
65 | throw new Error(`App container is not running yet, status: ${appContainer.KnownStatus}`);
66 | }
67 |
68 | // Parse the StartedAt timestamp and convert to luxon DateTime
69 | containerStartTime = DateTime.fromISO(appContainer.StartedAt);
70 |
71 | if (!containerStartTime.isValid) {
72 | throw new Error(`Invalid StartedAt timestamp: ${appContainer.StartedAt}`);
73 | }
74 |
75 | // Extract task definition version from container labels
76 | const taskDefinitionVersion = appContainer.Labels['com.amazonaws.ecs.task-definition-version'];
77 |
78 | // Store container metadata
79 | containerMetadata = {
80 | startTime: appContainer.StartedAt,
81 | taskDefinitionVersion,
82 | containerName: appContainer.Name,
83 | taskArn: data.TaskARN,
84 | cluster: data.Cluster,
85 | };
86 |
87 | logger.info('Successfully retrieved container startup time from ECS metadata', {
88 | startedAt: appContainer.StartedAt,
89 | formattedTime: containerStartTime.toFormat('yyyy-MM-dd HH:mm:ss'),
90 | taskDefinitionVersion,
91 | retryCount,
92 | });
93 |
94 | metadataFetched = true;
95 | return;
96 |
97 | } catch (error) {
98 | retryCount++;
99 | const delay = Math.min(baseDelay * Math.pow(2, retryCount - 1), 30000); // Exponential backoff, max 30 seconds
100 |
101 | logger.warn('Failed to fetch ECS metadata, retrying...', {
102 | error: error instanceof Error ? error.message : String(error),
103 | retryCount,
104 | maxRetries,
105 | nextRetryIn: `${delay}ms`,
106 | });
107 |
108 | if (retryCount >= maxRetries) {
109 | logger.error('Max retries reached for ECS metadata fetching, using current time as fallback', {
110 | maxRetries,
111 | finalError: error instanceof Error ? error.message : String(error),
112 | });
113 |
114 | // Use current time as fallback
115 | containerStartTime = DateTime.now();
116 | containerMetadata = {
117 | startTime: containerStartTime.toISO() || containerStartTime.toISODate() || 'unknown',
118 | taskDefinitionVersion: 'unknown',
119 | containerName: 'app',
120 | taskArn: 'unknown',
121 | cluster: 'unknown',
122 | };
123 | metadataFetched = true;
124 | return;
125 | }
126 |
127 | await sleep(delay);
128 | }
129 | }
130 | }
131 |
132 | // Helper function to get formatted startup time for logging
133 | export function getFormattedStartupTime(): string | null {
134 | return containerStartTime ? containerStartTime.toFormat('yyyy-MM-dd HH:mm:ss') : null;
135 | }
136 |
137 | // Helper function to get relative startup time for headers
138 | export function getRelativeStartupTime(): string | null {
139 | return containerStartTime ? containerStartTime.toRelative() : null;
140 | }
141 |
142 | // Helper function to get task definition version
143 | export function getTaskDefinitionVersion(): string | null {
144 | return containerMetadata ? containerMetadata.taskDefinitionVersion : null;
145 | }
146 |
147 | // Helper function to get all container metadata
148 | export function getContainerMetadata(): ContainerMetadata | null {
149 | return containerMetadata;
150 | }
--------------------------------------------------------------------------------
/sst.config.ts:
--------------------------------------------------------------------------------
1 | // eslint-disable-next-line @typescript-eslint/triple-slash-reference
2 | ///
3 |
4 | const oTelSharedSettings: Record = {
5 | OTEL_LOG_LEVEL: 'WARN',
6 | OTEL_PROPAGATORS: 'xray',
7 | OTEL_LOGS_EXPORTER: 'none',
8 | OTEL_TRACES_EXPORTER: 'none',
9 | OTEL_METRICS_EXPORTER: 'none',
10 | OTEL_TRACES_SAMPLER: 'traceidratio',
11 | OTEL_TRACES_SAMPLER_ARG: '1',
12 | };
13 |
14 | const getOtelResourceAttributes = (params: { name: string; type: 'ecs' | 'lambda' }) => {
15 | const { name, type } = params;
16 | let logGroupPrefix: string;
17 | if (type === 'lambda') {
18 | logGroupPrefix = `/aws/lambda`;
19 | } else if (type === 'ecs') {
20 | logGroupPrefix = `/ecs`;
21 | } else {
22 | throw new Error('Unknown type');
23 | }
24 | const attributes = {
25 | OTEL_SERVICE_NAME: `${$app.name}-${$app.stage}-${type}`,
26 | Application: `${$app.name}-${$app.stage}`,
27 | Owner: `awsfundamentals`,
28 | 'service.name': name,
29 | 'deployment.environment': $app.stage,
30 | 'aws.log.group.names': `${logGroupPrefix}/${name}`,
31 | 'aws.application_signals.metric_resource_keys': 'Application&Owner',
32 | // experimental
33 | 'aws.local.environment': $app.stage,
34 | 'aws.local.service': name,
35 | };
36 | return Object.entries(attributes)
37 | .map(([key, value]) => `${key}=${value}`)
38 | .join(',');
39 | };
40 |
41 | const createCwAgentConfigSsm = () => {
42 | const name = `${$app.name}-${$app.stage}`;
43 | return new aws.ssm.Parameter('cwAgentConfig', {
44 | name: `/ecs/${name}/cw-agent-config`,
45 | type: 'String',
46 | value: `
47 | {
48 | "traces": {
49 | "traces_collected": {
50 | "application_signals": {}
51 | }
52 | },
53 | "logs": {
54 | "metrics_collected": {
55 | "application_signals": {}
56 | }
57 | }
58 | }
59 | `,
60 | });
61 | };
62 |
63 | /**
64 | * Create the necessary roles for ECS: execution role and task role.
65 | *
66 | * • ECS Task Execution Role: Allows ECS to manage the task execution.
67 | * • ECS Task Role: Allows the task to interact with other AWS services.
68 | */
69 | const createRoles = () => {
70 | const managedPolicies = {
71 | taskRole: ['CloudWatchFullAccess', 'AWSXRayDaemonWriteAccess', 'CloudWatchAgentServerPolicy'],
72 | executionRole: ['service-role/AmazonECSTaskExecutionRolePolicy', 'AmazonSSMFullAccess'],
73 | };
74 | const executionRole = new aws.iam.Role('executionRole', {
75 | name: `${$app.name}-${$app.stage}-exec`,
76 | assumeRolePolicy: JSON.stringify({
77 | Version: '2012-10-17',
78 | Statement: [
79 | {
80 | Effect: 'Allow',
81 | Principal: {
82 | Service: 'ecs-tasks.amazonaws.com',
83 | },
84 | Action: 'sts:AssumeRole',
85 | },
86 | ],
87 | }),
88 | });
89 | for (const [index, policyArn] of managedPolicies.executionRole.entries()) {
90 | new aws.iam.RolePolicyAttachment(`executionRoleAttachment${index}`, {
91 | policyArn: $interpolate`arn:aws:iam::aws:policy/${policyArn}`,
92 | role: executionRole,
93 | });
94 | }
95 |
96 | const taskRole = new aws.iam.Role('taskRole', {
97 | name: `${$app.name}-${$app.stage}-task`,
98 | assumeRolePolicy: JSON.stringify({
99 | Version: '2012-10-17',
100 | Statement: [
101 | {
102 | Effect: 'Allow',
103 | Principal: {
104 | Service: 'ecs-tasks.amazonaws.com',
105 | },
106 | Action: 'sts:AssumeRole',
107 | },
108 | ],
109 | }),
110 | });
111 | for (const [index, policyArn] of managedPolicies.taskRole.entries()) {
112 | new aws.iam.RolePolicyAttachment(`taskRoleAttachment${index}`, {
113 | policyArn: $interpolate`arn:aws:iam::aws:policy/${policyArn}`,
114 | role: taskRole,
115 | });
116 | }
117 |
118 | return { executionRole: executionRole.name, taskRole: taskRole.name };
119 | };
120 |
121 | /**
122 | * Create a Lambda function with Function URL enabled.
123 | */
124 | const createLambdaFunction = () => {
125 | const name = `${$app.name}-${$app.stage}-lambda`;
126 |
127 | const lambdaFunction = new sst.aws.Function('lambdaFunction', {
128 | name,
129 | runtime: aws.lambda.Runtime.NodeJS20dX,
130 | handler: 'lambda/handler.handler',
131 | policies: [
132 | 'arn:aws:iam::aws:policy/CloudWatchLambdaApplicationSignalsExecutionRolePolicy',
133 | 'arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess',
134 | ],
135 | timeout: '30 seconds',
136 | url: true,
137 | architecture: 'x86_64',
138 | environment: {
139 | AWS_LAMBDA_EXEC_WRAPPER: '/opt/otel-handler',
140 | LAMBDA_APPLICATION_SIGNALS_REMOTE_ENVIRONMENT: $app.stage,
141 | OTEL_RESOURCE_ATTRIBUTES: getOtelResourceAttributes({ name, type: 'lambda' }),
142 | ...oTelSharedSettings,
143 | },
144 | layers: [
145 | // https://aws-otel.github.io/docs/getting-started/lambda/lambda-js
146 | 'arn:aws:lambda:us-east-1:901920570463:layer:aws-otel-nodejs-amd64-ver-1-30-2:1',
147 | ],
148 | transform: {
149 | function: {
150 | tracingConfig: {
151 | mode: 'Active',
152 | },
153 | },
154 | },
155 | });
156 |
157 | return { lambdaFunction };
158 | };
159 |
160 | /**
161 | * Create the ECS cluster and service.
162 | * This is the ECS service that will run the ECS task.
163 | */
164 | const createEcsService = (lambda: sst.aws.Function) => {
165 | const { taskRole, executionRole } = createRoles();
166 | const cwAgentConfig = createCwAgentConfigSsm();
167 | const name = `${$app.name}-${$app.stage}-ecs`;
168 |
169 | const vpc = new sst.aws.Vpc('vpc');
170 | const cluster = new sst.aws.Cluster('cluster', { vpc, transform: { cluster: { name } } });
171 | const service = new sst.aws.Service('service', {
172 | transform: { service: { name } },
173 | cpu: '0.25 vCPU',
174 | memory: '0.5 GB',
175 | scaling: { min: 1, max: 1 },
176 | cluster,
177 | taskRole,
178 | executionRole,
179 | capacity: 'spot',
180 | serviceRegistry: {
181 | port: 80,
182 | },
183 | containers: [
184 | {
185 | name: 'ecs-cwagent',
186 | image: 'public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest',
187 | ssm: {
188 | CW_CONFIG_CONTENT: cwAgentConfig.arn,
189 | },
190 | environment: {
191 | STAGE: $app.stage,
192 | ECS_CONTAINER_STOP_TIMEOUT: '2',
193 | ECS_IMAGE_PULL_BEHAVIOR: 'prefer-cached',
194 | },
195 | logging: {
196 | retention: '1 week',
197 | name: `/ecs/${name}/cwagent`,
198 | },
199 | health: {
200 | command: ['CMD', '/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent', '--version'],
201 | startPeriod: '30 seconds',
202 | timeout: '5 seconds',
203 | interval: '1 minute',
204 | retries: 10,
205 | },
206 | },
207 | {
208 | name: 'app',
209 | image: {
210 | context: './backend',
211 | dockerfile: 'Dockerfile',
212 | },
213 | health: {
214 | command: ['CMD-SHELL', 'curl -f http://localhost:80/health || exit 1'],
215 | startPeriod: '30 seconds',
216 | timeout: '5 seconds',
217 | interval: '1 minute',
218 | retries: 10,
219 | },
220 | environment: {
221 | STAGE: $app.stage,
222 | ECS_CONTAINER_METADATA_URI: 'http://169.254.170.2/v4',
223 | ECS_ENABLE_CONTAINER_METADATA: 'true',
224 | OTEL_RESOURCE_ATTRIBUTES: getOtelResourceAttributes({ name, type: 'ecs' }),
225 | OTEL_EXPORTER_OTLP_PROTOCOL: 'http/protobuf',
226 | OTEL_AWS_APPLICATION_SIGNALS_ENABLED: 'true',
227 | OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT: 'http://localhost:4316/v1/metrics',
228 | OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: 'http://localhost:4316/v1/traces',
229 | NODE_OPTIONS: `--require @aws/aws-distro-opentelemetry-node-autoinstrumentation/register`,
230 | LAMBDA_FUNCTION_URL: lambda.url,
231 | ...oTelSharedSettings,
232 | },
233 | logging: {
234 | retention: '1 week',
235 | name: `/ecs/${name}/app`,
236 | },
237 | },
238 | ],
239 | });
240 | const api = new sst.aws.ApiGatewayV2('api', {
241 | transform: { api: { name } },
242 | vpc,
243 | });
244 | api.routePrivate('$default', service.nodes.cloudmapService.arn);
245 | return { apiGateway: api };
246 | };
247 |
248 | export default $config({
249 | app(input) {
250 | return {
251 | name: 'ecs-fargate',
252 | removal: input?.stage === 'production' ? 'retain' : 'remove',
253 | protect: ['production'].includes(input?.stage),
254 | home: 'aws',
255 | providers: {
256 | aws: {
257 | version: '7.7.0',
258 | region: 'us-east-1',
259 | defaultTags: {
260 | tags: {
261 | Application: `ecs-fargate-${input.stage}`,
262 | Owner: 'awsfundamentals',
263 | },
264 | },
265 | },
266 | },
267 | };
268 | },
269 | async run() {
270 | const { lambdaFunction } = createLambdaFunction();
271 | createEcsService(lambdaFunction);
272 | },
273 | });
274 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@opentelemetry/api':
12 | specifier: ^1.9.0
13 | version: 1.9.0
14 | next:
15 | specifier: 15.1.4
16 | version: 15.1.4(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
17 | react:
18 | specifier: ^19.0.0
19 | version: 19.0.0
20 | react-dom:
21 | specifier: ^19.0.0
22 | version: 19.0.0(react@19.0.0)
23 | sst:
24 | specifier: 3.17.13
25 | version: 3.17.13
26 | devDependencies:
27 | '@eslint/eslintrc':
28 | specifier: ^3
29 | version: 3.2.0
30 | '@types/aws-lambda':
31 | specifier: ^8.10.152
32 | version: 8.10.152
33 | '@types/node':
34 | specifier: ^20
35 | version: 20.17.12
36 | '@types/react':
37 | specifier: ^19
38 | version: 19.0.6
39 | '@types/react-dom':
40 | specifier: ^19
41 | version: 19.0.3(@types/react@19.0.6)
42 | eslint:
43 | specifier: ^9
44 | version: 9.18.0(jiti@1.21.7)
45 | eslint-config-next:
46 | specifier: 15.1.4
47 | version: 15.1.4(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)
48 | postcss:
49 | specifier: ^8
50 | version: 8.4.49
51 | prettier:
52 | specifier: ^3.4.2
53 | version: 3.4.2
54 | tailwindcss:
55 | specifier: ^3.4.1
56 | version: 3.4.17
57 | typescript:
58 | specifier: ^5
59 | version: 5.7.3
60 |
61 | packages:
62 |
63 | '@alloc/quick-lru@5.2.0':
64 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
65 | engines: {node: '>=10'}
66 |
67 | '@emnapi/runtime@1.3.1':
68 | resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
69 |
70 | '@eslint-community/eslint-utils@4.4.1':
71 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
72 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
73 | peerDependencies:
74 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
75 |
76 | '@eslint-community/regexpp@4.12.1':
77 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
78 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
79 |
80 | '@eslint/config-array@0.19.1':
81 | resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==}
82 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
83 |
84 | '@eslint/core@0.10.0':
85 | resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==}
86 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
87 |
88 | '@eslint/eslintrc@3.2.0':
89 | resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==}
90 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
91 |
92 | '@eslint/js@9.18.0':
93 | resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==}
94 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
95 |
96 | '@eslint/object-schema@2.1.5':
97 | resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==}
98 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
99 |
100 | '@eslint/plugin-kit@0.2.5':
101 | resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==}
102 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
103 |
104 | '@humanfs/core@0.19.1':
105 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
106 | engines: {node: '>=18.18.0'}
107 |
108 | '@humanfs/node@0.16.6':
109 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
110 | engines: {node: '>=18.18.0'}
111 |
112 | '@humanwhocodes/module-importer@1.0.1':
113 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
114 | engines: {node: '>=12.22'}
115 |
116 | '@humanwhocodes/retry@0.3.1':
117 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
118 | engines: {node: '>=18.18'}
119 |
120 | '@humanwhocodes/retry@0.4.1':
121 | resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
122 | engines: {node: '>=18.18'}
123 |
124 | '@img/sharp-darwin-arm64@0.33.5':
125 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
126 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
127 | cpu: [arm64]
128 | os: [darwin]
129 |
130 | '@img/sharp-darwin-x64@0.33.5':
131 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
132 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
133 | cpu: [x64]
134 | os: [darwin]
135 |
136 | '@img/sharp-libvips-darwin-arm64@1.0.4':
137 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
138 | cpu: [arm64]
139 | os: [darwin]
140 |
141 | '@img/sharp-libvips-darwin-x64@1.0.4':
142 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
143 | cpu: [x64]
144 | os: [darwin]
145 |
146 | '@img/sharp-libvips-linux-arm64@1.0.4':
147 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
148 | cpu: [arm64]
149 | os: [linux]
150 |
151 | '@img/sharp-libvips-linux-arm@1.0.5':
152 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
153 | cpu: [arm]
154 | os: [linux]
155 |
156 | '@img/sharp-libvips-linux-s390x@1.0.4':
157 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
158 | cpu: [s390x]
159 | os: [linux]
160 |
161 | '@img/sharp-libvips-linux-x64@1.0.4':
162 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
163 | cpu: [x64]
164 | os: [linux]
165 |
166 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
167 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
168 | cpu: [arm64]
169 | os: [linux]
170 |
171 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
172 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
173 | cpu: [x64]
174 | os: [linux]
175 |
176 | '@img/sharp-linux-arm64@0.33.5':
177 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
178 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
179 | cpu: [arm64]
180 | os: [linux]
181 |
182 | '@img/sharp-linux-arm@0.33.5':
183 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
184 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
185 | cpu: [arm]
186 | os: [linux]
187 |
188 | '@img/sharp-linux-s390x@0.33.5':
189 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
190 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
191 | cpu: [s390x]
192 | os: [linux]
193 |
194 | '@img/sharp-linux-x64@0.33.5':
195 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
196 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
197 | cpu: [x64]
198 | os: [linux]
199 |
200 | '@img/sharp-linuxmusl-arm64@0.33.5':
201 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
202 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
203 | cpu: [arm64]
204 | os: [linux]
205 |
206 | '@img/sharp-linuxmusl-x64@0.33.5':
207 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
208 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
209 | cpu: [x64]
210 | os: [linux]
211 |
212 | '@img/sharp-wasm32@0.33.5':
213 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
214 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
215 | cpu: [wasm32]
216 |
217 | '@img/sharp-win32-ia32@0.33.5':
218 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
219 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
220 | cpu: [ia32]
221 | os: [win32]
222 |
223 | '@img/sharp-win32-x64@0.33.5':
224 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
225 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
226 | cpu: [x64]
227 | os: [win32]
228 |
229 | '@isaacs/cliui@8.0.2':
230 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
231 | engines: {node: '>=12'}
232 |
233 | '@jridgewell/gen-mapping@0.3.8':
234 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
235 | engines: {node: '>=6.0.0'}
236 |
237 | '@jridgewell/resolve-uri@3.1.2':
238 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
239 | engines: {node: '>=6.0.0'}
240 |
241 | '@jridgewell/set-array@1.2.1':
242 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
243 | engines: {node: '>=6.0.0'}
244 |
245 | '@jridgewell/sourcemap-codec@1.5.0':
246 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
247 |
248 | '@jridgewell/trace-mapping@0.3.25':
249 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
250 |
251 | '@modelcontextprotocol/sdk@1.6.1':
252 | resolution: {integrity: sha512-oxzMzYCkZHMntzuyerehK3fV6A2Kwh5BD6CGEJSVDU2QNEhfLOptf2X7esQgaHZXHZY0oHmMsOtIDLP71UJXgA==}
253 | engines: {node: '>=18'}
254 |
255 | '@next/env@15.1.4':
256 | resolution: {integrity: sha512-2fZ5YZjedi5AGaeoaC0B20zGntEHRhi2SdWcu61i48BllODcAmmtj8n7YarSPt4DaTsJaBFdxQAVEVzgmx2Zpw==}
257 |
258 | '@next/eslint-plugin-next@15.1.4':
259 | resolution: {integrity: sha512-HwlEXwCK3sr6zmVGEvWBjW9tBFs1Oe6hTmTLoFQtpm4As5HCdu8jfSE0XJOp7uhfEGLniIx8yrGxEWwNnY0fmQ==}
260 |
261 | '@next/swc-darwin-arm64@15.1.4':
262 | resolution: {integrity: sha512-wBEMBs+np+R5ozN1F8Y8d/Dycns2COhRnkxRc+rvnbXke5uZBHkUGFgWxfTXn5rx7OLijuUhyfB+gC/ap58dDw==}
263 | engines: {node: '>= 10'}
264 | cpu: [arm64]
265 | os: [darwin]
266 |
267 | '@next/swc-darwin-x64@15.1.4':
268 | resolution: {integrity: sha512-7sgf5rM7Z81V9w48F02Zz6DgEJulavC0jadab4ZsJ+K2sxMNK0/BtF8J8J3CxnsJN3DGcIdC260wEKssKTukUw==}
269 | engines: {node: '>= 10'}
270 | cpu: [x64]
271 | os: [darwin]
272 |
273 | '@next/swc-linux-arm64-gnu@15.1.4':
274 | resolution: {integrity: sha512-JaZlIMNaJenfd55kjaLWMfok+vWBlcRxqnRoZrhFQrhM1uAehP3R0+Aoe+bZOogqlZvAz53nY/k3ZyuKDtT2zQ==}
275 | engines: {node: '>= 10'}
276 | cpu: [arm64]
277 | os: [linux]
278 |
279 | '@next/swc-linux-arm64-musl@15.1.4':
280 | resolution: {integrity: sha512-7EBBjNoyTO2ipMDgCiORpwwOf5tIueFntKjcN3NK+GAQD7OzFJe84p7a2eQUeWdpzZvhVXuAtIen8QcH71ZCOQ==}
281 | engines: {node: '>= 10'}
282 | cpu: [arm64]
283 | os: [linux]
284 |
285 | '@next/swc-linux-x64-gnu@15.1.4':
286 | resolution: {integrity: sha512-9TGEgOycqZFuADyFqwmK/9g6S0FYZ3tphR4ebcmCwhL8Y12FW8pIBKJvSwV+UBjMkokstGNH+9F8F031JZKpHw==}
287 | engines: {node: '>= 10'}
288 | cpu: [x64]
289 | os: [linux]
290 |
291 | '@next/swc-linux-x64-musl@15.1.4':
292 | resolution: {integrity: sha512-0578bLRVDJOh+LdIoKvgNDz77+Bd85c5JrFgnlbI1SM3WmEQvsjxTA8ATu9Z9FCiIS/AliVAW2DV/BDwpXbtiQ==}
293 | engines: {node: '>= 10'}
294 | cpu: [x64]
295 | os: [linux]
296 |
297 | '@next/swc-win32-arm64-msvc@15.1.4':
298 | resolution: {integrity: sha512-JgFCiV4libQavwII+kncMCl30st0JVxpPOtzWcAI2jtum4HjYaclobKhj+JsRu5tFqMtA5CJIa0MvYyuu9xjjQ==}
299 | engines: {node: '>= 10'}
300 | cpu: [arm64]
301 | os: [win32]
302 |
303 | '@next/swc-win32-x64-msvc@15.1.4':
304 | resolution: {integrity: sha512-xxsJy9wzq7FR5SqPCUqdgSXiNXrMuidgckBa8nH9HtjjxsilgcN6VgXF6tZ3uEWuVEadotQJI8/9EQ6guTC4Yw==}
305 | engines: {node: '>= 10'}
306 | cpu: [x64]
307 | os: [win32]
308 |
309 | '@nodelib/fs.scandir@2.1.5':
310 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
311 | engines: {node: '>= 8'}
312 |
313 | '@nodelib/fs.stat@2.0.5':
314 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
315 | engines: {node: '>= 8'}
316 |
317 | '@nodelib/fs.walk@1.2.8':
318 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
319 | engines: {node: '>= 8'}
320 |
321 | '@nolyfill/is-core-module@1.0.39':
322 | resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
323 | engines: {node: '>=12.4.0'}
324 |
325 | '@opentelemetry/api@1.9.0':
326 | resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
327 | engines: {node: '>=8.0.0'}
328 |
329 | '@pkgjs/parseargs@0.11.0':
330 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
331 | engines: {node: '>=14'}
332 |
333 | '@rtsao/scc@1.1.0':
334 | resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
335 |
336 | '@rushstack/eslint-patch@1.10.5':
337 | resolution: {integrity: sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==}
338 |
339 | '@swc/counter@0.1.3':
340 | resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
341 |
342 | '@swc/helpers@0.5.15':
343 | resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
344 |
345 | '@tsconfig/bun@1.0.7':
346 | resolution: {integrity: sha512-udGrGJBNQdXGVulehc1aWT73wkR9wdaGBtB6yL70RJsqwW/yJhIg6ZbRlPOfIUiFNrnBuYLBi9CSmMKfDC7dvA==}
347 |
348 | '@types/aws-lambda@8.10.152':
349 | resolution: {integrity: sha512-soT/c2gYBnT5ygwiHPmd9a1bftj462NWVk2tKCc1PYHSIacB2UwbTS2zYG4jzag1mRDuzg/OjtxQjQ2NKRB6Rw==}
350 |
351 | '@types/estree@1.0.6':
352 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
353 |
354 | '@types/json-schema@7.0.15':
355 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
356 |
357 | '@types/json5@0.0.29':
358 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
359 |
360 | '@types/node@20.17.12':
361 | resolution: {integrity: sha512-vo/wmBgMIiEA23A/knMfn/cf37VnuF52nZh5ZoW0GWt4e4sxNquibrMRJ7UQsA06+MBx9r/H1jsI9grYjQCQlw==}
362 |
363 | '@types/react-dom@19.0.3':
364 | resolution: {integrity: sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==}
365 | peerDependencies:
366 | '@types/react': ^19.0.0
367 |
368 | '@types/react@19.0.6':
369 | resolution: {integrity: sha512-gIlMztcTeDgXCUj0vCBOqEuSEhX//63fW9SZtCJ+agxoQTOklwDfiEMlTWn4mR/C/UK5VHlpwsCsOyf7/hc4lw==}
370 |
371 | '@typescript-eslint/eslint-plugin@8.19.1':
372 | resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==}
373 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
374 | peerDependencies:
375 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
376 | eslint: ^8.57.0 || ^9.0.0
377 | typescript: '>=4.8.4 <5.8.0'
378 |
379 | '@typescript-eslint/parser@8.19.1':
380 | resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==}
381 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
382 | peerDependencies:
383 | eslint: ^8.57.0 || ^9.0.0
384 | typescript: '>=4.8.4 <5.8.0'
385 |
386 | '@typescript-eslint/scope-manager@8.19.1':
387 | resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==}
388 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
389 |
390 | '@typescript-eslint/type-utils@8.19.1':
391 | resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==}
392 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
393 | peerDependencies:
394 | eslint: ^8.57.0 || ^9.0.0
395 | typescript: '>=4.8.4 <5.8.0'
396 |
397 | '@typescript-eslint/types@8.19.1':
398 | resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==}
399 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
400 |
401 | '@typescript-eslint/typescript-estree@8.19.1':
402 | resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==}
403 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
404 | peerDependencies:
405 | typescript: '>=4.8.4 <5.8.0'
406 |
407 | '@typescript-eslint/utils@8.19.1':
408 | resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==}
409 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
410 | peerDependencies:
411 | eslint: ^8.57.0 || ^9.0.0
412 | typescript: '>=4.8.4 <5.8.0'
413 |
414 | '@typescript-eslint/visitor-keys@8.19.1':
415 | resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==}
416 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
417 |
418 | accepts@2.0.0:
419 | resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
420 | engines: {node: '>= 0.6'}
421 |
422 | acorn-jsx@5.3.2:
423 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
424 | peerDependencies:
425 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
426 |
427 | acorn@8.14.0:
428 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
429 | engines: {node: '>=0.4.0'}
430 | hasBin: true
431 |
432 | ajv@6.12.6:
433 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
434 |
435 | ansi-regex@5.0.1:
436 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
437 | engines: {node: '>=8'}
438 |
439 | ansi-regex@6.1.0:
440 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
441 | engines: {node: '>=12'}
442 |
443 | ansi-styles@4.3.0:
444 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
445 | engines: {node: '>=8'}
446 |
447 | ansi-styles@6.2.1:
448 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
449 | engines: {node: '>=12'}
450 |
451 | any-promise@1.3.0:
452 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
453 |
454 | anymatch@3.1.3:
455 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
456 | engines: {node: '>= 8'}
457 |
458 | arg@5.0.2:
459 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
460 |
461 | argparse@2.0.1:
462 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
463 |
464 | aria-query@5.3.2:
465 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
466 | engines: {node: '>= 0.4'}
467 |
468 | array-buffer-byte-length@1.0.2:
469 | resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
470 | engines: {node: '>= 0.4'}
471 |
472 | array-includes@3.1.8:
473 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
474 | engines: {node: '>= 0.4'}
475 |
476 | array.prototype.findlast@1.2.5:
477 | resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
478 | engines: {node: '>= 0.4'}
479 |
480 | array.prototype.findlastindex@1.2.5:
481 | resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
482 | engines: {node: '>= 0.4'}
483 |
484 | array.prototype.flat@1.3.3:
485 | resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
486 | engines: {node: '>= 0.4'}
487 |
488 | array.prototype.flatmap@1.3.3:
489 | resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
490 | engines: {node: '>= 0.4'}
491 |
492 | array.prototype.tosorted@1.1.4:
493 | resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
494 | engines: {node: '>= 0.4'}
495 |
496 | arraybuffer.prototype.slice@1.0.4:
497 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
498 | engines: {node: '>= 0.4'}
499 |
500 | ast-types-flow@0.0.8:
501 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
502 |
503 | available-typed-arrays@1.0.7:
504 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
505 | engines: {node: '>= 0.4'}
506 |
507 | aws-sdk@2.1692.0:
508 | resolution: {integrity: sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw==}
509 | engines: {node: '>= 10.0.0'}
510 |
511 | aws4fetch@1.0.18:
512 | resolution: {integrity: sha512-3Cf+YaUl07p24MoQ46rFwulAmiyCwH2+1zw1ZyPAX5OtJ34Hh185DwB8y/qRLb6cYYYtSFJ9pthyLc0MD4e8sQ==}
513 |
514 | axe-core@4.10.2:
515 | resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==}
516 | engines: {node: '>=4'}
517 |
518 | axobject-query@4.1.0:
519 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
520 | engines: {node: '>= 0.4'}
521 |
522 | balanced-match@1.0.2:
523 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
524 |
525 | base64-js@1.5.1:
526 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
527 |
528 | binary-extensions@2.3.0:
529 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
530 | engines: {node: '>=8'}
531 |
532 | body-parser@2.2.0:
533 | resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==}
534 | engines: {node: '>=18'}
535 |
536 | brace-expansion@1.1.11:
537 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
538 |
539 | brace-expansion@2.0.1:
540 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
541 |
542 | braces@3.0.3:
543 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
544 | engines: {node: '>=8'}
545 |
546 | buffer@4.9.2:
547 | resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==}
548 |
549 | busboy@1.6.0:
550 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
551 | engines: {node: '>=10.16.0'}
552 |
553 | bytes@3.1.2:
554 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
555 | engines: {node: '>= 0.8'}
556 |
557 | call-bind-apply-helpers@1.0.1:
558 | resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==}
559 | engines: {node: '>= 0.4'}
560 |
561 | call-bind@1.0.8:
562 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
563 | engines: {node: '>= 0.4'}
564 |
565 | call-bound@1.0.3:
566 | resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
567 | engines: {node: '>= 0.4'}
568 |
569 | callsites@3.1.0:
570 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
571 | engines: {node: '>=6'}
572 |
573 | camelcase-css@2.0.1:
574 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
575 | engines: {node: '>= 6'}
576 |
577 | caniuse-lite@1.0.30001692:
578 | resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==}
579 |
580 | chalk@4.1.2:
581 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
582 | engines: {node: '>=10'}
583 |
584 | chokidar@3.6.0:
585 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
586 | engines: {node: '>= 8.10.0'}
587 |
588 | client-only@0.0.1:
589 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
590 |
591 | color-convert@2.0.1:
592 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
593 | engines: {node: '>=7.0.0'}
594 |
595 | color-name@1.1.4:
596 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
597 |
598 | color-string@1.9.1:
599 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
600 |
601 | color@4.2.3:
602 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
603 | engines: {node: '>=12.5.0'}
604 |
605 | commander@4.1.1:
606 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
607 | engines: {node: '>= 6'}
608 |
609 | concat-map@0.0.1:
610 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
611 |
612 | content-disposition@1.0.0:
613 | resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
614 | engines: {node: '>= 0.6'}
615 |
616 | content-type@1.0.5:
617 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
618 | engines: {node: '>= 0.6'}
619 |
620 | cookie-signature@1.2.2:
621 | resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
622 | engines: {node: '>=6.6.0'}
623 |
624 | cookie@0.7.2:
625 | resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
626 | engines: {node: '>= 0.6'}
627 |
628 | cors@2.8.5:
629 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
630 | engines: {node: '>= 0.10'}
631 |
632 | cross-spawn@7.0.6:
633 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
634 | engines: {node: '>= 8'}
635 |
636 | cssesc@3.0.0:
637 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
638 | engines: {node: '>=4'}
639 | hasBin: true
640 |
641 | csstype@3.1.3:
642 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
643 |
644 | damerau-levenshtein@1.0.8:
645 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
646 |
647 | data-view-buffer@1.0.2:
648 | resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
649 | engines: {node: '>= 0.4'}
650 |
651 | data-view-byte-length@1.0.2:
652 | resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
653 | engines: {node: '>= 0.4'}
654 |
655 | data-view-byte-offset@1.0.1:
656 | resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
657 | engines: {node: '>= 0.4'}
658 |
659 | debug@3.2.7:
660 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
661 | peerDependencies:
662 | supports-color: '*'
663 | peerDependenciesMeta:
664 | supports-color:
665 | optional: true
666 |
667 | debug@4.4.0:
668 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
669 | engines: {node: '>=6.0'}
670 | peerDependencies:
671 | supports-color: '*'
672 | peerDependenciesMeta:
673 | supports-color:
674 | optional: true
675 |
676 | deep-is@0.1.4:
677 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
678 |
679 | define-data-property@1.1.4:
680 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
681 | engines: {node: '>= 0.4'}
682 |
683 | define-properties@1.2.1:
684 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
685 | engines: {node: '>= 0.4'}
686 |
687 | depd@2.0.0:
688 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
689 | engines: {node: '>= 0.8'}
690 |
691 | detect-libc@2.0.3:
692 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
693 | engines: {node: '>=8'}
694 |
695 | didyoumean@1.2.2:
696 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
697 |
698 | dlv@1.1.3:
699 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
700 |
701 | doctrine@2.1.0:
702 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
703 | engines: {node: '>=0.10.0'}
704 |
705 | dunder-proto@1.0.1:
706 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
707 | engines: {node: '>= 0.4'}
708 |
709 | eastasianwidth@0.2.0:
710 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
711 |
712 | ee-first@1.1.1:
713 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
714 |
715 | emoji-regex@8.0.0:
716 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
717 |
718 | emoji-regex@9.2.2:
719 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
720 |
721 | encodeurl@2.0.0:
722 | resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
723 | engines: {node: '>= 0.8'}
724 |
725 | enhanced-resolve@5.18.0:
726 | resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==}
727 | engines: {node: '>=10.13.0'}
728 |
729 | es-abstract@1.23.9:
730 | resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
731 | engines: {node: '>= 0.4'}
732 |
733 | es-define-property@1.0.1:
734 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
735 | engines: {node: '>= 0.4'}
736 |
737 | es-errors@1.3.0:
738 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
739 | engines: {node: '>= 0.4'}
740 |
741 | es-iterator-helpers@1.2.1:
742 | resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==}
743 | engines: {node: '>= 0.4'}
744 |
745 | es-object-atoms@1.0.0:
746 | resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
747 | engines: {node: '>= 0.4'}
748 |
749 | es-set-tostringtag@2.1.0:
750 | resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
751 | engines: {node: '>= 0.4'}
752 |
753 | es-shim-unscopables@1.0.2:
754 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
755 |
756 | es-to-primitive@1.3.0:
757 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
758 | engines: {node: '>= 0.4'}
759 |
760 | escape-html@1.0.3:
761 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
762 |
763 | escape-string-regexp@4.0.0:
764 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
765 | engines: {node: '>=10'}
766 |
767 | eslint-config-next@15.1.4:
768 | resolution: {integrity: sha512-u9+7lFmfhKNgGjhQ9tBeyCFsPJyq0SvGioMJBngPC7HXUpR0U+ckEwQR48s7TrRNHra1REm6evGL2ie38agALg==}
769 | peerDependencies:
770 | eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
771 | typescript: '>=3.3.1'
772 | peerDependenciesMeta:
773 | typescript:
774 | optional: true
775 |
776 | eslint-import-resolver-node@0.3.9:
777 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
778 |
779 | eslint-import-resolver-typescript@3.7.0:
780 | resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==}
781 | engines: {node: ^14.18.0 || >=16.0.0}
782 | peerDependencies:
783 | eslint: '*'
784 | eslint-plugin-import: '*'
785 | eslint-plugin-import-x: '*'
786 | peerDependenciesMeta:
787 | eslint-plugin-import:
788 | optional: true
789 | eslint-plugin-import-x:
790 | optional: true
791 |
792 | eslint-module-utils@2.12.0:
793 | resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==}
794 | engines: {node: '>=4'}
795 | peerDependencies:
796 | '@typescript-eslint/parser': '*'
797 | eslint: '*'
798 | eslint-import-resolver-node: '*'
799 | eslint-import-resolver-typescript: '*'
800 | eslint-import-resolver-webpack: '*'
801 | peerDependenciesMeta:
802 | '@typescript-eslint/parser':
803 | optional: true
804 | eslint:
805 | optional: true
806 | eslint-import-resolver-node:
807 | optional: true
808 | eslint-import-resolver-typescript:
809 | optional: true
810 | eslint-import-resolver-webpack:
811 | optional: true
812 |
813 | eslint-plugin-import@2.31.0:
814 | resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==}
815 | engines: {node: '>=4'}
816 | peerDependencies:
817 | '@typescript-eslint/parser': '*'
818 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
819 | peerDependenciesMeta:
820 | '@typescript-eslint/parser':
821 | optional: true
822 |
823 | eslint-plugin-jsx-a11y@6.10.2:
824 | resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
825 | engines: {node: '>=4.0'}
826 | peerDependencies:
827 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
828 |
829 | eslint-plugin-react-hooks@5.1.0:
830 | resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==}
831 | engines: {node: '>=10'}
832 | peerDependencies:
833 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
834 |
835 | eslint-plugin-react@7.37.4:
836 | resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==}
837 | engines: {node: '>=4'}
838 | peerDependencies:
839 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
840 |
841 | eslint-scope@8.2.0:
842 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==}
843 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
844 |
845 | eslint-visitor-keys@3.4.3:
846 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
847 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
848 |
849 | eslint-visitor-keys@4.2.0:
850 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
851 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
852 |
853 | eslint@9.18.0:
854 | resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==}
855 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
856 | hasBin: true
857 | peerDependencies:
858 | jiti: '*'
859 | peerDependenciesMeta:
860 | jiti:
861 | optional: true
862 |
863 | espree@10.3.0:
864 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
865 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
866 |
867 | esquery@1.6.0:
868 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
869 | engines: {node: '>=0.10'}
870 |
871 | esrecurse@4.3.0:
872 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
873 | engines: {node: '>=4.0'}
874 |
875 | estraverse@5.3.0:
876 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
877 | engines: {node: '>=4.0'}
878 |
879 | esutils@2.0.3:
880 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
881 | engines: {node: '>=0.10.0'}
882 |
883 | etag@1.8.1:
884 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
885 | engines: {node: '>= 0.6'}
886 |
887 | events@1.1.1:
888 | resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==}
889 | engines: {node: '>=0.4.x'}
890 |
891 | eventsource-parser@3.0.6:
892 | resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==}
893 | engines: {node: '>=18.0.0'}
894 |
895 | eventsource@3.0.7:
896 | resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==}
897 | engines: {node: '>=18.0.0'}
898 |
899 | express-rate-limit@7.5.1:
900 | resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==}
901 | engines: {node: '>= 16'}
902 | peerDependencies:
903 | express: '>= 4.11'
904 |
905 | express@5.1.0:
906 | resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
907 | engines: {node: '>= 18'}
908 |
909 | fast-deep-equal@3.1.3:
910 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
911 |
912 | fast-glob@3.3.1:
913 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
914 | engines: {node: '>=8.6.0'}
915 |
916 | fast-glob@3.3.3:
917 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
918 | engines: {node: '>=8.6.0'}
919 |
920 | fast-json-stable-stringify@2.1.0:
921 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
922 |
923 | fast-levenshtein@2.0.6:
924 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
925 |
926 | fastq@1.18.0:
927 | resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==}
928 |
929 | file-entry-cache@8.0.0:
930 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
931 | engines: {node: '>=16.0.0'}
932 |
933 | fill-range@7.1.1:
934 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
935 | engines: {node: '>=8'}
936 |
937 | finalhandler@2.1.0:
938 | resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
939 | engines: {node: '>= 0.8'}
940 |
941 | find-up@5.0.0:
942 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
943 | engines: {node: '>=10'}
944 |
945 | flat-cache@4.0.1:
946 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
947 | engines: {node: '>=16'}
948 |
949 | flatted@3.3.2:
950 | resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
951 |
952 | for-each@0.3.3:
953 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
954 |
955 | foreground-child@3.3.0:
956 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
957 | engines: {node: '>=14'}
958 |
959 | forwarded@0.2.0:
960 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
961 | engines: {node: '>= 0.6'}
962 |
963 | fresh@2.0.0:
964 | resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
965 | engines: {node: '>= 0.8'}
966 |
967 | fsevents@2.3.3:
968 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
969 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
970 | os: [darwin]
971 |
972 | function-bind@1.1.2:
973 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
974 |
975 | function.prototype.name@1.1.8:
976 | resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
977 | engines: {node: '>= 0.4'}
978 |
979 | functions-have-names@1.2.3:
980 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
981 |
982 | get-intrinsic@1.2.7:
983 | resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==}
984 | engines: {node: '>= 0.4'}
985 |
986 | get-proto@1.0.1:
987 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
988 | engines: {node: '>= 0.4'}
989 |
990 | get-symbol-description@1.1.0:
991 | resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
992 | engines: {node: '>= 0.4'}
993 |
994 | get-tsconfig@4.8.1:
995 | resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
996 |
997 | glob-parent@5.1.2:
998 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
999 | engines: {node: '>= 6'}
1000 |
1001 | glob-parent@6.0.2:
1002 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1003 | engines: {node: '>=10.13.0'}
1004 |
1005 | glob@10.4.5:
1006 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
1007 | hasBin: true
1008 |
1009 | globals@14.0.0:
1010 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
1011 | engines: {node: '>=18'}
1012 |
1013 | globalthis@1.0.4:
1014 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
1015 | engines: {node: '>= 0.4'}
1016 |
1017 | gopd@1.2.0:
1018 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
1019 | engines: {node: '>= 0.4'}
1020 |
1021 | graceful-fs@4.2.11:
1022 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1023 |
1024 | graphemer@1.4.0:
1025 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1026 |
1027 | has-bigints@1.1.0:
1028 | resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
1029 | engines: {node: '>= 0.4'}
1030 |
1031 | has-flag@4.0.0:
1032 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1033 | engines: {node: '>=8'}
1034 |
1035 | has-property-descriptors@1.0.2:
1036 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
1037 |
1038 | has-proto@1.2.0:
1039 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
1040 | engines: {node: '>= 0.4'}
1041 |
1042 | has-symbols@1.1.0:
1043 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
1044 | engines: {node: '>= 0.4'}
1045 |
1046 | has-tostringtag@1.0.2:
1047 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
1048 | engines: {node: '>= 0.4'}
1049 |
1050 | hasown@2.0.2:
1051 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
1052 | engines: {node: '>= 0.4'}
1053 |
1054 | hono@4.7.4:
1055 | resolution: {integrity: sha512-Pst8FuGqz3L7tFF+u9Pu70eI0xa5S3LPUmrNd5Jm8nTHze9FxLTK9Kaj5g/k4UcwuJSXTP65SyHOPLrffpcAJg==}
1056 | engines: {node: '>=16.9.0'}
1057 |
1058 | http-errors@2.0.0:
1059 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
1060 | engines: {node: '>= 0.8'}
1061 |
1062 | iconv-lite@0.6.3:
1063 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
1064 | engines: {node: '>=0.10.0'}
1065 |
1066 | iconv-lite@0.7.0:
1067 | resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==}
1068 | engines: {node: '>=0.10.0'}
1069 |
1070 | ieee754@1.1.13:
1071 | resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==}
1072 |
1073 | ignore@5.3.2:
1074 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
1075 | engines: {node: '>= 4'}
1076 |
1077 | import-fresh@3.3.0:
1078 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1079 | engines: {node: '>=6'}
1080 |
1081 | imurmurhash@0.1.4:
1082 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1083 | engines: {node: '>=0.8.19'}
1084 |
1085 | inherits@2.0.4:
1086 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1087 |
1088 | internal-slot@1.1.0:
1089 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
1090 | engines: {node: '>= 0.4'}
1091 |
1092 | ipaddr.js@1.9.1:
1093 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
1094 | engines: {node: '>= 0.10'}
1095 |
1096 | is-arguments@1.2.0:
1097 | resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
1098 | engines: {node: '>= 0.4'}
1099 |
1100 | is-array-buffer@3.0.5:
1101 | resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
1102 | engines: {node: '>= 0.4'}
1103 |
1104 | is-arrayish@0.3.2:
1105 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
1106 |
1107 | is-async-function@2.1.0:
1108 | resolution: {integrity: sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==}
1109 | engines: {node: '>= 0.4'}
1110 |
1111 | is-bigint@1.1.0:
1112 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
1113 | engines: {node: '>= 0.4'}
1114 |
1115 | is-binary-path@2.1.0:
1116 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1117 | engines: {node: '>=8'}
1118 |
1119 | is-boolean-object@1.2.1:
1120 | resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==}
1121 | engines: {node: '>= 0.4'}
1122 |
1123 | is-bun-module@1.3.0:
1124 | resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==}
1125 |
1126 | is-callable@1.2.7:
1127 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1128 | engines: {node: '>= 0.4'}
1129 |
1130 | is-core-module@2.16.1:
1131 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
1132 | engines: {node: '>= 0.4'}
1133 |
1134 | is-data-view@1.0.2:
1135 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
1136 | engines: {node: '>= 0.4'}
1137 |
1138 | is-date-object@1.1.0:
1139 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
1140 | engines: {node: '>= 0.4'}
1141 |
1142 | is-extglob@2.1.1:
1143 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1144 | engines: {node: '>=0.10.0'}
1145 |
1146 | is-finalizationregistry@1.1.1:
1147 | resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
1148 | engines: {node: '>= 0.4'}
1149 |
1150 | is-fullwidth-code-point@3.0.0:
1151 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1152 | engines: {node: '>=8'}
1153 |
1154 | is-generator-function@1.1.0:
1155 | resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
1156 | engines: {node: '>= 0.4'}
1157 |
1158 | is-glob@4.0.3:
1159 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1160 | engines: {node: '>=0.10.0'}
1161 |
1162 | is-map@2.0.3:
1163 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
1164 | engines: {node: '>= 0.4'}
1165 |
1166 | is-number-object@1.1.1:
1167 | resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
1168 | engines: {node: '>= 0.4'}
1169 |
1170 | is-number@7.0.0:
1171 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1172 | engines: {node: '>=0.12.0'}
1173 |
1174 | is-promise@4.0.0:
1175 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
1176 |
1177 | is-regex@1.2.1:
1178 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
1179 | engines: {node: '>= 0.4'}
1180 |
1181 | is-set@2.0.3:
1182 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
1183 | engines: {node: '>= 0.4'}
1184 |
1185 | is-shared-array-buffer@1.0.4:
1186 | resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
1187 | engines: {node: '>= 0.4'}
1188 |
1189 | is-string@1.1.1:
1190 | resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
1191 | engines: {node: '>= 0.4'}
1192 |
1193 | is-symbol@1.1.1:
1194 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
1195 | engines: {node: '>= 0.4'}
1196 |
1197 | is-typed-array@1.1.15:
1198 | resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
1199 | engines: {node: '>= 0.4'}
1200 |
1201 | is-weakmap@2.0.2:
1202 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
1203 | engines: {node: '>= 0.4'}
1204 |
1205 | is-weakref@1.1.0:
1206 | resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==}
1207 | engines: {node: '>= 0.4'}
1208 |
1209 | is-weakset@2.0.4:
1210 | resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
1211 | engines: {node: '>= 0.4'}
1212 |
1213 | isarray@1.0.0:
1214 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
1215 |
1216 | isarray@2.0.5:
1217 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1218 |
1219 | isexe@2.0.0:
1220 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1221 |
1222 | iterator.prototype@1.1.5:
1223 | resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
1224 | engines: {node: '>= 0.4'}
1225 |
1226 | jackspeak@3.4.3:
1227 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
1228 |
1229 | jiti@1.21.7:
1230 | resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
1231 | hasBin: true
1232 |
1233 | jmespath@0.16.0:
1234 | resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==}
1235 | engines: {node: '>= 0.6.0'}
1236 |
1237 | jose@4.15.9:
1238 | resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==}
1239 |
1240 | jose@5.2.3:
1241 | resolution: {integrity: sha512-KUXdbctm1uHVL8BYhnyHkgp3zDX5KW8ZhAKVFEfUbU2P8Alpzjb+48hHvjOdQIyPshoblhzsuqOwEEAbtHVirA==}
1242 |
1243 | js-tokens@4.0.0:
1244 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1245 |
1246 | js-yaml@4.1.0:
1247 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1248 | hasBin: true
1249 |
1250 | json-buffer@3.0.1:
1251 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1252 |
1253 | json-schema-traverse@0.4.1:
1254 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1255 |
1256 | json-stable-stringify-without-jsonify@1.0.1:
1257 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1258 |
1259 | json5@1.0.2:
1260 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
1261 | hasBin: true
1262 |
1263 | jsx-ast-utils@3.3.5:
1264 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
1265 | engines: {node: '>=4.0'}
1266 |
1267 | keyv@4.5.4:
1268 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1269 |
1270 | language-subtag-registry@0.3.23:
1271 | resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
1272 |
1273 | language-tags@1.0.9:
1274 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
1275 | engines: {node: '>=0.10'}
1276 |
1277 | levn@0.4.1:
1278 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1279 | engines: {node: '>= 0.8.0'}
1280 |
1281 | lilconfig@3.1.3:
1282 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
1283 | engines: {node: '>=14'}
1284 |
1285 | lines-and-columns@1.2.4:
1286 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1287 |
1288 | locate-path@6.0.0:
1289 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1290 | engines: {node: '>=10'}
1291 |
1292 | lodash.merge@4.6.2:
1293 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1294 |
1295 | loose-envify@1.4.0:
1296 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1297 | hasBin: true
1298 |
1299 | lru-cache@10.4.3:
1300 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
1301 |
1302 | lru-cache@6.0.0:
1303 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1304 | engines: {node: '>=10'}
1305 |
1306 | math-intrinsics@1.1.0:
1307 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
1308 | engines: {node: '>= 0.4'}
1309 |
1310 | media-typer@1.1.0:
1311 | resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
1312 | engines: {node: '>= 0.8'}
1313 |
1314 | merge-descriptors@2.0.0:
1315 | resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
1316 | engines: {node: '>=18'}
1317 |
1318 | merge2@1.4.1:
1319 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1320 | engines: {node: '>= 8'}
1321 |
1322 | micromatch@4.0.8:
1323 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
1324 | engines: {node: '>=8.6'}
1325 |
1326 | mime-db@1.54.0:
1327 | resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
1328 | engines: {node: '>= 0.6'}
1329 |
1330 | mime-types@3.0.1:
1331 | resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
1332 | engines: {node: '>= 0.6'}
1333 |
1334 | minimatch@3.1.2:
1335 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1336 |
1337 | minimatch@9.0.5:
1338 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
1339 | engines: {node: '>=16 || 14 >=14.17'}
1340 |
1341 | minimist@1.2.8:
1342 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1343 |
1344 | minipass@7.1.2:
1345 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
1346 | engines: {node: '>=16 || 14 >=14.17'}
1347 |
1348 | ms@2.1.3:
1349 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1350 |
1351 | mz@2.7.0:
1352 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1353 |
1354 | nanoid@3.3.8:
1355 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
1356 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1357 | hasBin: true
1358 |
1359 | natural-compare@1.4.0:
1360 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1361 |
1362 | negotiator@1.0.0:
1363 | resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
1364 | engines: {node: '>= 0.6'}
1365 |
1366 | next@15.1.4:
1367 | resolution: {integrity: sha512-mTaq9dwaSuwwOrcu3ebjDYObekkxRnXpuVL21zotM8qE2W0HBOdVIdg2Li9QjMEZrj73LN96LcWcz62V19FjAg==}
1368 | engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
1369 | hasBin: true
1370 | peerDependencies:
1371 | '@opentelemetry/api': ^1.1.0
1372 | '@playwright/test': ^1.41.2
1373 | babel-plugin-react-compiler: '*'
1374 | react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
1375 | react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
1376 | sass: ^1.3.0
1377 | peerDependenciesMeta:
1378 | '@opentelemetry/api':
1379 | optional: true
1380 | '@playwright/test':
1381 | optional: true
1382 | babel-plugin-react-compiler:
1383 | optional: true
1384 | sass:
1385 | optional: true
1386 |
1387 | normalize-path@3.0.0:
1388 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1389 | engines: {node: '>=0.10.0'}
1390 |
1391 | object-assign@4.1.1:
1392 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1393 | engines: {node: '>=0.10.0'}
1394 |
1395 | object-hash@2.2.0:
1396 | resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
1397 | engines: {node: '>= 6'}
1398 |
1399 | object-hash@3.0.0:
1400 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
1401 | engines: {node: '>= 6'}
1402 |
1403 | object-inspect@1.13.3:
1404 | resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==}
1405 | engines: {node: '>= 0.4'}
1406 |
1407 | object-keys@1.1.1:
1408 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1409 | engines: {node: '>= 0.4'}
1410 |
1411 | object.assign@4.1.7:
1412 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
1413 | engines: {node: '>= 0.4'}
1414 |
1415 | object.entries@1.1.8:
1416 | resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
1417 | engines: {node: '>= 0.4'}
1418 |
1419 | object.fromentries@2.0.8:
1420 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
1421 | engines: {node: '>= 0.4'}
1422 |
1423 | object.groupby@1.0.3:
1424 | resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
1425 | engines: {node: '>= 0.4'}
1426 |
1427 | object.values@1.2.1:
1428 | resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
1429 | engines: {node: '>= 0.4'}
1430 |
1431 | oidc-token-hash@5.0.3:
1432 | resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==}
1433 | engines: {node: ^10.13.0 || >=12.0.0}
1434 |
1435 | on-finished@2.4.1:
1436 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
1437 | engines: {node: '>= 0.8'}
1438 |
1439 | once@1.4.0:
1440 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1441 |
1442 | opencontrol@0.0.6:
1443 | resolution: {integrity: sha512-QeCrpOK5D15QV8kjnGVeD/BHFLwcVr+sn4T6KKmP0WAMs2pww56e4h+eOGHb5iPOufUQXbdbBKi6WV2kk7tefQ==}
1444 | hasBin: true
1445 |
1446 | openid-client@5.6.4:
1447 | resolution: {integrity: sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA==}
1448 |
1449 | optionator@0.9.4:
1450 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1451 | engines: {node: '>= 0.8.0'}
1452 |
1453 | own-keys@1.0.1:
1454 | resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
1455 | engines: {node: '>= 0.4'}
1456 |
1457 | p-limit@3.1.0:
1458 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1459 | engines: {node: '>=10'}
1460 |
1461 | p-locate@5.0.0:
1462 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1463 | engines: {node: '>=10'}
1464 |
1465 | package-json-from-dist@1.0.1:
1466 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
1467 |
1468 | parent-module@1.0.1:
1469 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1470 | engines: {node: '>=6'}
1471 |
1472 | parseurl@1.3.3:
1473 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
1474 | engines: {node: '>= 0.8'}
1475 |
1476 | path-exists@4.0.0:
1477 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1478 | engines: {node: '>=8'}
1479 |
1480 | path-key@3.1.1:
1481 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1482 | engines: {node: '>=8'}
1483 |
1484 | path-parse@1.0.7:
1485 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1486 |
1487 | path-scurry@1.11.1:
1488 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
1489 | engines: {node: '>=16 || 14 >=14.18'}
1490 |
1491 | path-to-regexp@8.3.0:
1492 | resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==}
1493 |
1494 | picocolors@1.1.1:
1495 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1496 |
1497 | picomatch@2.3.1:
1498 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1499 | engines: {node: '>=8.6'}
1500 |
1501 | pify@2.3.0:
1502 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1503 | engines: {node: '>=0.10.0'}
1504 |
1505 | pirates@4.0.6:
1506 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1507 | engines: {node: '>= 6'}
1508 |
1509 | pkce-challenge@4.1.0:
1510 | resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==}
1511 | engines: {node: '>=16.20.0'}
1512 |
1513 | possible-typed-array-names@1.0.0:
1514 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
1515 | engines: {node: '>= 0.4'}
1516 |
1517 | postcss-import@15.1.0:
1518 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
1519 | engines: {node: '>=14.0.0'}
1520 | peerDependencies:
1521 | postcss: ^8.0.0
1522 |
1523 | postcss-js@4.0.1:
1524 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
1525 | engines: {node: ^12 || ^14 || >= 16}
1526 | peerDependencies:
1527 | postcss: ^8.4.21
1528 |
1529 | postcss-load-config@4.0.2:
1530 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
1531 | engines: {node: '>= 14'}
1532 | peerDependencies:
1533 | postcss: '>=8.0.9'
1534 | ts-node: '>=9.0.0'
1535 | peerDependenciesMeta:
1536 | postcss:
1537 | optional: true
1538 | ts-node:
1539 | optional: true
1540 |
1541 | postcss-nested@6.2.0:
1542 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
1543 | engines: {node: '>=12.0'}
1544 | peerDependencies:
1545 | postcss: ^8.2.14
1546 |
1547 | postcss-selector-parser@6.1.2:
1548 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
1549 | engines: {node: '>=4'}
1550 |
1551 | postcss-value-parser@4.2.0:
1552 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1553 |
1554 | postcss@8.4.31:
1555 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
1556 | engines: {node: ^10 || ^12 || >=14}
1557 |
1558 | postcss@8.4.49:
1559 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
1560 | engines: {node: ^10 || ^12 || >=14}
1561 |
1562 | prelude-ls@1.2.1:
1563 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1564 | engines: {node: '>= 0.8.0'}
1565 |
1566 | prettier@3.4.2:
1567 | resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==}
1568 | engines: {node: '>=14'}
1569 | hasBin: true
1570 |
1571 | prop-types@15.8.1:
1572 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
1573 |
1574 | proxy-addr@2.0.7:
1575 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
1576 | engines: {node: '>= 0.10'}
1577 |
1578 | punycode@1.3.2:
1579 | resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==}
1580 |
1581 | punycode@2.3.1:
1582 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1583 | engines: {node: '>=6'}
1584 |
1585 | qs@6.14.0:
1586 | resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
1587 | engines: {node: '>=0.6'}
1588 |
1589 | querystring@0.2.0:
1590 | resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==}
1591 | engines: {node: '>=0.4.x'}
1592 | deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
1593 |
1594 | queue-microtask@1.2.3:
1595 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1596 |
1597 | range-parser@1.2.1:
1598 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
1599 | engines: {node: '>= 0.6'}
1600 |
1601 | raw-body@3.0.1:
1602 | resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==}
1603 | engines: {node: '>= 0.10'}
1604 |
1605 | react-dom@19.0.0:
1606 | resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
1607 | peerDependencies:
1608 | react: ^19.0.0
1609 |
1610 | react-is@16.13.1:
1611 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
1612 |
1613 | react@19.0.0:
1614 | resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
1615 | engines: {node: '>=0.10.0'}
1616 |
1617 | read-cache@1.0.0:
1618 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
1619 |
1620 | readdirp@3.6.0:
1621 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1622 | engines: {node: '>=8.10.0'}
1623 |
1624 | reflect.getprototypeof@1.0.10:
1625 | resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
1626 | engines: {node: '>= 0.4'}
1627 |
1628 | regexp.prototype.flags@1.5.4:
1629 | resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
1630 | engines: {node: '>= 0.4'}
1631 |
1632 | resolve-from@4.0.0:
1633 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1634 | engines: {node: '>=4'}
1635 |
1636 | resolve-pkg-maps@1.0.0:
1637 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
1638 |
1639 | resolve@1.22.10:
1640 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
1641 | engines: {node: '>= 0.4'}
1642 | hasBin: true
1643 |
1644 | resolve@2.0.0-next.5:
1645 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
1646 | hasBin: true
1647 |
1648 | reusify@1.0.4:
1649 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1650 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1651 |
1652 | router@2.2.0:
1653 | resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
1654 | engines: {node: '>= 18'}
1655 |
1656 | run-parallel@1.2.0:
1657 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1658 |
1659 | safe-array-concat@1.1.3:
1660 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
1661 | engines: {node: '>=0.4'}
1662 |
1663 | safe-buffer@5.2.1:
1664 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1665 |
1666 | safe-push-apply@1.0.0:
1667 | resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
1668 | engines: {node: '>= 0.4'}
1669 |
1670 | safe-regex-test@1.1.0:
1671 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
1672 | engines: {node: '>= 0.4'}
1673 |
1674 | safer-buffer@2.1.2:
1675 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
1676 |
1677 | sax@1.2.1:
1678 | resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==}
1679 |
1680 | scheduler@0.25.0:
1681 | resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
1682 |
1683 | semver@6.3.1:
1684 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1685 | hasBin: true
1686 |
1687 | semver@7.6.3:
1688 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
1689 | engines: {node: '>=10'}
1690 | hasBin: true
1691 |
1692 | send@1.2.0:
1693 | resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
1694 | engines: {node: '>= 18'}
1695 |
1696 | serve-static@2.2.0:
1697 | resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
1698 | engines: {node: '>= 18'}
1699 |
1700 | set-function-length@1.2.2:
1701 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
1702 | engines: {node: '>= 0.4'}
1703 |
1704 | set-function-name@2.0.2:
1705 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
1706 | engines: {node: '>= 0.4'}
1707 |
1708 | set-proto@1.0.0:
1709 | resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
1710 | engines: {node: '>= 0.4'}
1711 |
1712 | setprototypeof@1.2.0:
1713 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
1714 |
1715 | sharp@0.33.5:
1716 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
1717 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
1718 |
1719 | shebang-command@2.0.0:
1720 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1721 | engines: {node: '>=8'}
1722 |
1723 | shebang-regex@3.0.0:
1724 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1725 | engines: {node: '>=8'}
1726 |
1727 | side-channel-list@1.0.0:
1728 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
1729 | engines: {node: '>= 0.4'}
1730 |
1731 | side-channel-map@1.0.1:
1732 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
1733 | engines: {node: '>= 0.4'}
1734 |
1735 | side-channel-weakmap@1.0.2:
1736 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
1737 | engines: {node: '>= 0.4'}
1738 |
1739 | side-channel@1.1.0:
1740 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
1741 | engines: {node: '>= 0.4'}
1742 |
1743 | signal-exit@4.1.0:
1744 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1745 | engines: {node: '>=14'}
1746 |
1747 | simple-swizzle@0.2.2:
1748 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
1749 |
1750 | source-map-js@1.2.1:
1751 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1752 | engines: {node: '>=0.10.0'}
1753 |
1754 | sst-darwin-arm64@3.17.13:
1755 | resolution: {integrity: sha512-HZaDReT/c+2CcEnFkYjMty63II2ckQrUniiSdoEH6eAWyU1Iy7UwKK4I2GYm+5dy9xeSBaOKga6FMdLqFxIiUg==}
1756 | cpu: [arm64]
1757 | os: [darwin]
1758 |
1759 | sst-darwin-x64@3.17.13:
1760 | resolution: {integrity: sha512-1DlYMrmrI5RY3/Ob039JatgvDKZ5QNtyRkVu0WcnsOvcxFE4dzrCiYKYHg2A+FMDl+H1qcwy2gGA3BTwC9in1w==}
1761 | cpu: [x64]
1762 | os: [darwin]
1763 |
1764 | sst-linux-arm64@3.17.13:
1765 | resolution: {integrity: sha512-A4+ZamchUdaX0pqvYWZ+r7OP1bruwEj9qgWT5kU7Q5pqaotIsEitYQi0q9nZFKH+5mXYesUwSy5FA+Q8T3X/Rg==}
1766 | cpu: [arm64]
1767 | os: [linux]
1768 |
1769 | sst-linux-x64@3.17.13:
1770 | resolution: {integrity: sha512-yhKZc5CojqjB2DnyeVka5jeRb4oc3lBx8Qf6or0w4cs47SBIqyvO0iR/3IeKvRRL1hiEUeUF8r/q83rQo9jZMw==}
1771 | cpu: [x64]
1772 | os: [linux]
1773 |
1774 | sst-linux-x86@3.17.13:
1775 | resolution: {integrity: sha512-G1FIUmpUaECB/3CV5EO/y1QmV5mQ8RUkFeZq64oyILEEaMzSWWKz0glHzQ3+p316VE74MzbktiWRqsCKQy8GeA==}
1776 | cpu: [x86]
1777 | os: [linux]
1778 |
1779 | sst-win32-arm64@3.17.13:
1780 | resolution: {integrity: sha512-9uCiIXmsGoxGeNWgM81x/d6V/vecjoiHXhBUPDGlQ1Dct1SbtHAgaf/g2ec5XwSQb9B/tne4qk81eMlTl83Z1A==}
1781 | cpu: [arm64]
1782 | os: [win32]
1783 |
1784 | sst-win32-x64@3.17.13:
1785 | resolution: {integrity: sha512-hTuj4rFSCI/9tX4NMUpNJ69Q9td/giekELDRNv03ys8TpJGoGvPT8D6VD1eX7j1CQnOZIgeEphfW9WmCXkLaIA==}
1786 | cpu: [x64]
1787 | os: [win32]
1788 |
1789 | sst-win32-x86@3.17.13:
1790 | resolution: {integrity: sha512-AuMDGux+H1kPckKJ7Szgi04EpBoOKh/v5zFNAPjvWSkcWcGZ+hsBUx3h/FO/AkGK3RnlLMRj4CQQLoa10RSSIg==}
1791 | cpu: [x86]
1792 | os: [win32]
1793 |
1794 | sst@3.17.13:
1795 | resolution: {integrity: sha512-NaNTZL7uk2AsXzPBySQy7aqXlStXorR+bA785NxvCbskwkc44nVSQcEsvX5tdsD6/jrWpw9tDy4sStv2ycLAng==}
1796 | hasBin: true
1797 |
1798 | stable-hash@0.0.4:
1799 | resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==}
1800 |
1801 | statuses@2.0.1:
1802 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
1803 | engines: {node: '>= 0.8'}
1804 |
1805 | statuses@2.0.2:
1806 | resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
1807 | engines: {node: '>= 0.8'}
1808 |
1809 | streamsearch@1.1.0:
1810 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
1811 | engines: {node: '>=10.0.0'}
1812 |
1813 | string-width@4.2.3:
1814 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1815 | engines: {node: '>=8'}
1816 |
1817 | string-width@5.1.2:
1818 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1819 | engines: {node: '>=12'}
1820 |
1821 | string.prototype.includes@2.0.1:
1822 | resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
1823 | engines: {node: '>= 0.4'}
1824 |
1825 | string.prototype.matchall@4.0.12:
1826 | resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
1827 | engines: {node: '>= 0.4'}
1828 |
1829 | string.prototype.repeat@1.0.0:
1830 | resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
1831 |
1832 | string.prototype.trim@1.2.10:
1833 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
1834 | engines: {node: '>= 0.4'}
1835 |
1836 | string.prototype.trimend@1.0.9:
1837 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
1838 | engines: {node: '>= 0.4'}
1839 |
1840 | string.prototype.trimstart@1.0.8:
1841 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
1842 | engines: {node: '>= 0.4'}
1843 |
1844 | strip-ansi@6.0.1:
1845 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1846 | engines: {node: '>=8'}
1847 |
1848 | strip-ansi@7.1.0:
1849 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1850 | engines: {node: '>=12'}
1851 |
1852 | strip-bom@3.0.0:
1853 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1854 | engines: {node: '>=4'}
1855 |
1856 | strip-json-comments@3.1.1:
1857 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1858 | engines: {node: '>=8'}
1859 |
1860 | styled-jsx@5.1.6:
1861 | resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
1862 | engines: {node: '>= 12.0.0'}
1863 | peerDependencies:
1864 | '@babel/core': '*'
1865 | babel-plugin-macros: '*'
1866 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
1867 | peerDependenciesMeta:
1868 | '@babel/core':
1869 | optional: true
1870 | babel-plugin-macros:
1871 | optional: true
1872 |
1873 | sucrase@3.35.0:
1874 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
1875 | engines: {node: '>=16 || 14 >=14.17'}
1876 | hasBin: true
1877 |
1878 | supports-color@7.2.0:
1879 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1880 | engines: {node: '>=8'}
1881 |
1882 | supports-preserve-symlinks-flag@1.0.0:
1883 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1884 | engines: {node: '>= 0.4'}
1885 |
1886 | tailwindcss@3.4.17:
1887 | resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==}
1888 | engines: {node: '>=14.0.0'}
1889 | hasBin: true
1890 |
1891 | tapable@2.2.1:
1892 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
1893 | engines: {node: '>=6'}
1894 |
1895 | thenify-all@1.6.0:
1896 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1897 | engines: {node: '>=0.8'}
1898 |
1899 | thenify@3.3.1:
1900 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1901 |
1902 | to-regex-range@5.0.1:
1903 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1904 | engines: {node: '>=8.0'}
1905 |
1906 | toidentifier@1.0.1:
1907 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
1908 | engines: {node: '>=0.6'}
1909 |
1910 | ts-api-utils@2.0.0:
1911 | resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==}
1912 | engines: {node: '>=18.12'}
1913 | peerDependencies:
1914 | typescript: '>=4.8.4'
1915 |
1916 | ts-interface-checker@0.1.13:
1917 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1918 |
1919 | tsconfig-paths@3.15.0:
1920 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
1921 |
1922 | tslib@2.8.1:
1923 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
1924 |
1925 | type-check@0.4.0:
1926 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1927 | engines: {node: '>= 0.8.0'}
1928 |
1929 | type-is@2.0.1:
1930 | resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
1931 | engines: {node: '>= 0.6'}
1932 |
1933 | typed-array-buffer@1.0.3:
1934 | resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
1935 | engines: {node: '>= 0.4'}
1936 |
1937 | typed-array-byte-length@1.0.3:
1938 | resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
1939 | engines: {node: '>= 0.4'}
1940 |
1941 | typed-array-byte-offset@1.0.4:
1942 | resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
1943 | engines: {node: '>= 0.4'}
1944 |
1945 | typed-array-length@1.0.7:
1946 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
1947 | engines: {node: '>= 0.4'}
1948 |
1949 | typescript@5.7.3:
1950 | resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
1951 | engines: {node: '>=14.17'}
1952 | hasBin: true
1953 |
1954 | unbox-primitive@1.1.0:
1955 | resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
1956 | engines: {node: '>= 0.4'}
1957 |
1958 | undici-types@6.19.8:
1959 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
1960 |
1961 | unpipe@1.0.0:
1962 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
1963 | engines: {node: '>= 0.8'}
1964 |
1965 | uri-js@4.4.1:
1966 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1967 |
1968 | url@0.10.3:
1969 | resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==}
1970 |
1971 | util-deprecate@1.0.2:
1972 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1973 |
1974 | util@0.12.5:
1975 | resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
1976 |
1977 | uuid@8.0.0:
1978 | resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==}
1979 | hasBin: true
1980 |
1981 | vary@1.1.2:
1982 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
1983 | engines: {node: '>= 0.8'}
1984 |
1985 | which-boxed-primitive@1.1.1:
1986 | resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
1987 | engines: {node: '>= 0.4'}
1988 |
1989 | which-builtin-type@1.2.1:
1990 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
1991 | engines: {node: '>= 0.4'}
1992 |
1993 | which-collection@1.0.2:
1994 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
1995 | engines: {node: '>= 0.4'}
1996 |
1997 | which-typed-array@1.1.18:
1998 | resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==}
1999 | engines: {node: '>= 0.4'}
2000 |
2001 | which@2.0.2:
2002 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2003 | engines: {node: '>= 8'}
2004 | hasBin: true
2005 |
2006 | word-wrap@1.2.5:
2007 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
2008 | engines: {node: '>=0.10.0'}
2009 |
2010 | wrap-ansi@7.0.0:
2011 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2012 | engines: {node: '>=10'}
2013 |
2014 | wrap-ansi@8.1.0:
2015 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
2016 | engines: {node: '>=12'}
2017 |
2018 | wrappy@1.0.2:
2019 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2020 |
2021 | xml2js@0.6.2:
2022 | resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}
2023 | engines: {node: '>=4.0.0'}
2024 |
2025 | xmlbuilder@11.0.1:
2026 | resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
2027 | engines: {node: '>=4.0'}
2028 |
2029 | yallist@4.0.0:
2030 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2031 |
2032 | yaml@2.7.0:
2033 | resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==}
2034 | engines: {node: '>= 14'}
2035 | hasBin: true
2036 |
2037 | yocto-queue@0.1.0:
2038 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2039 | engines: {node: '>=10'}
2040 |
2041 | zod-to-json-schema@3.24.3:
2042 | resolution: {integrity: sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A==}
2043 | peerDependencies:
2044 | zod: ^3.24.1
2045 |
2046 | zod@3.24.2:
2047 | resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==}
2048 |
2049 | snapshots:
2050 |
2051 | '@alloc/quick-lru@5.2.0': {}
2052 |
2053 | '@emnapi/runtime@1.3.1':
2054 | dependencies:
2055 | tslib: 2.8.1
2056 | optional: true
2057 |
2058 | '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@1.21.7))':
2059 | dependencies:
2060 | eslint: 9.18.0(jiti@1.21.7)
2061 | eslint-visitor-keys: 3.4.3
2062 |
2063 | '@eslint-community/regexpp@4.12.1': {}
2064 |
2065 | '@eslint/config-array@0.19.1':
2066 | dependencies:
2067 | '@eslint/object-schema': 2.1.5
2068 | debug: 4.4.0
2069 | minimatch: 3.1.2
2070 | transitivePeerDependencies:
2071 | - supports-color
2072 |
2073 | '@eslint/core@0.10.0':
2074 | dependencies:
2075 | '@types/json-schema': 7.0.15
2076 |
2077 | '@eslint/eslintrc@3.2.0':
2078 | dependencies:
2079 | ajv: 6.12.6
2080 | debug: 4.4.0
2081 | espree: 10.3.0
2082 | globals: 14.0.0
2083 | ignore: 5.3.2
2084 | import-fresh: 3.3.0
2085 | js-yaml: 4.1.0
2086 | minimatch: 3.1.2
2087 | strip-json-comments: 3.1.1
2088 | transitivePeerDependencies:
2089 | - supports-color
2090 |
2091 | '@eslint/js@9.18.0': {}
2092 |
2093 | '@eslint/object-schema@2.1.5': {}
2094 |
2095 | '@eslint/plugin-kit@0.2.5':
2096 | dependencies:
2097 | '@eslint/core': 0.10.0
2098 | levn: 0.4.1
2099 |
2100 | '@humanfs/core@0.19.1': {}
2101 |
2102 | '@humanfs/node@0.16.6':
2103 | dependencies:
2104 | '@humanfs/core': 0.19.1
2105 | '@humanwhocodes/retry': 0.3.1
2106 |
2107 | '@humanwhocodes/module-importer@1.0.1': {}
2108 |
2109 | '@humanwhocodes/retry@0.3.1': {}
2110 |
2111 | '@humanwhocodes/retry@0.4.1': {}
2112 |
2113 | '@img/sharp-darwin-arm64@0.33.5':
2114 | optionalDependencies:
2115 | '@img/sharp-libvips-darwin-arm64': 1.0.4
2116 | optional: true
2117 |
2118 | '@img/sharp-darwin-x64@0.33.5':
2119 | optionalDependencies:
2120 | '@img/sharp-libvips-darwin-x64': 1.0.4
2121 | optional: true
2122 |
2123 | '@img/sharp-libvips-darwin-arm64@1.0.4':
2124 | optional: true
2125 |
2126 | '@img/sharp-libvips-darwin-x64@1.0.4':
2127 | optional: true
2128 |
2129 | '@img/sharp-libvips-linux-arm64@1.0.4':
2130 | optional: true
2131 |
2132 | '@img/sharp-libvips-linux-arm@1.0.5':
2133 | optional: true
2134 |
2135 | '@img/sharp-libvips-linux-s390x@1.0.4':
2136 | optional: true
2137 |
2138 | '@img/sharp-libvips-linux-x64@1.0.4':
2139 | optional: true
2140 |
2141 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
2142 | optional: true
2143 |
2144 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
2145 | optional: true
2146 |
2147 | '@img/sharp-linux-arm64@0.33.5':
2148 | optionalDependencies:
2149 | '@img/sharp-libvips-linux-arm64': 1.0.4
2150 | optional: true
2151 |
2152 | '@img/sharp-linux-arm@0.33.5':
2153 | optionalDependencies:
2154 | '@img/sharp-libvips-linux-arm': 1.0.5
2155 | optional: true
2156 |
2157 | '@img/sharp-linux-s390x@0.33.5':
2158 | optionalDependencies:
2159 | '@img/sharp-libvips-linux-s390x': 1.0.4
2160 | optional: true
2161 |
2162 | '@img/sharp-linux-x64@0.33.5':
2163 | optionalDependencies:
2164 | '@img/sharp-libvips-linux-x64': 1.0.4
2165 | optional: true
2166 |
2167 | '@img/sharp-linuxmusl-arm64@0.33.5':
2168 | optionalDependencies:
2169 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
2170 | optional: true
2171 |
2172 | '@img/sharp-linuxmusl-x64@0.33.5':
2173 | optionalDependencies:
2174 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
2175 | optional: true
2176 |
2177 | '@img/sharp-wasm32@0.33.5':
2178 | dependencies:
2179 | '@emnapi/runtime': 1.3.1
2180 | optional: true
2181 |
2182 | '@img/sharp-win32-ia32@0.33.5':
2183 | optional: true
2184 |
2185 | '@img/sharp-win32-x64@0.33.5':
2186 | optional: true
2187 |
2188 | '@isaacs/cliui@8.0.2':
2189 | dependencies:
2190 | string-width: 5.1.2
2191 | string-width-cjs: string-width@4.2.3
2192 | strip-ansi: 7.1.0
2193 | strip-ansi-cjs: strip-ansi@6.0.1
2194 | wrap-ansi: 8.1.0
2195 | wrap-ansi-cjs: wrap-ansi@7.0.0
2196 |
2197 | '@jridgewell/gen-mapping@0.3.8':
2198 | dependencies:
2199 | '@jridgewell/set-array': 1.2.1
2200 | '@jridgewell/sourcemap-codec': 1.5.0
2201 | '@jridgewell/trace-mapping': 0.3.25
2202 |
2203 | '@jridgewell/resolve-uri@3.1.2': {}
2204 |
2205 | '@jridgewell/set-array@1.2.1': {}
2206 |
2207 | '@jridgewell/sourcemap-codec@1.5.0': {}
2208 |
2209 | '@jridgewell/trace-mapping@0.3.25':
2210 | dependencies:
2211 | '@jridgewell/resolve-uri': 3.1.2
2212 | '@jridgewell/sourcemap-codec': 1.5.0
2213 |
2214 | '@modelcontextprotocol/sdk@1.6.1':
2215 | dependencies:
2216 | content-type: 1.0.5
2217 | cors: 2.8.5
2218 | eventsource: 3.0.7
2219 | express: 5.1.0
2220 | express-rate-limit: 7.5.1(express@5.1.0)
2221 | pkce-challenge: 4.1.0
2222 | raw-body: 3.0.1
2223 | zod: 3.24.2
2224 | zod-to-json-schema: 3.24.3(zod@3.24.2)
2225 | transitivePeerDependencies:
2226 | - supports-color
2227 |
2228 | '@next/env@15.1.4': {}
2229 |
2230 | '@next/eslint-plugin-next@15.1.4':
2231 | dependencies:
2232 | fast-glob: 3.3.1
2233 |
2234 | '@next/swc-darwin-arm64@15.1.4':
2235 | optional: true
2236 |
2237 | '@next/swc-darwin-x64@15.1.4':
2238 | optional: true
2239 |
2240 | '@next/swc-linux-arm64-gnu@15.1.4':
2241 | optional: true
2242 |
2243 | '@next/swc-linux-arm64-musl@15.1.4':
2244 | optional: true
2245 |
2246 | '@next/swc-linux-x64-gnu@15.1.4':
2247 | optional: true
2248 |
2249 | '@next/swc-linux-x64-musl@15.1.4':
2250 | optional: true
2251 |
2252 | '@next/swc-win32-arm64-msvc@15.1.4':
2253 | optional: true
2254 |
2255 | '@next/swc-win32-x64-msvc@15.1.4':
2256 | optional: true
2257 |
2258 | '@nodelib/fs.scandir@2.1.5':
2259 | dependencies:
2260 | '@nodelib/fs.stat': 2.0.5
2261 | run-parallel: 1.2.0
2262 |
2263 | '@nodelib/fs.stat@2.0.5': {}
2264 |
2265 | '@nodelib/fs.walk@1.2.8':
2266 | dependencies:
2267 | '@nodelib/fs.scandir': 2.1.5
2268 | fastq: 1.18.0
2269 |
2270 | '@nolyfill/is-core-module@1.0.39': {}
2271 |
2272 | '@opentelemetry/api@1.9.0': {}
2273 |
2274 | '@pkgjs/parseargs@0.11.0':
2275 | optional: true
2276 |
2277 | '@rtsao/scc@1.1.0': {}
2278 |
2279 | '@rushstack/eslint-patch@1.10.5': {}
2280 |
2281 | '@swc/counter@0.1.3': {}
2282 |
2283 | '@swc/helpers@0.5.15':
2284 | dependencies:
2285 | tslib: 2.8.1
2286 |
2287 | '@tsconfig/bun@1.0.7': {}
2288 |
2289 | '@types/aws-lambda@8.10.152': {}
2290 |
2291 | '@types/estree@1.0.6': {}
2292 |
2293 | '@types/json-schema@7.0.15': {}
2294 |
2295 | '@types/json5@0.0.29': {}
2296 |
2297 | '@types/node@20.17.12':
2298 | dependencies:
2299 | undici-types: 6.19.8
2300 |
2301 | '@types/react-dom@19.0.3(@types/react@19.0.6)':
2302 | dependencies:
2303 | '@types/react': 19.0.6
2304 |
2305 | '@types/react@19.0.6':
2306 | dependencies:
2307 | csstype: 3.1.3
2308 |
2309 | '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)':
2310 | dependencies:
2311 | '@eslint-community/regexpp': 4.12.1
2312 | '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)
2313 | '@typescript-eslint/scope-manager': 8.19.1
2314 | '@typescript-eslint/type-utils': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)
2315 | '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)
2316 | '@typescript-eslint/visitor-keys': 8.19.1
2317 | eslint: 9.18.0(jiti@1.21.7)
2318 | graphemer: 1.4.0
2319 | ignore: 5.3.2
2320 | natural-compare: 1.4.0
2321 | ts-api-utils: 2.0.0(typescript@5.7.3)
2322 | typescript: 5.7.3
2323 | transitivePeerDependencies:
2324 | - supports-color
2325 |
2326 | '@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)':
2327 | dependencies:
2328 | '@typescript-eslint/scope-manager': 8.19.1
2329 | '@typescript-eslint/types': 8.19.1
2330 | '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3)
2331 | '@typescript-eslint/visitor-keys': 8.19.1
2332 | debug: 4.4.0
2333 | eslint: 9.18.0(jiti@1.21.7)
2334 | typescript: 5.7.3
2335 | transitivePeerDependencies:
2336 | - supports-color
2337 |
2338 | '@typescript-eslint/scope-manager@8.19.1':
2339 | dependencies:
2340 | '@typescript-eslint/types': 8.19.1
2341 | '@typescript-eslint/visitor-keys': 8.19.1
2342 |
2343 | '@typescript-eslint/type-utils@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)':
2344 | dependencies:
2345 | '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3)
2346 | '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)
2347 | debug: 4.4.0
2348 | eslint: 9.18.0(jiti@1.21.7)
2349 | ts-api-utils: 2.0.0(typescript@5.7.3)
2350 | typescript: 5.7.3
2351 | transitivePeerDependencies:
2352 | - supports-color
2353 |
2354 | '@typescript-eslint/types@8.19.1': {}
2355 |
2356 | '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.3)':
2357 | dependencies:
2358 | '@typescript-eslint/types': 8.19.1
2359 | '@typescript-eslint/visitor-keys': 8.19.1
2360 | debug: 4.4.0
2361 | fast-glob: 3.3.3
2362 | is-glob: 4.0.3
2363 | minimatch: 9.0.5
2364 | semver: 7.6.3
2365 | ts-api-utils: 2.0.0(typescript@5.7.3)
2366 | typescript: 5.7.3
2367 | transitivePeerDependencies:
2368 | - supports-color
2369 |
2370 | '@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)':
2371 | dependencies:
2372 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7))
2373 | '@typescript-eslint/scope-manager': 8.19.1
2374 | '@typescript-eslint/types': 8.19.1
2375 | '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3)
2376 | eslint: 9.18.0(jiti@1.21.7)
2377 | typescript: 5.7.3
2378 | transitivePeerDependencies:
2379 | - supports-color
2380 |
2381 | '@typescript-eslint/visitor-keys@8.19.1':
2382 | dependencies:
2383 | '@typescript-eslint/types': 8.19.1
2384 | eslint-visitor-keys: 4.2.0
2385 |
2386 | accepts@2.0.0:
2387 | dependencies:
2388 | mime-types: 3.0.1
2389 | negotiator: 1.0.0
2390 |
2391 | acorn-jsx@5.3.2(acorn@8.14.0):
2392 | dependencies:
2393 | acorn: 8.14.0
2394 |
2395 | acorn@8.14.0: {}
2396 |
2397 | ajv@6.12.6:
2398 | dependencies:
2399 | fast-deep-equal: 3.1.3
2400 | fast-json-stable-stringify: 2.1.0
2401 | json-schema-traverse: 0.4.1
2402 | uri-js: 4.4.1
2403 |
2404 | ansi-regex@5.0.1: {}
2405 |
2406 | ansi-regex@6.1.0: {}
2407 |
2408 | ansi-styles@4.3.0:
2409 | dependencies:
2410 | color-convert: 2.0.1
2411 |
2412 | ansi-styles@6.2.1: {}
2413 |
2414 | any-promise@1.3.0: {}
2415 |
2416 | anymatch@3.1.3:
2417 | dependencies:
2418 | normalize-path: 3.0.0
2419 | picomatch: 2.3.1
2420 |
2421 | arg@5.0.2: {}
2422 |
2423 | argparse@2.0.1: {}
2424 |
2425 | aria-query@5.3.2: {}
2426 |
2427 | array-buffer-byte-length@1.0.2:
2428 | dependencies:
2429 | call-bound: 1.0.3
2430 | is-array-buffer: 3.0.5
2431 |
2432 | array-includes@3.1.8:
2433 | dependencies:
2434 | call-bind: 1.0.8
2435 | define-properties: 1.2.1
2436 | es-abstract: 1.23.9
2437 | es-object-atoms: 1.0.0
2438 | get-intrinsic: 1.2.7
2439 | is-string: 1.1.1
2440 |
2441 | array.prototype.findlast@1.2.5:
2442 | dependencies:
2443 | call-bind: 1.0.8
2444 | define-properties: 1.2.1
2445 | es-abstract: 1.23.9
2446 | es-errors: 1.3.0
2447 | es-object-atoms: 1.0.0
2448 | es-shim-unscopables: 1.0.2
2449 |
2450 | array.prototype.findlastindex@1.2.5:
2451 | dependencies:
2452 | call-bind: 1.0.8
2453 | define-properties: 1.2.1
2454 | es-abstract: 1.23.9
2455 | es-errors: 1.3.0
2456 | es-object-atoms: 1.0.0
2457 | es-shim-unscopables: 1.0.2
2458 |
2459 | array.prototype.flat@1.3.3:
2460 | dependencies:
2461 | call-bind: 1.0.8
2462 | define-properties: 1.2.1
2463 | es-abstract: 1.23.9
2464 | es-shim-unscopables: 1.0.2
2465 |
2466 | array.prototype.flatmap@1.3.3:
2467 | dependencies:
2468 | call-bind: 1.0.8
2469 | define-properties: 1.2.1
2470 | es-abstract: 1.23.9
2471 | es-shim-unscopables: 1.0.2
2472 |
2473 | array.prototype.tosorted@1.1.4:
2474 | dependencies:
2475 | call-bind: 1.0.8
2476 | define-properties: 1.2.1
2477 | es-abstract: 1.23.9
2478 | es-errors: 1.3.0
2479 | es-shim-unscopables: 1.0.2
2480 |
2481 | arraybuffer.prototype.slice@1.0.4:
2482 | dependencies:
2483 | array-buffer-byte-length: 1.0.2
2484 | call-bind: 1.0.8
2485 | define-properties: 1.2.1
2486 | es-abstract: 1.23.9
2487 | es-errors: 1.3.0
2488 | get-intrinsic: 1.2.7
2489 | is-array-buffer: 3.0.5
2490 |
2491 | ast-types-flow@0.0.8: {}
2492 |
2493 | available-typed-arrays@1.0.7:
2494 | dependencies:
2495 | possible-typed-array-names: 1.0.0
2496 |
2497 | aws-sdk@2.1692.0:
2498 | dependencies:
2499 | buffer: 4.9.2
2500 | events: 1.1.1
2501 | ieee754: 1.1.13
2502 | jmespath: 0.16.0
2503 | querystring: 0.2.0
2504 | sax: 1.2.1
2505 | url: 0.10.3
2506 | util: 0.12.5
2507 | uuid: 8.0.0
2508 | xml2js: 0.6.2
2509 |
2510 | aws4fetch@1.0.18: {}
2511 |
2512 | axe-core@4.10.2: {}
2513 |
2514 | axobject-query@4.1.0: {}
2515 |
2516 | balanced-match@1.0.2: {}
2517 |
2518 | base64-js@1.5.1: {}
2519 |
2520 | binary-extensions@2.3.0: {}
2521 |
2522 | body-parser@2.2.0:
2523 | dependencies:
2524 | bytes: 3.1.2
2525 | content-type: 1.0.5
2526 | debug: 4.4.0
2527 | http-errors: 2.0.0
2528 | iconv-lite: 0.6.3
2529 | on-finished: 2.4.1
2530 | qs: 6.14.0
2531 | raw-body: 3.0.1
2532 | type-is: 2.0.1
2533 | transitivePeerDependencies:
2534 | - supports-color
2535 |
2536 | brace-expansion@1.1.11:
2537 | dependencies:
2538 | balanced-match: 1.0.2
2539 | concat-map: 0.0.1
2540 |
2541 | brace-expansion@2.0.1:
2542 | dependencies:
2543 | balanced-match: 1.0.2
2544 |
2545 | braces@3.0.3:
2546 | dependencies:
2547 | fill-range: 7.1.1
2548 |
2549 | buffer@4.9.2:
2550 | dependencies:
2551 | base64-js: 1.5.1
2552 | ieee754: 1.1.13
2553 | isarray: 1.0.0
2554 |
2555 | busboy@1.6.0:
2556 | dependencies:
2557 | streamsearch: 1.1.0
2558 |
2559 | bytes@3.1.2: {}
2560 |
2561 | call-bind-apply-helpers@1.0.1:
2562 | dependencies:
2563 | es-errors: 1.3.0
2564 | function-bind: 1.1.2
2565 |
2566 | call-bind@1.0.8:
2567 | dependencies:
2568 | call-bind-apply-helpers: 1.0.1
2569 | es-define-property: 1.0.1
2570 | get-intrinsic: 1.2.7
2571 | set-function-length: 1.2.2
2572 |
2573 | call-bound@1.0.3:
2574 | dependencies:
2575 | call-bind-apply-helpers: 1.0.1
2576 | get-intrinsic: 1.2.7
2577 |
2578 | callsites@3.1.0: {}
2579 |
2580 | camelcase-css@2.0.1: {}
2581 |
2582 | caniuse-lite@1.0.30001692: {}
2583 |
2584 | chalk@4.1.2:
2585 | dependencies:
2586 | ansi-styles: 4.3.0
2587 | supports-color: 7.2.0
2588 |
2589 | chokidar@3.6.0:
2590 | dependencies:
2591 | anymatch: 3.1.3
2592 | braces: 3.0.3
2593 | glob-parent: 5.1.2
2594 | is-binary-path: 2.1.0
2595 | is-glob: 4.0.3
2596 | normalize-path: 3.0.0
2597 | readdirp: 3.6.0
2598 | optionalDependencies:
2599 | fsevents: 2.3.3
2600 |
2601 | client-only@0.0.1: {}
2602 |
2603 | color-convert@2.0.1:
2604 | dependencies:
2605 | color-name: 1.1.4
2606 |
2607 | color-name@1.1.4: {}
2608 |
2609 | color-string@1.9.1:
2610 | dependencies:
2611 | color-name: 1.1.4
2612 | simple-swizzle: 0.2.2
2613 | optional: true
2614 |
2615 | color@4.2.3:
2616 | dependencies:
2617 | color-convert: 2.0.1
2618 | color-string: 1.9.1
2619 | optional: true
2620 |
2621 | commander@4.1.1: {}
2622 |
2623 | concat-map@0.0.1: {}
2624 |
2625 | content-disposition@1.0.0:
2626 | dependencies:
2627 | safe-buffer: 5.2.1
2628 |
2629 | content-type@1.0.5: {}
2630 |
2631 | cookie-signature@1.2.2: {}
2632 |
2633 | cookie@0.7.2: {}
2634 |
2635 | cors@2.8.5:
2636 | dependencies:
2637 | object-assign: 4.1.1
2638 | vary: 1.1.2
2639 |
2640 | cross-spawn@7.0.6:
2641 | dependencies:
2642 | path-key: 3.1.1
2643 | shebang-command: 2.0.0
2644 | which: 2.0.2
2645 |
2646 | cssesc@3.0.0: {}
2647 |
2648 | csstype@3.1.3: {}
2649 |
2650 | damerau-levenshtein@1.0.8: {}
2651 |
2652 | data-view-buffer@1.0.2:
2653 | dependencies:
2654 | call-bound: 1.0.3
2655 | es-errors: 1.3.0
2656 | is-data-view: 1.0.2
2657 |
2658 | data-view-byte-length@1.0.2:
2659 | dependencies:
2660 | call-bound: 1.0.3
2661 | es-errors: 1.3.0
2662 | is-data-view: 1.0.2
2663 |
2664 | data-view-byte-offset@1.0.1:
2665 | dependencies:
2666 | call-bound: 1.0.3
2667 | es-errors: 1.3.0
2668 | is-data-view: 1.0.2
2669 |
2670 | debug@3.2.7:
2671 | dependencies:
2672 | ms: 2.1.3
2673 |
2674 | debug@4.4.0:
2675 | dependencies:
2676 | ms: 2.1.3
2677 |
2678 | deep-is@0.1.4: {}
2679 |
2680 | define-data-property@1.1.4:
2681 | dependencies:
2682 | es-define-property: 1.0.1
2683 | es-errors: 1.3.0
2684 | gopd: 1.2.0
2685 |
2686 | define-properties@1.2.1:
2687 | dependencies:
2688 | define-data-property: 1.1.4
2689 | has-property-descriptors: 1.0.2
2690 | object-keys: 1.1.1
2691 |
2692 | depd@2.0.0: {}
2693 |
2694 | detect-libc@2.0.3:
2695 | optional: true
2696 |
2697 | didyoumean@1.2.2: {}
2698 |
2699 | dlv@1.1.3: {}
2700 |
2701 | doctrine@2.1.0:
2702 | dependencies:
2703 | esutils: 2.0.3
2704 |
2705 | dunder-proto@1.0.1:
2706 | dependencies:
2707 | call-bind-apply-helpers: 1.0.1
2708 | es-errors: 1.3.0
2709 | gopd: 1.2.0
2710 |
2711 | eastasianwidth@0.2.0: {}
2712 |
2713 | ee-first@1.1.1: {}
2714 |
2715 | emoji-regex@8.0.0: {}
2716 |
2717 | emoji-regex@9.2.2: {}
2718 |
2719 | encodeurl@2.0.0: {}
2720 |
2721 | enhanced-resolve@5.18.0:
2722 | dependencies:
2723 | graceful-fs: 4.2.11
2724 | tapable: 2.2.1
2725 |
2726 | es-abstract@1.23.9:
2727 | dependencies:
2728 | array-buffer-byte-length: 1.0.2
2729 | arraybuffer.prototype.slice: 1.0.4
2730 | available-typed-arrays: 1.0.7
2731 | call-bind: 1.0.8
2732 | call-bound: 1.0.3
2733 | data-view-buffer: 1.0.2
2734 | data-view-byte-length: 1.0.2
2735 | data-view-byte-offset: 1.0.1
2736 | es-define-property: 1.0.1
2737 | es-errors: 1.3.0
2738 | es-object-atoms: 1.0.0
2739 | es-set-tostringtag: 2.1.0
2740 | es-to-primitive: 1.3.0
2741 | function.prototype.name: 1.1.8
2742 | get-intrinsic: 1.2.7
2743 | get-proto: 1.0.1
2744 | get-symbol-description: 1.1.0
2745 | globalthis: 1.0.4
2746 | gopd: 1.2.0
2747 | has-property-descriptors: 1.0.2
2748 | has-proto: 1.2.0
2749 | has-symbols: 1.1.0
2750 | hasown: 2.0.2
2751 | internal-slot: 1.1.0
2752 | is-array-buffer: 3.0.5
2753 | is-callable: 1.2.7
2754 | is-data-view: 1.0.2
2755 | is-regex: 1.2.1
2756 | is-shared-array-buffer: 1.0.4
2757 | is-string: 1.1.1
2758 | is-typed-array: 1.1.15
2759 | is-weakref: 1.1.0
2760 | math-intrinsics: 1.1.0
2761 | object-inspect: 1.13.3
2762 | object-keys: 1.1.1
2763 | object.assign: 4.1.7
2764 | own-keys: 1.0.1
2765 | regexp.prototype.flags: 1.5.4
2766 | safe-array-concat: 1.1.3
2767 | safe-push-apply: 1.0.0
2768 | safe-regex-test: 1.1.0
2769 | set-proto: 1.0.0
2770 | string.prototype.trim: 1.2.10
2771 | string.prototype.trimend: 1.0.9
2772 | string.prototype.trimstart: 1.0.8
2773 | typed-array-buffer: 1.0.3
2774 | typed-array-byte-length: 1.0.3
2775 | typed-array-byte-offset: 1.0.4
2776 | typed-array-length: 1.0.7
2777 | unbox-primitive: 1.1.0
2778 | which-typed-array: 1.1.18
2779 |
2780 | es-define-property@1.0.1: {}
2781 |
2782 | es-errors@1.3.0: {}
2783 |
2784 | es-iterator-helpers@1.2.1:
2785 | dependencies:
2786 | call-bind: 1.0.8
2787 | call-bound: 1.0.3
2788 | define-properties: 1.2.1
2789 | es-abstract: 1.23.9
2790 | es-errors: 1.3.0
2791 | es-set-tostringtag: 2.1.0
2792 | function-bind: 1.1.2
2793 | get-intrinsic: 1.2.7
2794 | globalthis: 1.0.4
2795 | gopd: 1.2.0
2796 | has-property-descriptors: 1.0.2
2797 | has-proto: 1.2.0
2798 | has-symbols: 1.1.0
2799 | internal-slot: 1.1.0
2800 | iterator.prototype: 1.1.5
2801 | safe-array-concat: 1.1.3
2802 |
2803 | es-object-atoms@1.0.0:
2804 | dependencies:
2805 | es-errors: 1.3.0
2806 |
2807 | es-set-tostringtag@2.1.0:
2808 | dependencies:
2809 | es-errors: 1.3.0
2810 | get-intrinsic: 1.2.7
2811 | has-tostringtag: 1.0.2
2812 | hasown: 2.0.2
2813 |
2814 | es-shim-unscopables@1.0.2:
2815 | dependencies:
2816 | hasown: 2.0.2
2817 |
2818 | es-to-primitive@1.3.0:
2819 | dependencies:
2820 | is-callable: 1.2.7
2821 | is-date-object: 1.1.0
2822 | is-symbol: 1.1.1
2823 |
2824 | escape-html@1.0.3: {}
2825 |
2826 | escape-string-regexp@4.0.0: {}
2827 |
2828 | eslint-config-next@15.1.4(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3):
2829 | dependencies:
2830 | '@next/eslint-plugin-next': 15.1.4
2831 | '@rushstack/eslint-patch': 1.10.5
2832 | '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)
2833 | '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)
2834 | eslint: 9.18.0(jiti@1.21.7)
2835 | eslint-import-resolver-node: 0.3.9
2836 | eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@1.21.7))
2837 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@1.21.7))
2838 | eslint-plugin-jsx-a11y: 6.10.2(eslint@9.18.0(jiti@1.21.7))
2839 | eslint-plugin-react: 7.37.4(eslint@9.18.0(jiti@1.21.7))
2840 | eslint-plugin-react-hooks: 5.1.0(eslint@9.18.0(jiti@1.21.7))
2841 | optionalDependencies:
2842 | typescript: 5.7.3
2843 | transitivePeerDependencies:
2844 | - eslint-import-resolver-webpack
2845 | - eslint-plugin-import-x
2846 | - supports-color
2847 |
2848 | eslint-import-resolver-node@0.3.9:
2849 | dependencies:
2850 | debug: 3.2.7
2851 | is-core-module: 2.16.1
2852 | resolve: 1.22.10
2853 | transitivePeerDependencies:
2854 | - supports-color
2855 |
2856 | eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@1.21.7)):
2857 | dependencies:
2858 | '@nolyfill/is-core-module': 1.0.39
2859 | debug: 4.4.0
2860 | enhanced-resolve: 5.18.0
2861 | eslint: 9.18.0(jiti@1.21.7)
2862 | fast-glob: 3.3.3
2863 | get-tsconfig: 4.8.1
2864 | is-bun-module: 1.3.0
2865 | is-glob: 4.0.3
2866 | stable-hash: 0.0.4
2867 | optionalDependencies:
2868 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@1.21.7))
2869 | transitivePeerDependencies:
2870 | - supports-color
2871 |
2872 | eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@1.21.7)))(eslint@9.18.0(jiti@1.21.7)):
2873 | dependencies:
2874 | debug: 3.2.7
2875 | optionalDependencies:
2876 | '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)
2877 | eslint: 9.18.0(jiti@1.21.7)
2878 | eslint-import-resolver-node: 0.3.9
2879 | eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@1.21.7))
2880 | transitivePeerDependencies:
2881 | - supports-color
2882 |
2883 | eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.18.0(jiti@1.21.7)):
2884 | dependencies:
2885 | '@rtsao/scc': 1.1.0
2886 | array-includes: 3.1.8
2887 | array.prototype.findlastindex: 1.2.5
2888 | array.prototype.flat: 1.3.3
2889 | array.prototype.flatmap: 1.3.3
2890 | debug: 3.2.7
2891 | doctrine: 2.1.0
2892 | eslint: 9.18.0(jiti@1.21.7)
2893 | eslint-import-resolver-node: 0.3.9
2894 | eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@1.21.7)))(eslint@9.18.0(jiti@1.21.7))
2895 | hasown: 2.0.2
2896 | is-core-module: 2.16.1
2897 | is-glob: 4.0.3
2898 | minimatch: 3.1.2
2899 | object.fromentries: 2.0.8
2900 | object.groupby: 1.0.3
2901 | object.values: 1.2.1
2902 | semver: 6.3.1
2903 | string.prototype.trimend: 1.0.9
2904 | tsconfig-paths: 3.15.0
2905 | optionalDependencies:
2906 | '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)
2907 | transitivePeerDependencies:
2908 | - eslint-import-resolver-typescript
2909 | - eslint-import-resolver-webpack
2910 | - supports-color
2911 |
2912 | eslint-plugin-jsx-a11y@6.10.2(eslint@9.18.0(jiti@1.21.7)):
2913 | dependencies:
2914 | aria-query: 5.3.2
2915 | array-includes: 3.1.8
2916 | array.prototype.flatmap: 1.3.3
2917 | ast-types-flow: 0.0.8
2918 | axe-core: 4.10.2
2919 | axobject-query: 4.1.0
2920 | damerau-levenshtein: 1.0.8
2921 | emoji-regex: 9.2.2
2922 | eslint: 9.18.0(jiti@1.21.7)
2923 | hasown: 2.0.2
2924 | jsx-ast-utils: 3.3.5
2925 | language-tags: 1.0.9
2926 | minimatch: 3.1.2
2927 | object.fromentries: 2.0.8
2928 | safe-regex-test: 1.1.0
2929 | string.prototype.includes: 2.0.1
2930 |
2931 | eslint-plugin-react-hooks@5.1.0(eslint@9.18.0(jiti@1.21.7)):
2932 | dependencies:
2933 | eslint: 9.18.0(jiti@1.21.7)
2934 |
2935 | eslint-plugin-react@7.37.4(eslint@9.18.0(jiti@1.21.7)):
2936 | dependencies:
2937 | array-includes: 3.1.8
2938 | array.prototype.findlast: 1.2.5
2939 | array.prototype.flatmap: 1.3.3
2940 | array.prototype.tosorted: 1.1.4
2941 | doctrine: 2.1.0
2942 | es-iterator-helpers: 1.2.1
2943 | eslint: 9.18.0(jiti@1.21.7)
2944 | estraverse: 5.3.0
2945 | hasown: 2.0.2
2946 | jsx-ast-utils: 3.3.5
2947 | minimatch: 3.1.2
2948 | object.entries: 1.1.8
2949 | object.fromentries: 2.0.8
2950 | object.values: 1.2.1
2951 | prop-types: 15.8.1
2952 | resolve: 2.0.0-next.5
2953 | semver: 6.3.1
2954 | string.prototype.matchall: 4.0.12
2955 | string.prototype.repeat: 1.0.0
2956 |
2957 | eslint-scope@8.2.0:
2958 | dependencies:
2959 | esrecurse: 4.3.0
2960 | estraverse: 5.3.0
2961 |
2962 | eslint-visitor-keys@3.4.3: {}
2963 |
2964 | eslint-visitor-keys@4.2.0: {}
2965 |
2966 | eslint@9.18.0(jiti@1.21.7):
2967 | dependencies:
2968 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7))
2969 | '@eslint-community/regexpp': 4.12.1
2970 | '@eslint/config-array': 0.19.1
2971 | '@eslint/core': 0.10.0
2972 | '@eslint/eslintrc': 3.2.0
2973 | '@eslint/js': 9.18.0
2974 | '@eslint/plugin-kit': 0.2.5
2975 | '@humanfs/node': 0.16.6
2976 | '@humanwhocodes/module-importer': 1.0.1
2977 | '@humanwhocodes/retry': 0.4.1
2978 | '@types/estree': 1.0.6
2979 | '@types/json-schema': 7.0.15
2980 | ajv: 6.12.6
2981 | chalk: 4.1.2
2982 | cross-spawn: 7.0.6
2983 | debug: 4.4.0
2984 | escape-string-regexp: 4.0.0
2985 | eslint-scope: 8.2.0
2986 | eslint-visitor-keys: 4.2.0
2987 | espree: 10.3.0
2988 | esquery: 1.6.0
2989 | esutils: 2.0.3
2990 | fast-deep-equal: 3.1.3
2991 | file-entry-cache: 8.0.0
2992 | find-up: 5.0.0
2993 | glob-parent: 6.0.2
2994 | ignore: 5.3.2
2995 | imurmurhash: 0.1.4
2996 | is-glob: 4.0.3
2997 | json-stable-stringify-without-jsonify: 1.0.1
2998 | lodash.merge: 4.6.2
2999 | minimatch: 3.1.2
3000 | natural-compare: 1.4.0
3001 | optionator: 0.9.4
3002 | optionalDependencies:
3003 | jiti: 1.21.7
3004 | transitivePeerDependencies:
3005 | - supports-color
3006 |
3007 | espree@10.3.0:
3008 | dependencies:
3009 | acorn: 8.14.0
3010 | acorn-jsx: 5.3.2(acorn@8.14.0)
3011 | eslint-visitor-keys: 4.2.0
3012 |
3013 | esquery@1.6.0:
3014 | dependencies:
3015 | estraverse: 5.3.0
3016 |
3017 | esrecurse@4.3.0:
3018 | dependencies:
3019 | estraverse: 5.3.0
3020 |
3021 | estraverse@5.3.0: {}
3022 |
3023 | esutils@2.0.3: {}
3024 |
3025 | etag@1.8.1: {}
3026 |
3027 | events@1.1.1: {}
3028 |
3029 | eventsource-parser@3.0.6: {}
3030 |
3031 | eventsource@3.0.7:
3032 | dependencies:
3033 | eventsource-parser: 3.0.6
3034 |
3035 | express-rate-limit@7.5.1(express@5.1.0):
3036 | dependencies:
3037 | express: 5.1.0
3038 |
3039 | express@5.1.0:
3040 | dependencies:
3041 | accepts: 2.0.0
3042 | body-parser: 2.2.0
3043 | content-disposition: 1.0.0
3044 | content-type: 1.0.5
3045 | cookie: 0.7.2
3046 | cookie-signature: 1.2.2
3047 | debug: 4.4.0
3048 | encodeurl: 2.0.0
3049 | escape-html: 1.0.3
3050 | etag: 1.8.1
3051 | finalhandler: 2.1.0
3052 | fresh: 2.0.0
3053 | http-errors: 2.0.0
3054 | merge-descriptors: 2.0.0
3055 | mime-types: 3.0.1
3056 | on-finished: 2.4.1
3057 | once: 1.4.0
3058 | parseurl: 1.3.3
3059 | proxy-addr: 2.0.7
3060 | qs: 6.14.0
3061 | range-parser: 1.2.1
3062 | router: 2.2.0
3063 | send: 1.2.0
3064 | serve-static: 2.2.0
3065 | statuses: 2.0.2
3066 | type-is: 2.0.1
3067 | vary: 1.1.2
3068 | transitivePeerDependencies:
3069 | - supports-color
3070 |
3071 | fast-deep-equal@3.1.3: {}
3072 |
3073 | fast-glob@3.3.1:
3074 | dependencies:
3075 | '@nodelib/fs.stat': 2.0.5
3076 | '@nodelib/fs.walk': 1.2.8
3077 | glob-parent: 5.1.2
3078 | merge2: 1.4.1
3079 | micromatch: 4.0.8
3080 |
3081 | fast-glob@3.3.3:
3082 | dependencies:
3083 | '@nodelib/fs.stat': 2.0.5
3084 | '@nodelib/fs.walk': 1.2.8
3085 | glob-parent: 5.1.2
3086 | merge2: 1.4.1
3087 | micromatch: 4.0.8
3088 |
3089 | fast-json-stable-stringify@2.1.0: {}
3090 |
3091 | fast-levenshtein@2.0.6: {}
3092 |
3093 | fastq@1.18.0:
3094 | dependencies:
3095 | reusify: 1.0.4
3096 |
3097 | file-entry-cache@8.0.0:
3098 | dependencies:
3099 | flat-cache: 4.0.1
3100 |
3101 | fill-range@7.1.1:
3102 | dependencies:
3103 | to-regex-range: 5.0.1
3104 |
3105 | finalhandler@2.1.0:
3106 | dependencies:
3107 | debug: 4.4.0
3108 | encodeurl: 2.0.0
3109 | escape-html: 1.0.3
3110 | on-finished: 2.4.1
3111 | parseurl: 1.3.3
3112 | statuses: 2.0.2
3113 | transitivePeerDependencies:
3114 | - supports-color
3115 |
3116 | find-up@5.0.0:
3117 | dependencies:
3118 | locate-path: 6.0.0
3119 | path-exists: 4.0.0
3120 |
3121 | flat-cache@4.0.1:
3122 | dependencies:
3123 | flatted: 3.3.2
3124 | keyv: 4.5.4
3125 |
3126 | flatted@3.3.2: {}
3127 |
3128 | for-each@0.3.3:
3129 | dependencies:
3130 | is-callable: 1.2.7
3131 |
3132 | foreground-child@3.3.0:
3133 | dependencies:
3134 | cross-spawn: 7.0.6
3135 | signal-exit: 4.1.0
3136 |
3137 | forwarded@0.2.0: {}
3138 |
3139 | fresh@2.0.0: {}
3140 |
3141 | fsevents@2.3.3:
3142 | optional: true
3143 |
3144 | function-bind@1.1.2: {}
3145 |
3146 | function.prototype.name@1.1.8:
3147 | dependencies:
3148 | call-bind: 1.0.8
3149 | call-bound: 1.0.3
3150 | define-properties: 1.2.1
3151 | functions-have-names: 1.2.3
3152 | hasown: 2.0.2
3153 | is-callable: 1.2.7
3154 |
3155 | functions-have-names@1.2.3: {}
3156 |
3157 | get-intrinsic@1.2.7:
3158 | dependencies:
3159 | call-bind-apply-helpers: 1.0.1
3160 | es-define-property: 1.0.1
3161 | es-errors: 1.3.0
3162 | es-object-atoms: 1.0.0
3163 | function-bind: 1.1.2
3164 | get-proto: 1.0.1
3165 | gopd: 1.2.0
3166 | has-symbols: 1.1.0
3167 | hasown: 2.0.2
3168 | math-intrinsics: 1.1.0
3169 |
3170 | get-proto@1.0.1:
3171 | dependencies:
3172 | dunder-proto: 1.0.1
3173 | es-object-atoms: 1.0.0
3174 |
3175 | get-symbol-description@1.1.0:
3176 | dependencies:
3177 | call-bound: 1.0.3
3178 | es-errors: 1.3.0
3179 | get-intrinsic: 1.2.7
3180 |
3181 | get-tsconfig@4.8.1:
3182 | dependencies:
3183 | resolve-pkg-maps: 1.0.0
3184 |
3185 | glob-parent@5.1.2:
3186 | dependencies:
3187 | is-glob: 4.0.3
3188 |
3189 | glob-parent@6.0.2:
3190 | dependencies:
3191 | is-glob: 4.0.3
3192 |
3193 | glob@10.4.5:
3194 | dependencies:
3195 | foreground-child: 3.3.0
3196 | jackspeak: 3.4.3
3197 | minimatch: 9.0.5
3198 | minipass: 7.1.2
3199 | package-json-from-dist: 1.0.1
3200 | path-scurry: 1.11.1
3201 |
3202 | globals@14.0.0: {}
3203 |
3204 | globalthis@1.0.4:
3205 | dependencies:
3206 | define-properties: 1.2.1
3207 | gopd: 1.2.0
3208 |
3209 | gopd@1.2.0: {}
3210 |
3211 | graceful-fs@4.2.11: {}
3212 |
3213 | graphemer@1.4.0: {}
3214 |
3215 | has-bigints@1.1.0: {}
3216 |
3217 | has-flag@4.0.0: {}
3218 |
3219 | has-property-descriptors@1.0.2:
3220 | dependencies:
3221 | es-define-property: 1.0.1
3222 |
3223 | has-proto@1.2.0:
3224 | dependencies:
3225 | dunder-proto: 1.0.1
3226 |
3227 | has-symbols@1.1.0: {}
3228 |
3229 | has-tostringtag@1.0.2:
3230 | dependencies:
3231 | has-symbols: 1.1.0
3232 |
3233 | hasown@2.0.2:
3234 | dependencies:
3235 | function-bind: 1.1.2
3236 |
3237 | hono@4.7.4: {}
3238 |
3239 | http-errors@2.0.0:
3240 | dependencies:
3241 | depd: 2.0.0
3242 | inherits: 2.0.4
3243 | setprototypeof: 1.2.0
3244 | statuses: 2.0.1
3245 | toidentifier: 1.0.1
3246 |
3247 | iconv-lite@0.6.3:
3248 | dependencies:
3249 | safer-buffer: 2.1.2
3250 |
3251 | iconv-lite@0.7.0:
3252 | dependencies:
3253 | safer-buffer: 2.1.2
3254 |
3255 | ieee754@1.1.13: {}
3256 |
3257 | ignore@5.3.2: {}
3258 |
3259 | import-fresh@3.3.0:
3260 | dependencies:
3261 | parent-module: 1.0.1
3262 | resolve-from: 4.0.0
3263 |
3264 | imurmurhash@0.1.4: {}
3265 |
3266 | inherits@2.0.4: {}
3267 |
3268 | internal-slot@1.1.0:
3269 | dependencies:
3270 | es-errors: 1.3.0
3271 | hasown: 2.0.2
3272 | side-channel: 1.1.0
3273 |
3274 | ipaddr.js@1.9.1: {}
3275 |
3276 | is-arguments@1.2.0:
3277 | dependencies:
3278 | call-bound: 1.0.3
3279 | has-tostringtag: 1.0.2
3280 |
3281 | is-array-buffer@3.0.5:
3282 | dependencies:
3283 | call-bind: 1.0.8
3284 | call-bound: 1.0.3
3285 | get-intrinsic: 1.2.7
3286 |
3287 | is-arrayish@0.3.2:
3288 | optional: true
3289 |
3290 | is-async-function@2.1.0:
3291 | dependencies:
3292 | call-bound: 1.0.3
3293 | get-proto: 1.0.1
3294 | has-tostringtag: 1.0.2
3295 | safe-regex-test: 1.1.0
3296 |
3297 | is-bigint@1.1.0:
3298 | dependencies:
3299 | has-bigints: 1.1.0
3300 |
3301 | is-binary-path@2.1.0:
3302 | dependencies:
3303 | binary-extensions: 2.3.0
3304 |
3305 | is-boolean-object@1.2.1:
3306 | dependencies:
3307 | call-bound: 1.0.3
3308 | has-tostringtag: 1.0.2
3309 |
3310 | is-bun-module@1.3.0:
3311 | dependencies:
3312 | semver: 7.6.3
3313 |
3314 | is-callable@1.2.7: {}
3315 |
3316 | is-core-module@2.16.1:
3317 | dependencies:
3318 | hasown: 2.0.2
3319 |
3320 | is-data-view@1.0.2:
3321 | dependencies:
3322 | call-bound: 1.0.3
3323 | get-intrinsic: 1.2.7
3324 | is-typed-array: 1.1.15
3325 |
3326 | is-date-object@1.1.0:
3327 | dependencies:
3328 | call-bound: 1.0.3
3329 | has-tostringtag: 1.0.2
3330 |
3331 | is-extglob@2.1.1: {}
3332 |
3333 | is-finalizationregistry@1.1.1:
3334 | dependencies:
3335 | call-bound: 1.0.3
3336 |
3337 | is-fullwidth-code-point@3.0.0: {}
3338 |
3339 | is-generator-function@1.1.0:
3340 | dependencies:
3341 | call-bound: 1.0.3
3342 | get-proto: 1.0.1
3343 | has-tostringtag: 1.0.2
3344 | safe-regex-test: 1.1.0
3345 |
3346 | is-glob@4.0.3:
3347 | dependencies:
3348 | is-extglob: 2.1.1
3349 |
3350 | is-map@2.0.3: {}
3351 |
3352 | is-number-object@1.1.1:
3353 | dependencies:
3354 | call-bound: 1.0.3
3355 | has-tostringtag: 1.0.2
3356 |
3357 | is-number@7.0.0: {}
3358 |
3359 | is-promise@4.0.0: {}
3360 |
3361 | is-regex@1.2.1:
3362 | dependencies:
3363 | call-bound: 1.0.3
3364 | gopd: 1.2.0
3365 | has-tostringtag: 1.0.2
3366 | hasown: 2.0.2
3367 |
3368 | is-set@2.0.3: {}
3369 |
3370 | is-shared-array-buffer@1.0.4:
3371 | dependencies:
3372 | call-bound: 1.0.3
3373 |
3374 | is-string@1.1.1:
3375 | dependencies:
3376 | call-bound: 1.0.3
3377 | has-tostringtag: 1.0.2
3378 |
3379 | is-symbol@1.1.1:
3380 | dependencies:
3381 | call-bound: 1.0.3
3382 | has-symbols: 1.1.0
3383 | safe-regex-test: 1.1.0
3384 |
3385 | is-typed-array@1.1.15:
3386 | dependencies:
3387 | which-typed-array: 1.1.18
3388 |
3389 | is-weakmap@2.0.2: {}
3390 |
3391 | is-weakref@1.1.0:
3392 | dependencies:
3393 | call-bound: 1.0.3
3394 |
3395 | is-weakset@2.0.4:
3396 | dependencies:
3397 | call-bound: 1.0.3
3398 | get-intrinsic: 1.2.7
3399 |
3400 | isarray@1.0.0: {}
3401 |
3402 | isarray@2.0.5: {}
3403 |
3404 | isexe@2.0.0: {}
3405 |
3406 | iterator.prototype@1.1.5:
3407 | dependencies:
3408 | define-data-property: 1.1.4
3409 | es-object-atoms: 1.0.0
3410 | get-intrinsic: 1.2.7
3411 | get-proto: 1.0.1
3412 | has-symbols: 1.1.0
3413 | set-function-name: 2.0.2
3414 |
3415 | jackspeak@3.4.3:
3416 | dependencies:
3417 | '@isaacs/cliui': 8.0.2
3418 | optionalDependencies:
3419 | '@pkgjs/parseargs': 0.11.0
3420 |
3421 | jiti@1.21.7: {}
3422 |
3423 | jmespath@0.16.0: {}
3424 |
3425 | jose@4.15.9: {}
3426 |
3427 | jose@5.2.3: {}
3428 |
3429 | js-tokens@4.0.0: {}
3430 |
3431 | js-yaml@4.1.0:
3432 | dependencies:
3433 | argparse: 2.0.1
3434 |
3435 | json-buffer@3.0.1: {}
3436 |
3437 | json-schema-traverse@0.4.1: {}
3438 |
3439 | json-stable-stringify-without-jsonify@1.0.1: {}
3440 |
3441 | json5@1.0.2:
3442 | dependencies:
3443 | minimist: 1.2.8
3444 |
3445 | jsx-ast-utils@3.3.5:
3446 | dependencies:
3447 | array-includes: 3.1.8
3448 | array.prototype.flat: 1.3.3
3449 | object.assign: 4.1.7
3450 | object.values: 1.2.1
3451 |
3452 | keyv@4.5.4:
3453 | dependencies:
3454 | json-buffer: 3.0.1
3455 |
3456 | language-subtag-registry@0.3.23: {}
3457 |
3458 | language-tags@1.0.9:
3459 | dependencies:
3460 | language-subtag-registry: 0.3.23
3461 |
3462 | levn@0.4.1:
3463 | dependencies:
3464 | prelude-ls: 1.2.1
3465 | type-check: 0.4.0
3466 |
3467 | lilconfig@3.1.3: {}
3468 |
3469 | lines-and-columns@1.2.4: {}
3470 |
3471 | locate-path@6.0.0:
3472 | dependencies:
3473 | p-locate: 5.0.0
3474 |
3475 | lodash.merge@4.6.2: {}
3476 |
3477 | loose-envify@1.4.0:
3478 | dependencies:
3479 | js-tokens: 4.0.0
3480 |
3481 | lru-cache@10.4.3: {}
3482 |
3483 | lru-cache@6.0.0:
3484 | dependencies:
3485 | yallist: 4.0.0
3486 |
3487 | math-intrinsics@1.1.0: {}
3488 |
3489 | media-typer@1.1.0: {}
3490 |
3491 | merge-descriptors@2.0.0: {}
3492 |
3493 | merge2@1.4.1: {}
3494 |
3495 | micromatch@4.0.8:
3496 | dependencies:
3497 | braces: 3.0.3
3498 | picomatch: 2.3.1
3499 |
3500 | mime-db@1.54.0: {}
3501 |
3502 | mime-types@3.0.1:
3503 | dependencies:
3504 | mime-db: 1.54.0
3505 |
3506 | minimatch@3.1.2:
3507 | dependencies:
3508 | brace-expansion: 1.1.11
3509 |
3510 | minimatch@9.0.5:
3511 | dependencies:
3512 | brace-expansion: 2.0.1
3513 |
3514 | minimist@1.2.8: {}
3515 |
3516 | minipass@7.1.2: {}
3517 |
3518 | ms@2.1.3: {}
3519 |
3520 | mz@2.7.0:
3521 | dependencies:
3522 | any-promise: 1.3.0
3523 | object-assign: 4.1.1
3524 | thenify-all: 1.6.0
3525 |
3526 | nanoid@3.3.8: {}
3527 |
3528 | natural-compare@1.4.0: {}
3529 |
3530 | negotiator@1.0.0: {}
3531 |
3532 | next@15.1.4(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
3533 | dependencies:
3534 | '@next/env': 15.1.4
3535 | '@swc/counter': 0.1.3
3536 | '@swc/helpers': 0.5.15
3537 | busboy: 1.6.0
3538 | caniuse-lite: 1.0.30001692
3539 | postcss: 8.4.31
3540 | react: 19.0.0
3541 | react-dom: 19.0.0(react@19.0.0)
3542 | styled-jsx: 5.1.6(react@19.0.0)
3543 | optionalDependencies:
3544 | '@next/swc-darwin-arm64': 15.1.4
3545 | '@next/swc-darwin-x64': 15.1.4
3546 | '@next/swc-linux-arm64-gnu': 15.1.4
3547 | '@next/swc-linux-arm64-musl': 15.1.4
3548 | '@next/swc-linux-x64-gnu': 15.1.4
3549 | '@next/swc-linux-x64-musl': 15.1.4
3550 | '@next/swc-win32-arm64-msvc': 15.1.4
3551 | '@next/swc-win32-x64-msvc': 15.1.4
3552 | '@opentelemetry/api': 1.9.0
3553 | sharp: 0.33.5
3554 | transitivePeerDependencies:
3555 | - '@babel/core'
3556 | - babel-plugin-macros
3557 |
3558 | normalize-path@3.0.0: {}
3559 |
3560 | object-assign@4.1.1: {}
3561 |
3562 | object-hash@2.2.0: {}
3563 |
3564 | object-hash@3.0.0: {}
3565 |
3566 | object-inspect@1.13.3: {}
3567 |
3568 | object-keys@1.1.1: {}
3569 |
3570 | object.assign@4.1.7:
3571 | dependencies:
3572 | call-bind: 1.0.8
3573 | call-bound: 1.0.3
3574 | define-properties: 1.2.1
3575 | es-object-atoms: 1.0.0
3576 | has-symbols: 1.1.0
3577 | object-keys: 1.1.1
3578 |
3579 | object.entries@1.1.8:
3580 | dependencies:
3581 | call-bind: 1.0.8
3582 | define-properties: 1.2.1
3583 | es-object-atoms: 1.0.0
3584 |
3585 | object.fromentries@2.0.8:
3586 | dependencies:
3587 | call-bind: 1.0.8
3588 | define-properties: 1.2.1
3589 | es-abstract: 1.23.9
3590 | es-object-atoms: 1.0.0
3591 |
3592 | object.groupby@1.0.3:
3593 | dependencies:
3594 | call-bind: 1.0.8
3595 | define-properties: 1.2.1
3596 | es-abstract: 1.23.9
3597 |
3598 | object.values@1.2.1:
3599 | dependencies:
3600 | call-bind: 1.0.8
3601 | call-bound: 1.0.3
3602 | define-properties: 1.2.1
3603 | es-object-atoms: 1.0.0
3604 |
3605 | oidc-token-hash@5.0.3: {}
3606 |
3607 | on-finished@2.4.1:
3608 | dependencies:
3609 | ee-first: 1.1.1
3610 |
3611 | once@1.4.0:
3612 | dependencies:
3613 | wrappy: 1.0.2
3614 |
3615 | opencontrol@0.0.6:
3616 | dependencies:
3617 | '@modelcontextprotocol/sdk': 1.6.1
3618 | '@tsconfig/bun': 1.0.7
3619 | hono: 4.7.4
3620 | zod: 3.24.2
3621 | zod-to-json-schema: 3.24.3(zod@3.24.2)
3622 | transitivePeerDependencies:
3623 | - supports-color
3624 |
3625 | openid-client@5.6.4:
3626 | dependencies:
3627 | jose: 4.15.9
3628 | lru-cache: 6.0.0
3629 | object-hash: 2.2.0
3630 | oidc-token-hash: 5.0.3
3631 |
3632 | optionator@0.9.4:
3633 | dependencies:
3634 | deep-is: 0.1.4
3635 | fast-levenshtein: 2.0.6
3636 | levn: 0.4.1
3637 | prelude-ls: 1.2.1
3638 | type-check: 0.4.0
3639 | word-wrap: 1.2.5
3640 |
3641 | own-keys@1.0.1:
3642 | dependencies:
3643 | get-intrinsic: 1.2.7
3644 | object-keys: 1.1.1
3645 | safe-push-apply: 1.0.0
3646 |
3647 | p-limit@3.1.0:
3648 | dependencies:
3649 | yocto-queue: 0.1.0
3650 |
3651 | p-locate@5.0.0:
3652 | dependencies:
3653 | p-limit: 3.1.0
3654 |
3655 | package-json-from-dist@1.0.1: {}
3656 |
3657 | parent-module@1.0.1:
3658 | dependencies:
3659 | callsites: 3.1.0
3660 |
3661 | parseurl@1.3.3: {}
3662 |
3663 | path-exists@4.0.0: {}
3664 |
3665 | path-key@3.1.1: {}
3666 |
3667 | path-parse@1.0.7: {}
3668 |
3669 | path-scurry@1.11.1:
3670 | dependencies:
3671 | lru-cache: 10.4.3
3672 | minipass: 7.1.2
3673 |
3674 | path-to-regexp@8.3.0: {}
3675 |
3676 | picocolors@1.1.1: {}
3677 |
3678 | picomatch@2.3.1: {}
3679 |
3680 | pify@2.3.0: {}
3681 |
3682 | pirates@4.0.6: {}
3683 |
3684 | pkce-challenge@4.1.0: {}
3685 |
3686 | possible-typed-array-names@1.0.0: {}
3687 |
3688 | postcss-import@15.1.0(postcss@8.4.49):
3689 | dependencies:
3690 | postcss: 8.4.49
3691 | postcss-value-parser: 4.2.0
3692 | read-cache: 1.0.0
3693 | resolve: 1.22.10
3694 |
3695 | postcss-js@4.0.1(postcss@8.4.49):
3696 | dependencies:
3697 | camelcase-css: 2.0.1
3698 | postcss: 8.4.49
3699 |
3700 | postcss-load-config@4.0.2(postcss@8.4.49):
3701 | dependencies:
3702 | lilconfig: 3.1.3
3703 | yaml: 2.7.0
3704 | optionalDependencies:
3705 | postcss: 8.4.49
3706 |
3707 | postcss-nested@6.2.0(postcss@8.4.49):
3708 | dependencies:
3709 | postcss: 8.4.49
3710 | postcss-selector-parser: 6.1.2
3711 |
3712 | postcss-selector-parser@6.1.2:
3713 | dependencies:
3714 | cssesc: 3.0.0
3715 | util-deprecate: 1.0.2
3716 |
3717 | postcss-value-parser@4.2.0: {}
3718 |
3719 | postcss@8.4.31:
3720 | dependencies:
3721 | nanoid: 3.3.8
3722 | picocolors: 1.1.1
3723 | source-map-js: 1.2.1
3724 |
3725 | postcss@8.4.49:
3726 | dependencies:
3727 | nanoid: 3.3.8
3728 | picocolors: 1.1.1
3729 | source-map-js: 1.2.1
3730 |
3731 | prelude-ls@1.2.1: {}
3732 |
3733 | prettier@3.4.2: {}
3734 |
3735 | prop-types@15.8.1:
3736 | dependencies:
3737 | loose-envify: 1.4.0
3738 | object-assign: 4.1.1
3739 | react-is: 16.13.1
3740 |
3741 | proxy-addr@2.0.7:
3742 | dependencies:
3743 | forwarded: 0.2.0
3744 | ipaddr.js: 1.9.1
3745 |
3746 | punycode@1.3.2: {}
3747 |
3748 | punycode@2.3.1: {}
3749 |
3750 | qs@6.14.0:
3751 | dependencies:
3752 | side-channel: 1.1.0
3753 |
3754 | querystring@0.2.0: {}
3755 |
3756 | queue-microtask@1.2.3: {}
3757 |
3758 | range-parser@1.2.1: {}
3759 |
3760 | raw-body@3.0.1:
3761 | dependencies:
3762 | bytes: 3.1.2
3763 | http-errors: 2.0.0
3764 | iconv-lite: 0.7.0
3765 | unpipe: 1.0.0
3766 |
3767 | react-dom@19.0.0(react@19.0.0):
3768 | dependencies:
3769 | react: 19.0.0
3770 | scheduler: 0.25.0
3771 |
3772 | react-is@16.13.1: {}
3773 |
3774 | react@19.0.0: {}
3775 |
3776 | read-cache@1.0.0:
3777 | dependencies:
3778 | pify: 2.3.0
3779 |
3780 | readdirp@3.6.0:
3781 | dependencies:
3782 | picomatch: 2.3.1
3783 |
3784 | reflect.getprototypeof@1.0.10:
3785 | dependencies:
3786 | call-bind: 1.0.8
3787 | define-properties: 1.2.1
3788 | es-abstract: 1.23.9
3789 | es-errors: 1.3.0
3790 | es-object-atoms: 1.0.0
3791 | get-intrinsic: 1.2.7
3792 | get-proto: 1.0.1
3793 | which-builtin-type: 1.2.1
3794 |
3795 | regexp.prototype.flags@1.5.4:
3796 | dependencies:
3797 | call-bind: 1.0.8
3798 | define-properties: 1.2.1
3799 | es-errors: 1.3.0
3800 | get-proto: 1.0.1
3801 | gopd: 1.2.0
3802 | set-function-name: 2.0.2
3803 |
3804 | resolve-from@4.0.0: {}
3805 |
3806 | resolve-pkg-maps@1.0.0: {}
3807 |
3808 | resolve@1.22.10:
3809 | dependencies:
3810 | is-core-module: 2.16.1
3811 | path-parse: 1.0.7
3812 | supports-preserve-symlinks-flag: 1.0.0
3813 |
3814 | resolve@2.0.0-next.5:
3815 | dependencies:
3816 | is-core-module: 2.16.1
3817 | path-parse: 1.0.7
3818 | supports-preserve-symlinks-flag: 1.0.0
3819 |
3820 | reusify@1.0.4: {}
3821 |
3822 | router@2.2.0:
3823 | dependencies:
3824 | debug: 4.4.0
3825 | depd: 2.0.0
3826 | is-promise: 4.0.0
3827 | parseurl: 1.3.3
3828 | path-to-regexp: 8.3.0
3829 | transitivePeerDependencies:
3830 | - supports-color
3831 |
3832 | run-parallel@1.2.0:
3833 | dependencies:
3834 | queue-microtask: 1.2.3
3835 |
3836 | safe-array-concat@1.1.3:
3837 | dependencies:
3838 | call-bind: 1.0.8
3839 | call-bound: 1.0.3
3840 | get-intrinsic: 1.2.7
3841 | has-symbols: 1.1.0
3842 | isarray: 2.0.5
3843 |
3844 | safe-buffer@5.2.1: {}
3845 |
3846 | safe-push-apply@1.0.0:
3847 | dependencies:
3848 | es-errors: 1.3.0
3849 | isarray: 2.0.5
3850 |
3851 | safe-regex-test@1.1.0:
3852 | dependencies:
3853 | call-bound: 1.0.3
3854 | es-errors: 1.3.0
3855 | is-regex: 1.2.1
3856 |
3857 | safer-buffer@2.1.2: {}
3858 |
3859 | sax@1.2.1: {}
3860 |
3861 | scheduler@0.25.0: {}
3862 |
3863 | semver@6.3.1: {}
3864 |
3865 | semver@7.6.3: {}
3866 |
3867 | send@1.2.0:
3868 | dependencies:
3869 | debug: 4.4.0
3870 | encodeurl: 2.0.0
3871 | escape-html: 1.0.3
3872 | etag: 1.8.1
3873 | fresh: 2.0.0
3874 | http-errors: 2.0.0
3875 | mime-types: 3.0.1
3876 | ms: 2.1.3
3877 | on-finished: 2.4.1
3878 | range-parser: 1.2.1
3879 | statuses: 2.0.2
3880 | transitivePeerDependencies:
3881 | - supports-color
3882 |
3883 | serve-static@2.2.0:
3884 | dependencies:
3885 | encodeurl: 2.0.0
3886 | escape-html: 1.0.3
3887 | parseurl: 1.3.3
3888 | send: 1.2.0
3889 | transitivePeerDependencies:
3890 | - supports-color
3891 |
3892 | set-function-length@1.2.2:
3893 | dependencies:
3894 | define-data-property: 1.1.4
3895 | es-errors: 1.3.0
3896 | function-bind: 1.1.2
3897 | get-intrinsic: 1.2.7
3898 | gopd: 1.2.0
3899 | has-property-descriptors: 1.0.2
3900 |
3901 | set-function-name@2.0.2:
3902 | dependencies:
3903 | define-data-property: 1.1.4
3904 | es-errors: 1.3.0
3905 | functions-have-names: 1.2.3
3906 | has-property-descriptors: 1.0.2
3907 |
3908 | set-proto@1.0.0:
3909 | dependencies:
3910 | dunder-proto: 1.0.1
3911 | es-errors: 1.3.0
3912 | es-object-atoms: 1.0.0
3913 |
3914 | setprototypeof@1.2.0: {}
3915 |
3916 | sharp@0.33.5:
3917 | dependencies:
3918 | color: 4.2.3
3919 | detect-libc: 2.0.3
3920 | semver: 7.6.3
3921 | optionalDependencies:
3922 | '@img/sharp-darwin-arm64': 0.33.5
3923 | '@img/sharp-darwin-x64': 0.33.5
3924 | '@img/sharp-libvips-darwin-arm64': 1.0.4
3925 | '@img/sharp-libvips-darwin-x64': 1.0.4
3926 | '@img/sharp-libvips-linux-arm': 1.0.5
3927 | '@img/sharp-libvips-linux-arm64': 1.0.4
3928 | '@img/sharp-libvips-linux-s390x': 1.0.4
3929 | '@img/sharp-libvips-linux-x64': 1.0.4
3930 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
3931 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
3932 | '@img/sharp-linux-arm': 0.33.5
3933 | '@img/sharp-linux-arm64': 0.33.5
3934 | '@img/sharp-linux-s390x': 0.33.5
3935 | '@img/sharp-linux-x64': 0.33.5
3936 | '@img/sharp-linuxmusl-arm64': 0.33.5
3937 | '@img/sharp-linuxmusl-x64': 0.33.5
3938 | '@img/sharp-wasm32': 0.33.5
3939 | '@img/sharp-win32-ia32': 0.33.5
3940 | '@img/sharp-win32-x64': 0.33.5
3941 | optional: true
3942 |
3943 | shebang-command@2.0.0:
3944 | dependencies:
3945 | shebang-regex: 3.0.0
3946 |
3947 | shebang-regex@3.0.0: {}
3948 |
3949 | side-channel-list@1.0.0:
3950 | dependencies:
3951 | es-errors: 1.3.0
3952 | object-inspect: 1.13.3
3953 |
3954 | side-channel-map@1.0.1:
3955 | dependencies:
3956 | call-bound: 1.0.3
3957 | es-errors: 1.3.0
3958 | get-intrinsic: 1.2.7
3959 | object-inspect: 1.13.3
3960 |
3961 | side-channel-weakmap@1.0.2:
3962 | dependencies:
3963 | call-bound: 1.0.3
3964 | es-errors: 1.3.0
3965 | get-intrinsic: 1.2.7
3966 | object-inspect: 1.13.3
3967 | side-channel-map: 1.0.1
3968 |
3969 | side-channel@1.1.0:
3970 | dependencies:
3971 | es-errors: 1.3.0
3972 | object-inspect: 1.13.3
3973 | side-channel-list: 1.0.0
3974 | side-channel-map: 1.0.1
3975 | side-channel-weakmap: 1.0.2
3976 |
3977 | signal-exit@4.1.0: {}
3978 |
3979 | simple-swizzle@0.2.2:
3980 | dependencies:
3981 | is-arrayish: 0.3.2
3982 | optional: true
3983 |
3984 | source-map-js@1.2.1: {}
3985 |
3986 | sst-darwin-arm64@3.17.13:
3987 | optional: true
3988 |
3989 | sst-darwin-x64@3.17.13:
3990 | optional: true
3991 |
3992 | sst-linux-arm64@3.17.13:
3993 | optional: true
3994 |
3995 | sst-linux-x64@3.17.13:
3996 | optional: true
3997 |
3998 | sst-linux-x86@3.17.13:
3999 | optional: true
4000 |
4001 | sst-win32-arm64@3.17.13:
4002 | optional: true
4003 |
4004 | sst-win32-x64@3.17.13:
4005 | optional: true
4006 |
4007 | sst-win32-x86@3.17.13:
4008 | optional: true
4009 |
4010 | sst@3.17.13:
4011 | dependencies:
4012 | aws-sdk: 2.1692.0
4013 | aws4fetch: 1.0.18
4014 | jose: 5.2.3
4015 | opencontrol: 0.0.6
4016 | openid-client: 5.6.4
4017 | optionalDependencies:
4018 | sst-darwin-arm64: 3.17.13
4019 | sst-darwin-x64: 3.17.13
4020 | sst-linux-arm64: 3.17.13
4021 | sst-linux-x64: 3.17.13
4022 | sst-linux-x86: 3.17.13
4023 | sst-win32-arm64: 3.17.13
4024 | sst-win32-x64: 3.17.13
4025 | sst-win32-x86: 3.17.13
4026 | transitivePeerDependencies:
4027 | - supports-color
4028 |
4029 | stable-hash@0.0.4: {}
4030 |
4031 | statuses@2.0.1: {}
4032 |
4033 | statuses@2.0.2: {}
4034 |
4035 | streamsearch@1.1.0: {}
4036 |
4037 | string-width@4.2.3:
4038 | dependencies:
4039 | emoji-regex: 8.0.0
4040 | is-fullwidth-code-point: 3.0.0
4041 | strip-ansi: 6.0.1
4042 |
4043 | string-width@5.1.2:
4044 | dependencies:
4045 | eastasianwidth: 0.2.0
4046 | emoji-regex: 9.2.2
4047 | strip-ansi: 7.1.0
4048 |
4049 | string.prototype.includes@2.0.1:
4050 | dependencies:
4051 | call-bind: 1.0.8
4052 | define-properties: 1.2.1
4053 | es-abstract: 1.23.9
4054 |
4055 | string.prototype.matchall@4.0.12:
4056 | dependencies:
4057 | call-bind: 1.0.8
4058 | call-bound: 1.0.3
4059 | define-properties: 1.2.1
4060 | es-abstract: 1.23.9
4061 | es-errors: 1.3.0
4062 | es-object-atoms: 1.0.0
4063 | get-intrinsic: 1.2.7
4064 | gopd: 1.2.0
4065 | has-symbols: 1.1.0
4066 | internal-slot: 1.1.0
4067 | regexp.prototype.flags: 1.5.4
4068 | set-function-name: 2.0.2
4069 | side-channel: 1.1.0
4070 |
4071 | string.prototype.repeat@1.0.0:
4072 | dependencies:
4073 | define-properties: 1.2.1
4074 | es-abstract: 1.23.9
4075 |
4076 | string.prototype.trim@1.2.10:
4077 | dependencies:
4078 | call-bind: 1.0.8
4079 | call-bound: 1.0.3
4080 | define-data-property: 1.1.4
4081 | define-properties: 1.2.1
4082 | es-abstract: 1.23.9
4083 | es-object-atoms: 1.0.0
4084 | has-property-descriptors: 1.0.2
4085 |
4086 | string.prototype.trimend@1.0.9:
4087 | dependencies:
4088 | call-bind: 1.0.8
4089 | call-bound: 1.0.3
4090 | define-properties: 1.2.1
4091 | es-object-atoms: 1.0.0
4092 |
4093 | string.prototype.trimstart@1.0.8:
4094 | dependencies:
4095 | call-bind: 1.0.8
4096 | define-properties: 1.2.1
4097 | es-object-atoms: 1.0.0
4098 |
4099 | strip-ansi@6.0.1:
4100 | dependencies:
4101 | ansi-regex: 5.0.1
4102 |
4103 | strip-ansi@7.1.0:
4104 | dependencies:
4105 | ansi-regex: 6.1.0
4106 |
4107 | strip-bom@3.0.0: {}
4108 |
4109 | strip-json-comments@3.1.1: {}
4110 |
4111 | styled-jsx@5.1.6(react@19.0.0):
4112 | dependencies:
4113 | client-only: 0.0.1
4114 | react: 19.0.0
4115 |
4116 | sucrase@3.35.0:
4117 | dependencies:
4118 | '@jridgewell/gen-mapping': 0.3.8
4119 | commander: 4.1.1
4120 | glob: 10.4.5
4121 | lines-and-columns: 1.2.4
4122 | mz: 2.7.0
4123 | pirates: 4.0.6
4124 | ts-interface-checker: 0.1.13
4125 |
4126 | supports-color@7.2.0:
4127 | dependencies:
4128 | has-flag: 4.0.0
4129 |
4130 | supports-preserve-symlinks-flag@1.0.0: {}
4131 |
4132 | tailwindcss@3.4.17:
4133 | dependencies:
4134 | '@alloc/quick-lru': 5.2.0
4135 | arg: 5.0.2
4136 | chokidar: 3.6.0
4137 | didyoumean: 1.2.2
4138 | dlv: 1.1.3
4139 | fast-glob: 3.3.3
4140 | glob-parent: 6.0.2
4141 | is-glob: 4.0.3
4142 | jiti: 1.21.7
4143 | lilconfig: 3.1.3
4144 | micromatch: 4.0.8
4145 | normalize-path: 3.0.0
4146 | object-hash: 3.0.0
4147 | picocolors: 1.1.1
4148 | postcss: 8.4.49
4149 | postcss-import: 15.1.0(postcss@8.4.49)
4150 | postcss-js: 4.0.1(postcss@8.4.49)
4151 | postcss-load-config: 4.0.2(postcss@8.4.49)
4152 | postcss-nested: 6.2.0(postcss@8.4.49)
4153 | postcss-selector-parser: 6.1.2
4154 | resolve: 1.22.10
4155 | sucrase: 3.35.0
4156 | transitivePeerDependencies:
4157 | - ts-node
4158 |
4159 | tapable@2.2.1: {}
4160 |
4161 | thenify-all@1.6.0:
4162 | dependencies:
4163 | thenify: 3.3.1
4164 |
4165 | thenify@3.3.1:
4166 | dependencies:
4167 | any-promise: 1.3.0
4168 |
4169 | to-regex-range@5.0.1:
4170 | dependencies:
4171 | is-number: 7.0.0
4172 |
4173 | toidentifier@1.0.1: {}
4174 |
4175 | ts-api-utils@2.0.0(typescript@5.7.3):
4176 | dependencies:
4177 | typescript: 5.7.3
4178 |
4179 | ts-interface-checker@0.1.13: {}
4180 |
4181 | tsconfig-paths@3.15.0:
4182 | dependencies:
4183 | '@types/json5': 0.0.29
4184 | json5: 1.0.2
4185 | minimist: 1.2.8
4186 | strip-bom: 3.0.0
4187 |
4188 | tslib@2.8.1: {}
4189 |
4190 | type-check@0.4.0:
4191 | dependencies:
4192 | prelude-ls: 1.2.1
4193 |
4194 | type-is@2.0.1:
4195 | dependencies:
4196 | content-type: 1.0.5
4197 | media-typer: 1.1.0
4198 | mime-types: 3.0.1
4199 |
4200 | typed-array-buffer@1.0.3:
4201 | dependencies:
4202 | call-bound: 1.0.3
4203 | es-errors: 1.3.0
4204 | is-typed-array: 1.1.15
4205 |
4206 | typed-array-byte-length@1.0.3:
4207 | dependencies:
4208 | call-bind: 1.0.8
4209 | for-each: 0.3.3
4210 | gopd: 1.2.0
4211 | has-proto: 1.2.0
4212 | is-typed-array: 1.1.15
4213 |
4214 | typed-array-byte-offset@1.0.4:
4215 | dependencies:
4216 | available-typed-arrays: 1.0.7
4217 | call-bind: 1.0.8
4218 | for-each: 0.3.3
4219 | gopd: 1.2.0
4220 | has-proto: 1.2.0
4221 | is-typed-array: 1.1.15
4222 | reflect.getprototypeof: 1.0.10
4223 |
4224 | typed-array-length@1.0.7:
4225 | dependencies:
4226 | call-bind: 1.0.8
4227 | for-each: 0.3.3
4228 | gopd: 1.2.0
4229 | is-typed-array: 1.1.15
4230 | possible-typed-array-names: 1.0.0
4231 | reflect.getprototypeof: 1.0.10
4232 |
4233 | typescript@5.7.3: {}
4234 |
4235 | unbox-primitive@1.1.0:
4236 | dependencies:
4237 | call-bound: 1.0.3
4238 | has-bigints: 1.1.0
4239 | has-symbols: 1.1.0
4240 | which-boxed-primitive: 1.1.1
4241 |
4242 | undici-types@6.19.8: {}
4243 |
4244 | unpipe@1.0.0: {}
4245 |
4246 | uri-js@4.4.1:
4247 | dependencies:
4248 | punycode: 2.3.1
4249 |
4250 | url@0.10.3:
4251 | dependencies:
4252 | punycode: 1.3.2
4253 | querystring: 0.2.0
4254 |
4255 | util-deprecate@1.0.2: {}
4256 |
4257 | util@0.12.5:
4258 | dependencies:
4259 | inherits: 2.0.4
4260 | is-arguments: 1.2.0
4261 | is-generator-function: 1.1.0
4262 | is-typed-array: 1.1.15
4263 | which-typed-array: 1.1.18
4264 |
4265 | uuid@8.0.0: {}
4266 |
4267 | vary@1.1.2: {}
4268 |
4269 | which-boxed-primitive@1.1.1:
4270 | dependencies:
4271 | is-bigint: 1.1.0
4272 | is-boolean-object: 1.2.1
4273 | is-number-object: 1.1.1
4274 | is-string: 1.1.1
4275 | is-symbol: 1.1.1
4276 |
4277 | which-builtin-type@1.2.1:
4278 | dependencies:
4279 | call-bound: 1.0.3
4280 | function.prototype.name: 1.1.8
4281 | has-tostringtag: 1.0.2
4282 | is-async-function: 2.1.0
4283 | is-date-object: 1.1.0
4284 | is-finalizationregistry: 1.1.1
4285 | is-generator-function: 1.1.0
4286 | is-regex: 1.2.1
4287 | is-weakref: 1.1.0
4288 | isarray: 2.0.5
4289 | which-boxed-primitive: 1.1.1
4290 | which-collection: 1.0.2
4291 | which-typed-array: 1.1.18
4292 |
4293 | which-collection@1.0.2:
4294 | dependencies:
4295 | is-map: 2.0.3
4296 | is-set: 2.0.3
4297 | is-weakmap: 2.0.2
4298 | is-weakset: 2.0.4
4299 |
4300 | which-typed-array@1.1.18:
4301 | dependencies:
4302 | available-typed-arrays: 1.0.7
4303 | call-bind: 1.0.8
4304 | call-bound: 1.0.3
4305 | for-each: 0.3.3
4306 | gopd: 1.2.0
4307 | has-tostringtag: 1.0.2
4308 |
4309 | which@2.0.2:
4310 | dependencies:
4311 | isexe: 2.0.0
4312 |
4313 | word-wrap@1.2.5: {}
4314 |
4315 | wrap-ansi@7.0.0:
4316 | dependencies:
4317 | ansi-styles: 4.3.0
4318 | string-width: 4.2.3
4319 | strip-ansi: 6.0.1
4320 |
4321 | wrap-ansi@8.1.0:
4322 | dependencies:
4323 | ansi-styles: 6.2.1
4324 | string-width: 5.1.2
4325 | strip-ansi: 7.1.0
4326 |
4327 | wrappy@1.0.2: {}
4328 |
4329 | xml2js@0.6.2:
4330 | dependencies:
4331 | sax: 1.2.1
4332 | xmlbuilder: 11.0.1
4333 |
4334 | xmlbuilder@11.0.1: {}
4335 |
4336 | yallist@4.0.0: {}
4337 |
4338 | yaml@2.7.0: {}
4339 |
4340 | yocto-queue@0.1.0: {}
4341 |
4342 | zod-to-json-schema@3.24.3(zod@3.24.2):
4343 | dependencies:
4344 | zod: 3.24.2
4345 |
4346 | zod@3.24.2: {}
4347 |
--------------------------------------------------------------------------------