From a38ad92fd9226fafbd15fbd94b75dc41cbff5c1d Mon Sep 17 00:00:00 2001 From: Jason Raimondi Date: Fri, 15 Mar 2024 23:07:25 -0400 Subject: [PATCH 1/8] refactor: convert to esm and bump packages --- package.json | 1 + src/allow_list.guard.ts | 4 +- src/app.module.ts | 42 ++++++++-------- src/config.api.ts | 2 +- src/controllers/app.controller.ts | 38 +++++++-------- src/main.ts | 8 +-- src/services/image-render.service.ts | 16 +++--- src/services/logger.service.ts | 2 +- src/storage/amazon-s3-storage.provider.ts | 2 +- src/storage/couch-db-storage.provider.ts | 8 +-- src/storage/file-system-storage.provider.ts | 7 +-- src/storage/stub-storage.provider.ts | 10 ++-- src/winston-logger.ts | 4 +- tsconfig.json | 54 +++++++++++---------- 14 files changed, 100 insertions(+), 98 deletions(-) diff --git a/package.json b/package.json index 65f726f..0c8309b 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.3.1", "description": "URL to PNG Server", "private": true, + "type": "module", "scripts": { "clean": "rm -rf dist/*", "serve": "node -r dotenv/config dist/main.js", diff --git a/src/allow_list.guard.ts b/src/allow_list.guard.ts index e1a2512..e35775c 100644 --- a/src/allow_list.guard.ts +++ b/src/allow_list.guard.ts @@ -1,8 +1,8 @@ import { CanActivate, ExecutionContext, UnauthorizedException } from "@nestjs/common"; -import { LoggerService } from "./services/logger.service"; +import { LoggerService } from "./services/logger.service.js"; export class AllowListGuard implements CanActivate { - private readonly allowedHosts: string[]; + private readonly allowedHosts?: string[]; constructor(private readonly logger: LoggerService, allowList?: string) { this.allowedHosts = this.formatAllowList(allowList); diff --git a/src/app.module.ts b/src/app.module.ts index 664e8a1..23a240b 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -2,19 +2,19 @@ import { Module } from "@nestjs/common"; import { APP_GUARD } from "@nestjs/core"; import { S3Client } from "@aws-sdk/client-s3"; import { Options } from "generic-pool"; -import * as nano from "nano"; - -import { AppController } from "./controllers/app.controller"; -import { createBrowserPool } from "./browser-pool"; -import { ImageRenderService, WaitForOptions } from "./services/image-render.service"; -import { IImageStorage, ImageStorageService } from "./services/image-storage.service"; -import { AmazonS3StorageProvider } from "./storage/amazon-s3-storage.provider"; -import { CouchDbStorageProvider } from "./storage/couch-db-storage.provider"; -import { StubStorageProvider } from "./storage/stub-storage.provider"; -import { winstonLogger } from "./winston-logger"; -import { AllowListGuard } from "./allow_list.guard"; -import { LoggerService } from "./services/logger.service"; -import { FileSystemStorageProvider } from "./storage/file-system-storage.provider"; +import nano from "nano"; + +import { AppController } from "./controllers/app.controller.js"; +import { createBrowserPool } from "./browser-pool.js"; +import { ImageRenderService, WaitForOptions } from "./services/image-render.service.js"; +import { IImageStorage, ImageStorageService } from "./services/image-storage.service.js"; +import { AmazonS3StorageProvider } from "./storage/amazon-s3-storage.provider.js"; +import { CouchDbStorageProvider } from "./storage/couch-db-storage.provider.js"; +import { StubStorageProvider } from "./storage/stub-storage.provider.js"; +import { winstonLogger } from "./winston-logger.js"; +import { AllowListGuard } from "./allow_list.guard.js"; +import { LoggerService } from "./services/logger.service.js"; +import { FileSystemStorageProvider } from "./storage/file-system-storage.provider.js"; const imageStorageService = { provide: ImageStorageService, @@ -23,20 +23,20 @@ const imageStorageService = { switch (process.env.STORAGE_PROVIDER) { case "s3": - const accessKeyId = process.env.AWS_ACCESS_KEY_ID ?? process.env.AWS_ACCESS_KEY; - const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY ?? process.env.AWS_SECRET_KEY; - const region = process.env.AWS_DEFAULT_REGION ?? process.env.AWS_REGION; + const accessKeyId = process.env.AWS_ACCESS_KEY_ID ?? process.env.AWS_ACCESS_KEY!; + const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY ?? process.env.AWS_SECRET_KEY!; + const region = process.env.AWS_DEFAULT_REGION ?? process.env.AWS_REGION!; imageStorage = new AmazonS3StorageProvider( new S3Client({ region, - endpoint: process.env.AWS_ENDPOINT_URL_S3, + endpoint: process.env.AWS_ENDPOINT_URL_S3!, credentials: { accessKeyId, secretAccessKey, }, }), - process.env.AWS_BUCKET, + process.env.AWS_BUCKET!, ); break; case "couchdb": @@ -48,7 +48,7 @@ const imageStorageService = { imageStorage = new CouchDbStorageProvider(nano(`${protocol}://${user}:${pass}@${host}:${port}`)); break; case "filesystem": - const filePath = process.env.IMAGE_STORAGE_PATH; + const filePath = process.env.IMAGE_STORAGE_PATH!; imageStorage = new FileSystemStorageProvider(filePath, winstonLogger); break; default: @@ -63,7 +63,7 @@ const imageStorageService = { const imageRenderService = { provide: ImageRenderService, - useFactory: (logger) => { + useFactory: (logger: LoggerService) => { const isValidInteger = (sample: any) => Number.isInteger(Number(sample)); const opts: Options = {}; @@ -109,7 +109,7 @@ const loggerService = { const allowListGuard = { provide: APP_GUARD, - useFactory: (logger) => new AllowListGuard(logger, process.env.ALLOW_LIST), + useFactory: (logger: LoggerService) => new AllowListGuard(logger, process.env.ALLOW_LIST), inject: [LoggerService], }; diff --git a/src/config.api.ts b/src/config.api.ts index 9cc8575..3705824 100644 --- a/src/config.api.ts +++ b/src/config.api.ts @@ -13,7 +13,7 @@ export interface IConfigAPI { export class ConfigApi implements IConfigAPI { @IsUrl() - public readonly url: string; + public readonly url!: string; @IsOptional() @IsBooleanString() diff --git a/src/controllers/app.controller.ts b/src/controllers/app.controller.ts index 120c1c4..ea86dc5 100644 --- a/src/controllers/app.controller.ts +++ b/src/controllers/app.controller.ts @@ -1,9 +1,10 @@ import { Controller, Get, HttpException, HttpStatus, Query, Res } from "@nestjs/common"; -import { ConfigApi, IConfigAPI } from "../config.api"; -import { ImageRenderService } from "../services/image-render.service"; -import { ImageStorageService } from "../services/image-storage.service"; -import { LoggerService } from "../services/logger.service"; +import { ConfigApi, IConfigAPI } from "../config.api.js"; +import { ImageRenderService } from "../services/image-render.service.js"; +import { ImageStorageService } from "../services/image-storage.service.js"; +import { LoggerService } from "../services/logger.service.js"; +import { FastifyReply } from "fastify"; @Controller() export class AppController { @@ -11,10 +12,11 @@ export class AppController { private readonly imageStorageService: ImageStorageService, private readonly imageRenderService: ImageRenderService, private readonly loggerService: LoggerService, - ) {} + ) { + } @Get() - public async root(@Res() response, @Query() query: ConfigApi) { + public async root(@Res() response: FastifyReply, @Query() query: ConfigApi) { const config: IConfigAPI = {}; let forceReload = false; @@ -66,24 +68,26 @@ export class AppController { config.deviceScaleFactor = Number(query.deviceScaleFactor); } + const date = new Date(); const dateString = date.toLocaleDateString().replace(/\//g, "-"); const imageId = dateString + "." + this.slugify(query.url) + this.configToString(config); + console.log(this.imageStorageService, this.loggerService); let imageBuffer: any = await this.imageStorageService.fetchImage(imageId); if (imageBuffer === null || forceReload) { try { imageBuffer = await this.imageRenderService.screenshot(query.url, config); } catch (err) { - this.loggerService.error(err.message); - return this.errorMessage(err, response); + this.loggerService.error("Error rendering image", err); + return this.errorMessage(err as Error); } try { await this.imageStorageService.storeImage(imageId, imageBuffer); } catch (err) { - this.loggerService.error(err.message); + this.loggerService.error("Error storing image", err); } } @@ -91,7 +95,7 @@ export class AppController { return; } - protected errorMessage(err: Error, response) { + protected errorMessage(err: Error) { throw new HttpException( { name: err.name, @@ -103,18 +107,12 @@ export class AppController { } private configToString(configAPI: IConfigAPI) { - let configString = ""; - - for (const key in configAPI) { - if (configAPI.hasOwnProperty(key)) { - configString += `_${key}-${configAPI[key]}`; - } - } - - return configString; + return Object.entries(configAPI) + .map(([key, value]) => `_${key}-${value}`) + .reduce((prev, next) => `${prev}${next}`, ""); } - private slugify(text) { + private slugify(text: string) { return text .toString() .toLowerCase() diff --git a/src/main.ts b/src/main.ts index 3d8146f..ebd1603 100755 --- a/src/main.ts +++ b/src/main.ts @@ -4,8 +4,8 @@ import { NestFactory } from "@nestjs/core"; import { ValidationPipe } from "@nestjs/common"; import { FastifyAdapter, NestFastifyApplication } from "@nestjs/platform-fastify"; -import { ApplicationModule } from "./app.module"; -import { winstonLogger } from "./winston-logger"; +import { ApplicationModule } from "./app.module.js"; +import { winstonLogger } from "./winston-logger.js"; if (process.env.AWS_ACCESS_KEY) { @@ -28,8 +28,8 @@ async function bootstrap() { app.useGlobalPipes(new ValidationPipe()); app.enableShutdownHooks(); - await app.register(rateLimit, { max: 100, timeWindow: "1 minute" }); - await app.register(helmet, { contentSecurityPolicy: false }); + await app.register(rateLimit as any, { max: 100, timeWindow: "1 minute" }); + await app.register(helmet as any, { contentSecurityPolicy: false }); await app.listen(3000, "0.0.0.0"); } diff --git a/src/services/image-render.service.ts b/src/services/image-render.service.ts index f7cf205..eb4f7a9 100644 --- a/src/services/image-render.service.ts +++ b/src/services/image-render.service.ts @@ -1,10 +1,10 @@ import { Injectable, OnApplicationShutdown } from "@nestjs/common"; import { Pool } from "generic-pool"; import { Browser } from "playwright"; -import * as sharp from "sharp"; +import sharp from "sharp"; -import { IConfigAPI } from "../config.api"; -import { LoggerService } from "./logger.service"; +import { IConfigAPI } from "../config.api.js"; +import { LoggerService } from "./logger.service.js"; export type WaitForOptions = { timeout: number; @@ -18,7 +18,7 @@ export class ImageRenderService implements OnApplicationShutdown { constructor( private readonly browserPool: Pool, private readonly logger: LoggerService, - private readonly navigationOptions: Partial, + navigationOptions: Partial, ) { this.NAV_OPTIONS = { waitUntil: "networkidle", @@ -59,8 +59,8 @@ export class ImageRenderService implements OnApplicationShutdown { try { const page = await browser.newPage({ viewport: { - width: config.viewPortWidth, - height: config.viewPortHeight, + width: config.viewPortWidth!, + height: config.viewPortHeight!, }, isMobile: config.isMobile, colorScheme: config.isDarkMode ? "dark" : "light", @@ -72,7 +72,7 @@ export class ImageRenderService implements OnApplicationShutdown { try { await page.goto(url, this.NAV_OPTIONS); const screenshot = await page.screenshot({ fullPage: config.isFullPage }); - image = await this.resize(screenshot, config.width, config.height); + image = await this.resize(screenshot, config.width!, config.height!); } finally { await page.close(); } @@ -82,7 +82,7 @@ export class ImageRenderService implements OnApplicationShutdown { } } - private async resize(image, width: number, height: number): Promise { + private async resize(image: Buffer, width: number, height: number): Promise { return await sharp(image).resize(width, height).toBuffer(); } } diff --git a/src/services/logger.service.ts b/src/services/logger.service.ts index d86333f..d0c8555 100644 --- a/src/services/logger.service.ts +++ b/src/services/logger.service.ts @@ -27,7 +27,7 @@ export class LoggerService implements ILoggerService { return this.logger.warn(message); } - public error(message: string, trace?: string) { + public error(message: string, trace?: any) { return this.logger.error(message, trace); } } diff --git a/src/storage/amazon-s3-storage.provider.ts b/src/storage/amazon-s3-storage.provider.ts index 01e1bec..8da208d 100644 --- a/src/storage/amazon-s3-storage.provider.ts +++ b/src/storage/amazon-s3-storage.provider.ts @@ -1,5 +1,5 @@ import { S3Client, GetObjectCommand, PutObjectCommand } from "@aws-sdk/client-s3"; -import { IImageStorage } from "../services/image-storage.service"; +import { IImageStorage } from "../services/image-storage.service.js"; export class AmazonS3StorageProvider implements IImageStorage { constructor(private readonly s3: S3Client, private readonly BUCKET_NAME: string) {} diff --git a/src/storage/couch-db-storage.provider.ts b/src/storage/couch-db-storage.provider.ts index 2ad5c68..4eefaac 100644 --- a/src/storage/couch-db-storage.provider.ts +++ b/src/storage/couch-db-storage.provider.ts @@ -1,8 +1,8 @@ import { Injectable } from "@nestjs/common"; -import * as md5 from "md5"; -import * as couchDBNano from "nano"; +import md5 from "md5"; +import couchDBNano from "nano"; -import { IImageStorage } from "../services/image-storage.service"; +import { IImageStorage } from "../services/image-storage.service.js"; @Injectable() export class CouchDbStorageProvider implements IImageStorage { @@ -21,7 +21,7 @@ export class CouchDbStorageProvider implements IImageStorage { } } - public async storeImage(imageId: string, image): Promise { + public async storeImage(imageId: string, image: Buffer): Promise { const images = this.images; imageId = md5(imageId); try { diff --git a/src/storage/file-system-storage.provider.ts b/src/storage/file-system-storage.provider.ts index 5a35faf..441ca00 100644 --- a/src/storage/file-system-storage.provider.ts +++ b/src/storage/file-system-storage.provider.ts @@ -1,8 +1,8 @@ import * as fs from "fs/promises"; import * as path from "path"; -import { IImageStorage } from "../services/image-storage.service"; -import { LoggerService } from "../services/logger.service"; +import { IImageStorage } from "../services/image-storage.service.js"; +import { LoggerService } from "../services/logger.service.js"; export class FileSystemStorageProvider implements IImageStorage { constructor(private readonly storagePath: string, private readonly logger: LoggerService) { @@ -25,7 +25,8 @@ export class FileSystemStorageProvider implements IImageStorage { await fs.writeFile(imagePath, image); return true; } catch (error) { - this.logger.error(`Error storing image ${imagePath}:`, error); + this.logger.error(`Error storing image ${imagePath}:`); + this.logger.error(String(error)); return false; } } diff --git a/src/storage/stub-storage.provider.ts b/src/storage/stub-storage.provider.ts index fb3f5c6..5038d47 100644 --- a/src/storage/stub-storage.provider.ts +++ b/src/storage/stub-storage.provider.ts @@ -1,16 +1,16 @@ -import { IImageStorage } from "../services/image-storage.service"; -import { LoggerService } from "../services/logger.service"; +import { IImageStorage } from "../services/image-storage.service.js"; +import { LoggerService } from "../services/logger.service.js"; export class StubStorageProvider implements IImageStorage { constructor(private readonly logger: LoggerService) {} public fetchImage(imageId: string): Promise { this.logger.verbose(`Stub fetch image: ${imageId}`); - return null; + return Promise.resolve(null); } - public storeImage(imageId: string, image: Buffer): Promise { + public storeImage(imageId: string, _image: Buffer): Promise { this.logger.verbose(`Stub store image: ${imageId}`); - return null; + return Promise.resolve(null); } } diff --git a/src/winston-logger.ts b/src/winston-logger.ts index d5a25d6..6f40c5c 100644 --- a/src/winston-logger.ts +++ b/src/winston-logger.ts @@ -1,7 +1,7 @@ import * as winston from "winston"; import * as Transport from "winston-transport"; -import { LoggerService } from "./services/logger.service"; +import { LoggerService } from "./services/logger.service.js"; const transports: Transport[] = [new winston.transports.Console({ format: winston.format.simple() })]; @@ -15,7 +15,7 @@ if (isNotDocker) { } const logger = winston.createLogger({ - level: ["error", "warn", "help", "data", "info", "debug"].includes(process.env.DEBUG) ? process.env.DEBUG : "info", + level: ["error", "warn", "help", "data", "info", "debug"].includes(process.env.DEBUG ?? "") ? process.env.DEBUG : "info", format: winston.format.json(), transports, }); diff --git a/tsconfig.json b/tsconfig.json index 75e8aaf..cab0b33 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,32 +1,34 @@ { "compilerOptions": { - "module": "commonjs", - "declaration": false, - "noImplicitAny": false, - "removeComments": true, - "noLib": false, - "emitDecoratorMetadata": true, + "outDir": "dist", + + "target": "ESNext", + "module": "NodeNext", + "moduleResolution": "NodeNext", + + /* Advanced Options */ "experimentalDecorators": true, - "target": "es6", + "emitDecoratorMetadata": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + + /* Output Options */ + "removeComments": true, "sourceMap": true, - "allowJs": true, - "outDir": "./dist", - "typeRoots": [ - "node_modules/@types" - ], - "types": [ - "node" - ], - "lib": [ - "es2017", - "dom" - ] + "types": [], + + /* STRICT */ + "strict": true, + "strictPropertyInitialization": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "strictBindCallApply": true, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "forceConsistentCasingInFileNames": true }, - "include": [ - "src/**/*" - ], - "exclude": [ - "node_modules", - "**/*.spec.ts" - ] + "include": ["src/**/*.ts"] } From 8afc00247c1d7e6c7b37356a5f6282b486e596fa Mon Sep 17 00:00:00 2001 From: Jason Raimondi Date: Tue, 19 Mar 2024 22:31:25 -0400 Subject: [PATCH 2/8] refactor: rewrite to honojs --- .env.sample | 2 + .github/workflows/publish.yml | 3 + .mise.toml | 3 + .prettierrc | 14 +- .tool-versions | 1 - Dockerfile | 2 +- LICENSE | 2 +- Makefile | 7 - README.md | 44 +- docker-compose.yml | 2 +- index.html | 24 +- nodemon.json | 6 - package.json | 55 +- pnpm-lock.yaml | 4322 ++++++++++------- src/allow_list.guard.ts | 48 - src/app.module.ts | 121 - src/app.ts | 65 + src/browser-pool.ts | 25 - src/config.api.ts | 53 - src/controllers/app.controller.ts | 125 - src/lib/browser_pool.ts | 71 + src/lib/factory.ts | 90 + .../image_render.ts} | 46 +- src/lib/logger.ts | 9 + src/lib/schema.ts | 25 + src/lib/storage/_base.ts | 4 + .../storage/couch-db.ts} | 6 +- src/lib/storage/filesystem.ts | 47 + .../storage/s3.ts} | 22 +- src/lib/storage/stub.ts | 14 + src/lib/utils.ts | 26 + src/main.ts | 74 +- src/middlewares/allow_list.ts | 19 + src/middlewares/extract_query_params.ts | 64 + src/routes/index.ts | 45 + src/services/image-storage.service.ts | 16 - src/services/logger.service.ts | 33 - src/storage/file-system-storage.provider.ts | 48 - src/storage/stub-storage.provider.ts | 16 - src/winston-logger.ts | 27 - tests/app.spec.ts | 92 + tests/helpers/assets/test_img.png | Bin 0 -> 590099 bytes tests/helpers/stubs.ts | 28 + tsconfig.build.json | 4 + tsconfig.json | 2 +- 45 files changed, 3250 insertions(+), 2502 deletions(-) create mode 100644 .mise.toml delete mode 100644 .tool-versions delete mode 100644 Makefile delete mode 100644 nodemon.json delete mode 100644 src/allow_list.guard.ts delete mode 100644 src/app.module.ts create mode 100644 src/app.ts delete mode 100644 src/browser-pool.ts delete mode 100644 src/config.api.ts delete mode 100644 src/controllers/app.controller.ts create mode 100644 src/lib/browser_pool.ts create mode 100644 src/lib/factory.ts rename src/{services/image-render.service.ts => lib/image_render.ts} (56%) create mode 100644 src/lib/logger.ts create mode 100644 src/lib/schema.ts create mode 100644 src/lib/storage/_base.ts rename src/{storage/couch-db-storage.provider.ts => lib/storage/couch-db.ts} (79%) create mode 100644 src/lib/storage/filesystem.ts rename src/{storage/amazon-s3-storage.provider.ts => lib/storage/s3.ts} (57%) create mode 100644 src/lib/storage/stub.ts create mode 100644 src/lib/utils.ts create mode 100644 src/middlewares/allow_list.ts create mode 100644 src/middlewares/extract_query_params.ts create mode 100644 src/routes/index.ts delete mode 100644 src/services/image-storage.service.ts delete mode 100644 src/services/logger.service.ts delete mode 100644 src/storage/file-system-storage.provider.ts delete mode 100644 src/storage/stub-storage.provider.ts delete mode 100644 src/winston-logger.ts create mode 100644 tests/app.spec.ts create mode 100644 tests/helpers/assets/test_img.png create mode 100644 tests/helpers/stubs.ts create mode 100644 tsconfig.build.json diff --git a/.env.sample b/.env.sample index 7ce9e2a..1051b18 100644 --- a/.env.sample +++ b/.env.sample @@ -1,3 +1,5 @@ +NODE_ENV=development + ALLOW_LIST=jasonraimondi.com,github.com STORAGE_PROVIDER= diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 19ce1c5..2e53188 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - next tags: - '*' @@ -31,6 +32,8 @@ jobs: run: | if [[ $GITHUB_REF == refs/heads/main ]]; then echo "version=latest" >> $GITHUB_OUTPUT + elif [[ $GITHUB_REF == refs/heads/next ]]; then + echo "version=nightly" >> $GITHUB_OUTPUT else echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT fi diff --git a/.mise.toml b/.mise.toml new file mode 100644 index 0000000..9fffd03 --- /dev/null +++ b/.mise.toml @@ -0,0 +1,3 @@ +[tools] +node = "20" +pnpm = "8" diff --git a/.prettierrc b/.prettierrc index 6c59f15..03903dc 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,7 +1,7 @@ -{ - "printWidth": 120, - "semi": true, - "singleQuote": false, - "tabWidth": 2, - "trailingComma": "all" -} \ No newline at end of file +arrowParens: avoid +bracketSpacing: true +printWidth: 100 +trailingComma: all +tabWidth: 2 +semi: true +singleQuote: false diff --git a/.tool-versions b/.tool-versions deleted file mode 100644 index 483a61c..0000000 --- a/.tool-versions +++ /dev/null @@ -1 +0,0 @@ -nodejs 20.3.0 diff --git a/Dockerfile b/Dockerfile index 8e534a9..5b0aecc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ USER pwuser WORKDIR /app COPY package.json pnpm-lock.yaml /app RUN pnpm install --production false -COPY tsconfig.json /app/ +COPY tsconfig.json tsconfig.build.json /app/ COPY src /app/src RUN pnpm build diff --git a/LICENSE b/LICENSE index eb67584..56bd727 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2021 Jason Raimondi +Copyright 2024 Jason Raimondi Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/Makefile b/Makefile deleted file mode 100644 index 8384fc1..0000000 --- a/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -export REPO=jasonraimondi/url-to-png:0.11.0 - -build: - docker build -t ${REPO} . - -push: - docker push ${REPO} diff --git a/README.md b/README.md index 59b0502..b9b8c85 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ A URL to PNG generator over HTTP with a fairly simple API accessed via query par Run the following command: ``` -docker run --rm -p 3000:3000 ghcr.io/jasonraimondi/url-to-png +docker run --rm -p 3089:3089 ghcr.io/jasonraimondi/url-to-png ``` On the hub: [Link to DockerHub](https://hub.docker.com/r/jasonraimondi/url-to-png/) @@ -25,6 +25,8 @@ Serve the project git clone git@github.com:jasonraimondi/url-to-png.git cd url-to-png pnpm install +# you may need to run this command if you are having issues with playwright +pnpm exec playwright install pnpm dev ``` @@ -41,21 +43,21 @@ pnpm dev - `isDarkMode: boolean` - Prefer color scheme dark - **Optional** - Default: `false` - `deviceScaleFactor: number` - Specify device scale factor (can be thought of as dpr) - **Optional** - Default: `1` -Try it out at `localhost:3000?url=https://www.jasonraimondi.com&isDarkMode=true` and you should get back an image capture of my website homepage. +Try it out at `localhost:3089?url=https://www.jasonraimondi.com&isDarkMode=true` and you should get back an image capture of my website homepage. All sorts of combos work: ``` -http://localhost:3000?url=https://jasonraimondi.com -http://localhost:3000?url=https://jasonraimondi.com&forceReload=true -http://localhost:3000?url=https://jasonraimondi.com&isFullPage=true -http://localhost:3000?url=https://jasonraimondi.com&isMobile=true -http://localhost:3000?url=https://jasonraimondi.com&isDarkMode=true -http://localhost:3000?url=https://jasonraimondi.com&width=400&height=400 -http://localhost:3000?url=https://jasonraimondi.com&viewPortHeight=400&viewPortWidth=400 -http://localhost:3000?url=https://jasonraimondi.com&viewPortHeight=400&viewPortWidth=400 -http://localhost:3000?url=https://jasonraimondi.com&isFullPage=true&isMobile=true&width=400&height=400&viewPortHeight=400&viewPortWidth=400 -http://localhost:3000?url=https://jasonraimondi.com&isMobile=true&isFullPage=true&viewPortWidth=375&width=375&deviceScaleFactor=1 +http://localhost:3089?url=https://jasonraimondi.com +http://localhost:3089?url=https://jasonraimondi.com&forceReload=true +http://localhost:3089?url=https://jasonraimondi.com&isFullPage=true +http://localhost:3089?url=https://jasonraimondi.com&isMobile=true +http://localhost:3089?url=https://jasonraimondi.com&isDarkMode=true +http://localhost:3089?url=https://jasonraimondi.com&width=400&height=400 +http://localhost:3089?url=https://jasonraimondi.com&viewPortHeight=400&viewPortWidth=400 +http://localhost:3089?url=https://jasonraimondi.com&viewPortHeight=400&viewPortWidth=400 +http://localhost:3089?url=https://jasonraimondi.com&isFullPage=true&isMobile=true&width=400&height=400&viewPortHeight=400&viewPortWidth=400 +http://localhost:3089?url=https://jasonraimondi.com&isMobile=true&isFullPage=true&viewPortWidth=375&width=375&deviceScaleFactor=1 ``` ## System Requirements @@ -147,6 +149,24 @@ STORAGE_PROVIDER=filesystem IMAGE_STORAGE_PATH=/tmp/foo ``` +## Metrics + +You can enable metrics by setting `METRICS=true` in your `.env` file. This will expose a `/metrics` endpoint for Prometheus to scrape. + +```json +{ + "poolMetrics": { + "spareResourceCapacity": 8, + "size": 2, + "available": 2, + "borrowed": 0, + "pending": 0, + "max": 10, + "min": 2 + } +} +``` + ## Sources - Upstream Repository: [https://git.jasonraimondi.com/jason/url-to-png](https://git.jasonraimondi.com/jason/url-to-png) diff --git a/docker-compose.yml b/docker-compose.yml index 66a5c23..8b60733 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: image: jasonraimondi/url-to-png build: . ports: - - 3000:3000 + - 3089:3089 environment: NODE_ENV: debug BROWSER_WAIT_UNTIL: networkidle diff --git a/index.html b/index.html index e3fb485..3bd9a27 100644 --- a/index.html +++ b/index.html @@ -1,14 +1,10 @@ - - - - - - - - - - - - - - + + + + + + + + + + diff --git a/nodemon.json b/nodemon.json deleted file mode 100644 index ac87ca5..0000000 --- a/nodemon.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "watch": ["src"], - "ext": "ts", - "ignore": ["src/**/*.spec.ts"], - "exec": "cross-env NODE_ENV=debug ts-node -r dotenv/config src/main.ts" -} diff --git a/package.json b/package.json index 0c8309b..8e0eb65 100644 --- a/package.json +++ b/package.json @@ -7,49 +7,44 @@ "scripts": { "clean": "rm -rf dist/*", "serve": "node -r dotenv/config dist/main.js", - "dev": "nodemon", - "compile": "tsc", + "dev": "tsx --watch src/main.ts | pino-pretty", + "compile": "tsc --project tsconfig.build.json", "build": "run-s clean compile", - "format": "prettier --write \"./src/**/*.ts\"" + "format": "prettier --write \"./src/**/*.ts\"", + "test": "vitest run", + "test:watch": "vitest", + "test:coverage": "vitest run --coverage" }, "engines": { "node": ">= 20", "pnpm": ">= 8.4.0" }, "engineStrict": true, - "browserslist": [ - "> 1%", - "last 2 versions", - "not ie <= 8" - ], "dependencies": { - "@aws-sdk/client-s3": "^3.353.0", - "@fastify/helmet": "^10.1.1", - "@fastify/rate-limit": "^8.0.1", - "@nestjs/common": "^10.0.0", - "@nestjs/core": "^10.0.0", - "@nestjs/platform-fastify": "^10.0.0", - "class-transformer": "^0.5.1", - "class-validator": "^0.14.0", - "dotenv": "^16.1.4", - "fastify": "^4.18.0", + "@aws-sdk/client-s3": "^3.536.0", + "@hono/node-server": "^1.8.2", + "@jmondi/string-encrypt-decrypt": "^0.0.6", + "dotenv": "^16.4.5", "generic-pool": "^3.9.0", + "hono": "^4.1.2", "md5": "^2.3.0", - "nano": "^10.1.2", - "playwright": "^1.35.1", - "reflect-metadata": "^0.1.13", - "rxjs": "^7.8.1", - "sharp": "^0.32.6", - "winston": "^3.9.0", - "winston-transport": "^4.5.0" + "nano": "^10.1.3", + "pino": "^8.19.0", + "playwright": "^1.42.1", + "sharp": "^0.33.2", + "zod": "^3.22.4", + "zod-ff": "^1.4.0" }, "devDependencies": { - "@types/node": "^20.3.1", + "@types/md5": "^2.3.5", + "@types/node": "^20.11.29", + "@vitest/coverage-v8": "^1.4.0", "cross-env": "^7.0.3", - "nodemon": "^2.0.22", "npm-run-all": "^4.1.5", - "prettier": "^2.8.8", - "ts-node": "^10.9.1", - "typescript": "^5.1.3" + "pino-pretty": "^10.3.1", + "prettier": "^3.2.5", + "tsx": "^4.7.1", + "typescript": "^5.4.2", + "vitest": "^1.4.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc39b0e..c4b865f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,93 +6,92 @@ settings: dependencies: '@aws-sdk/client-s3': - specifier: ^3.353.0 - version: 3.353.0 - '@fastify/helmet': - specifier: ^10.1.1 - version: 10.1.1 - '@fastify/rate-limit': - specifier: ^8.0.1 - version: 8.0.1 - '@nestjs/common': - specifier: ^10.0.0 - version: 10.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': - specifier: ^10.0.0 - version: 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/platform-fastify': - specifier: ^10.0.0 - version: 10.0.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0) - class-transformer: - specifier: ^0.5.1 - version: 0.5.1 - class-validator: - specifier: ^0.14.0 - version: 0.14.0 + specifier: ^3.536.0 + version: 3.536.0 + '@hono/node-server': + specifier: ^1.8.2 + version: 1.8.2 + '@jmondi/string-encrypt-decrypt': + specifier: ^0.0.6 + version: 0.0.6 dotenv: - specifier: ^16.1.4 - version: 16.1.4 - fastify: - specifier: ^4.18.0 - version: 4.18.0 + specifier: ^16.4.5 + version: 16.4.5 generic-pool: specifier: ^3.9.0 version: 3.9.0 + hono: + specifier: ^4.1.2 + version: 4.1.2 md5: specifier: ^2.3.0 version: 2.3.0 nano: - specifier: ^10.1.2 - version: 10.1.2 + specifier: ^10.1.3 + version: 10.1.3 + pino: + specifier: ^8.19.0 + version: 8.19.0 playwright: - specifier: ^1.35.1 - version: 1.35.1 - reflect-metadata: - specifier: ^0.1.13 - version: 0.1.13 - rxjs: - specifier: ^7.8.1 - version: 7.8.1 + specifier: ^1.42.1 + version: 1.42.1 sharp: - specifier: ^0.32.6 - version: 0.32.6 - winston: - specifier: ^3.9.0 - version: 3.9.0 - winston-transport: - specifier: ^4.5.0 - version: 4.5.0 + specifier: ^0.33.2 + version: 0.33.2 + zod: + specifier: ^3.22.4 + version: 3.22.4 + zod-ff: + specifier: ^1.4.0 + version: 1.4.0(zod@3.22.4) devDependencies: + '@types/md5': + specifier: ^2.3.5 + version: 2.3.5 '@types/node': - specifier: ^20.3.1 - version: 20.3.1 + specifier: ^20.11.29 + version: 20.11.29 + '@vitest/coverage-v8': + specifier: ^1.4.0 + version: 1.4.0(vitest@1.4.0) cross-env: specifier: ^7.0.3 version: 7.0.3 - nodemon: - specifier: ^2.0.22 - version: 2.0.22 npm-run-all: specifier: ^4.1.5 version: 4.1.5 + pino-pretty: + specifier: ^10.3.1 + version: 10.3.1 prettier: - specifier: ^2.8.8 - version: 2.8.8 - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.3.1)(typescript@5.1.3) + specifier: ^3.2.5 + version: 3.2.5 + tsx: + specifier: ^4.7.1 + version: 4.7.1 typescript: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.4.2 + version: 5.4.2 + vitest: + specifier: ^1.4.0 + version: 1.4.0(@types/node@20.11.29) packages: + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + /@aws-crypto/crc32@3.0.0: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.347.0 + '@aws-sdk/types': 3.535.0 tslib: 1.14.1 dev: false @@ -100,7 +99,7 @@ packages: resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.347.0 + '@aws-sdk/types': 3.535.0 tslib: 1.14.1 dev: false @@ -116,8 +115,8 @@ packages: '@aws-crypto/ie11-detection': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-locate-window': 3.310.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-locate-window': 3.535.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false @@ -129,8 +128,8 @@ packages: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-locate-window': 3.310.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-locate-window': 3.535.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false @@ -139,7 +138,7 @@ packages: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.347.0 + '@aws-sdk/types': 3.535.0 tslib: 1.14.1 dev: false @@ -152,1133 +151,1712 @@ packages: /@aws-crypto/util@3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@aws-sdk/types': 3.347.0 + '@aws-sdk/types': 3.535.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false - /@aws-sdk/abort-controller@3.347.0: - resolution: {integrity: sha512-P/2qE6ntYEmYG4Ez535nJWZbXqgbkJx8CMz7ChEuEg3Gp3dvVYEKg+iEUEvlqQ2U5dWP5J3ehw5po9t86IsVPQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - dev: false - - /@aws-sdk/chunked-blob-reader@3.310.0: - resolution: {integrity: sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg==} - dependencies: - tslib: 2.5.3 - dev: false - - /@aws-sdk/client-s3@3.353.0: - resolution: {integrity: sha512-6ea9hL4Ma+3MVvGNHl8Xfuwojzuvn4P5/CmLqbncdrkC0j/qk+0kYEO/PXaT/V2tOeCUr7fSZg7h8Qq0K/QhIw==} + /@aws-sdk/client-s3@3.536.0: + resolution: {integrity: sha512-UM5txJxq8qKzLDVuW9c904bpb7+u1jOeyJITLz79WpyHSOP6ERHoTx/ltEuGJ4zQVazfkgthqR0lIn09sXEEuw==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.353.0 - '@aws-sdk/config-resolver': 3.353.0 - '@aws-sdk/credential-provider-node': 3.353.0 - '@aws-sdk/eventstream-serde-browser': 3.347.0 - '@aws-sdk/eventstream-serde-config-resolver': 3.347.0 - '@aws-sdk/eventstream-serde-node': 3.347.0 - '@aws-sdk/fetch-http-handler': 3.353.0 - '@aws-sdk/hash-blob-browser': 3.353.0 - '@aws-sdk/hash-node': 3.347.0 - '@aws-sdk/hash-stream-node': 3.347.0 - '@aws-sdk/invalid-dependency': 3.347.0 - '@aws-sdk/md5-js': 3.347.0 - '@aws-sdk/middleware-bucket-endpoint': 3.353.0 - '@aws-sdk/middleware-content-length': 3.347.0 - '@aws-sdk/middleware-endpoint': 3.347.0 - '@aws-sdk/middleware-expect-continue': 3.347.0 - '@aws-sdk/middleware-flexible-checksums': 3.347.0 - '@aws-sdk/middleware-host-header': 3.347.0 - '@aws-sdk/middleware-location-constraint': 3.347.0 - '@aws-sdk/middleware-logger': 3.347.0 - '@aws-sdk/middleware-recursion-detection': 3.347.0 - '@aws-sdk/middleware-retry': 3.353.0 - '@aws-sdk/middleware-sdk-s3': 3.347.0 - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/middleware-signing': 3.353.0 - '@aws-sdk/middleware-ssec': 3.347.0 - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/middleware-user-agent': 3.352.0 - '@aws-sdk/node-config-provider': 3.353.0 - '@aws-sdk/node-http-handler': 3.350.0 - '@aws-sdk/signature-v4-multi-region': 3.347.0 - '@aws-sdk/smithy-client': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - '@aws-sdk/util-body-length-browser': 3.310.0 - '@aws-sdk/util-body-length-node': 3.310.0 - '@aws-sdk/util-defaults-mode-browser': 3.353.0 - '@aws-sdk/util-defaults-mode-node': 3.353.0 - '@aws-sdk/util-endpoints': 3.352.0 - '@aws-sdk/util-retry': 3.347.0 - '@aws-sdk/util-stream-browser': 3.353.0 - '@aws-sdk/util-stream-node': 3.350.0 - '@aws-sdk/util-user-agent-browser': 3.347.0 - '@aws-sdk/util-user-agent-node': 3.353.0 - '@aws-sdk/util-utf8': 3.310.0 - '@aws-sdk/util-waiter': 3.347.0 - '@aws-sdk/xml-builder': 3.310.0 - '@smithy/protocol-http': 1.0.1 - '@smithy/types': 1.0.0 - fast-xml-parser: 4.2.4 - tslib: 2.5.3 + '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/core': 3.535.0 + '@aws-sdk/credential-provider-node': 3.535.0 + '@aws-sdk/middleware-bucket-endpoint': 3.535.0 + '@aws-sdk/middleware-expect-continue': 3.535.0 + '@aws-sdk/middleware-flexible-checksums': 3.535.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-location-constraint': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-sdk-s3': 3.535.0 + '@aws-sdk/middleware-signing': 3.535.0 + '@aws-sdk/middleware-ssec': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.535.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/signature-v4-multi-region': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.535.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@aws-sdk/xml-builder': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/eventstream-serde-browser': 2.2.0 + '@smithy/eventstream-serde-config-resolver': 2.2.0 + '@smithy/eventstream-serde-node': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-blob-browser': 2.2.0 + '@smithy/hash-node': 2.2.0 + '@smithy/hash-stream-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/md5-js': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-stream': 2.2.0 + '@smithy/util-utf8': 2.3.0 + '@smithy/util-waiter': 2.2.0 + tslib: 2.6.2 transitivePeerDependencies: - - '@aws-sdk/signature-v4-crt' - aws-crt dev: false - /@aws-sdk/client-sso-oidc@3.353.0: - resolution: {integrity: sha512-V9g3oIjj3yEadHosyN+rmxtNXSMqqaHguBD1MuWwsW3AQRlkmInPzg052cKzl6Xm7FrpnZaKnadQPWSl/ZVa7w==} + /@aws-sdk/client-sso-oidc@3.535.0(@aws-sdk/credential-provider-node@3.535.0): + resolution: {integrity: sha512-M2cG4EQXDpAJQyq33ORIr6abmdX9p9zX0ssVy8XwFNB7lrgoIKxuVoGL+fX+XMgecl24x7ELz6b4QlILOevbCw==} engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.535.0 dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.353.0 - '@aws-sdk/fetch-http-handler': 3.353.0 - '@aws-sdk/hash-node': 3.347.0 - '@aws-sdk/invalid-dependency': 3.347.0 - '@aws-sdk/middleware-content-length': 3.347.0 - '@aws-sdk/middleware-endpoint': 3.347.0 - '@aws-sdk/middleware-host-header': 3.347.0 - '@aws-sdk/middleware-logger': 3.347.0 - '@aws-sdk/middleware-recursion-detection': 3.347.0 - '@aws-sdk/middleware-retry': 3.353.0 - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/middleware-user-agent': 3.352.0 - '@aws-sdk/node-config-provider': 3.353.0 - '@aws-sdk/node-http-handler': 3.350.0 - '@aws-sdk/smithy-client': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - '@aws-sdk/util-body-length-browser': 3.310.0 - '@aws-sdk/util-body-length-node': 3.310.0 - '@aws-sdk/util-defaults-mode-browser': 3.353.0 - '@aws-sdk/util-defaults-mode-node': 3.353.0 - '@aws-sdk/util-endpoints': 3.352.0 - '@aws-sdk/util-retry': 3.347.0 - '@aws-sdk/util-user-agent-browser': 3.347.0 - '@aws-sdk/util-user-agent-node': 3.353.0 - '@aws-sdk/util-utf8': 3.310.0 - '@smithy/protocol-http': 1.0.1 - '@smithy/types': 1.0.0 - tslib: 2.5.3 + '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/core': 3.535.0 + '@aws-sdk/credential-provider-node': 3.535.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.535.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.535.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sso@3.353.0: - resolution: {integrity: sha512-/dP5jLvZYskk6eVxI/5uaC1AVEbE7B2yuQ+9O3Z9plPIlZXyZxzXHf06s4gwsS4hAc7TDs3DaB+AnfMVLOPHbQ==} + /@aws-sdk/client-sso@3.535.0: + resolution: {integrity: sha512-h9eQRdFnjDRVBnPJIKXuX7D+isSAioIfZPC4PQwsL5BscTRlk4c90DX0R0uk64YUtp7LZu8TNtrosFZ/1HtTrQ==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.353.0 - '@aws-sdk/fetch-http-handler': 3.353.0 - '@aws-sdk/hash-node': 3.347.0 - '@aws-sdk/invalid-dependency': 3.347.0 - '@aws-sdk/middleware-content-length': 3.347.0 - '@aws-sdk/middleware-endpoint': 3.347.0 - '@aws-sdk/middleware-host-header': 3.347.0 - '@aws-sdk/middleware-logger': 3.347.0 - '@aws-sdk/middleware-recursion-detection': 3.347.0 - '@aws-sdk/middleware-retry': 3.353.0 - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/middleware-user-agent': 3.352.0 - '@aws-sdk/node-config-provider': 3.353.0 - '@aws-sdk/node-http-handler': 3.350.0 - '@aws-sdk/smithy-client': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - '@aws-sdk/util-body-length-browser': 3.310.0 - '@aws-sdk/util-body-length-node': 3.310.0 - '@aws-sdk/util-defaults-mode-browser': 3.353.0 - '@aws-sdk/util-defaults-mode-node': 3.353.0 - '@aws-sdk/util-endpoints': 3.352.0 - '@aws-sdk/util-retry': 3.347.0 - '@aws-sdk/util-user-agent-browser': 3.347.0 - '@aws-sdk/util-user-agent-node': 3.353.0 - '@aws-sdk/util-utf8': 3.310.0 - '@smithy/protocol-http': 1.0.1 - '@smithy/types': 1.0.0 - tslib: 2.5.3 + '@aws-sdk/core': 3.535.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.535.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.535.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sts@3.353.0: - resolution: {integrity: sha512-jOnh242TtxG6st60AxLSav0MTgYlJn4c8ZDxk4Wk4+n5bypnXRrqgVXob99lyVnCRfP3OsDl1eilcVp94EXzVw==} + /@aws-sdk/client-sts@3.535.0(@aws-sdk/credential-provider-node@3.535.0): + resolution: {integrity: sha512-ii9OOm3TJwP3JmO1IVJXKWIShVKPl0VtdlgROc/SkDglO/kuAw9eDdlROgc+qbFl+gm6bBTguOVTUXt3tS3flw==} engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.535.0 dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.353.0 - '@aws-sdk/credential-provider-node': 3.353.0 - '@aws-sdk/fetch-http-handler': 3.353.0 - '@aws-sdk/hash-node': 3.347.0 - '@aws-sdk/invalid-dependency': 3.347.0 - '@aws-sdk/middleware-content-length': 3.347.0 - '@aws-sdk/middleware-endpoint': 3.347.0 - '@aws-sdk/middleware-host-header': 3.347.0 - '@aws-sdk/middleware-logger': 3.347.0 - '@aws-sdk/middleware-recursion-detection': 3.347.0 - '@aws-sdk/middleware-retry': 3.353.0 - '@aws-sdk/middleware-sdk-sts': 3.353.0 - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/middleware-signing': 3.353.0 - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/middleware-user-agent': 3.352.0 - '@aws-sdk/node-config-provider': 3.353.0 - '@aws-sdk/node-http-handler': 3.350.0 - '@aws-sdk/smithy-client': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - '@aws-sdk/util-body-length-browser': 3.310.0 - '@aws-sdk/util-body-length-node': 3.310.0 - '@aws-sdk/util-defaults-mode-browser': 3.353.0 - '@aws-sdk/util-defaults-mode-node': 3.353.0 - '@aws-sdk/util-endpoints': 3.352.0 - '@aws-sdk/util-retry': 3.347.0 - '@aws-sdk/util-user-agent-browser': 3.347.0 - '@aws-sdk/util-user-agent-node': 3.353.0 - '@aws-sdk/util-utf8': 3.310.0 - '@smithy/protocol-http': 1.0.1 - '@smithy/types': 1.0.0 - fast-xml-parser: 4.2.4 - tslib: 2.5.3 + '@aws-sdk/core': 3.535.0 + '@aws-sdk/credential-provider-node': 3.535.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.535.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.535.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/config-resolver@3.353.0: - resolution: {integrity: sha512-rJJ1ebb8E4vfdGWym6jql1vodV+NUEATI1QqlwxQ0AZ8MGPIsT3uR52VyX7gp+yIrLZBJZdGYVNwrWSJgZ3B3w==} + /@aws-sdk/core@3.535.0: + resolution: {integrity: sha512-+Yusa9HziuaEDta1UaLEtMAtmgvxdxhPn7jgfRY6PplqAqgsfa5FR83sxy5qr2q7xjQTwHtV4MjQVuOjG9JsLw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-config-provider': 3.310.0 - '@aws-sdk/util-middleware': 3.347.0 - tslib: 2.5.3 + '@smithy/core': 1.4.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 2.2.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-env@3.353.0: - resolution: {integrity: sha512-Y4VsNS8O1FAD5J7S5itOhnOghQ5LIXlZ44t35nF8cbcF+JPvY3ToKzYpjYN1jM7DXKqU4shtqgYpzSqxlvEgKQ==} + /@aws-sdk/credential-provider-env@3.535.0: + resolution: {integrity: sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-imds@3.353.0: - resolution: {integrity: sha512-n70yvXBN7E6NX7vA/wLTqyVayu/QKYsPvVn8Y+0A/j5oXXlVY+hQvjjEaNo0Zq1U8Z0L/kj3mutDpe57nTLKSg==} + /@aws-sdk/credential-provider-http@3.535.0: + resolution: {integrity: sha512-kdj1wCmOMZ29jSlUskRqN04S6fJ4dvt0Nq9Z32SA6wO7UG8ht6Ot9h/au/eTWJM3E1somZ7D771oK7dQt9b8yw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/node-config-provider': 3.353.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-ini@3.353.0: - resolution: {integrity: sha512-qiA9dUAWmH3DLkVDNnR1VW7GTfGa5EazXSeIqXPM3qyf9Dqr4RPRyle8/BJXnAQXR01VEA+ZOmvp1fjs7uKiqw==} + /@aws-sdk/credential-provider-ini@3.535.0(@aws-sdk/credential-provider-node@3.535.0): + resolution: {integrity: sha512-bm3XOYlyCjtAb8eeHXLrxqRxYVRw2Iqv9IufdJb4gM13TbNSYniUT1WKaHxGIZ5p+FuNlXVhvk1OpHFM13+gXA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.353.0 - '@aws-sdk/credential-provider-imds': 3.353.0 - '@aws-sdk/credential-provider-process': 3.353.0 - '@aws-sdk/credential-provider-sso': 3.353.0 - '@aws-sdk/credential-provider-web-identity': 3.353.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/credential-provider-env': 3.535.0 + '@aws-sdk/credential-provider-process': 3.535.0 + '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/types': 3.535.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' - aws-crt dev: false - /@aws-sdk/credential-provider-node@3.353.0: - resolution: {integrity: sha512-OIyZ7OG1OQJ1aQGAu78hggSkK4jiWO1/Sm6wj5wvwylbST8NnR+dHjikZGFB3hoYt1uEe2O2LeGW67bI54VIEQ==} + /@aws-sdk/credential-provider-node@3.535.0: + resolution: {integrity: sha512-6JXp/EuL6euUkH5k4d+lQFF6gBwukrcCOWfNHCmq14mNJf/cqT3HAX1VMtWFRSK20am0IxfYQGccb0/nZykdKg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.353.0 - '@aws-sdk/credential-provider-imds': 3.353.0 - '@aws-sdk/credential-provider-ini': 3.353.0 - '@aws-sdk/credential-provider-process': 3.353.0 - '@aws-sdk/credential-provider-sso': 3.353.0 - '@aws-sdk/credential-provider-web-identity': 3.353.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/credential-provider-env': 3.535.0 + '@aws-sdk/credential-provider-http': 3.535.0 + '@aws-sdk/credential-provider-ini': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/credential-provider-process': 3.535.0 + '@aws-sdk/credential-provider-sso': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/credential-provider-web-identity': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/types': 3.535.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-process@3.353.0: - resolution: {integrity: sha512-IBkuxj3pCdmnTzIcRXhq+5sp1hsWACQLi9fHLK+mDEgaiaO+u2r3Th5tV3rJUfNhZY4qa62QNGsHwsVstVxGvw==} + /@aws-sdk/credential-provider-process@3.535.0: + resolution: {integrity: sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-sso@3.353.0: - resolution: {integrity: sha512-S16tpQ7Zra2O3PNCV4a89wn8wVEgv8oRwjF7p87AM902fXEuag4VHIhaI/TgANQT737JDA/ZCFL2XSilCbHxYQ==} + /@aws-sdk/credential-provider-sso@3.535.0(@aws-sdk/credential-provider-node@3.535.0): + resolution: {integrity: sha512-2Dw0YIr8ETdFpq65CC4zK8ZIEbX78rXoNRZXUGNQW3oSKfL0tj8O8ErY6kg1IdEnYbGnEQ35q6luZ5GGNKLgDg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso': 3.353.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.347.0 - '@aws-sdk/token-providers': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/client-sso': 3.535.0 + '@aws-sdk/token-providers': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' - aws-crt dev: false - /@aws-sdk/credential-provider-web-identity@3.353.0: - resolution: {integrity: sha512-l3TdZB6tEDhLIl0oLIIy1njlxogpyIXSMW9fpuHBt7LDUwfBdCwVPE6+JpGXra6tJAfRQSv5l0lYx5osSLq98g==} + /@aws-sdk/credential-provider-web-identity@3.535.0(@aws-sdk/credential-provider-node@3.535.0): + resolution: {integrity: sha512-t2/JWrKY0H66A7JW7CqX06/DG2YkJddikt5ymdQvx/Q7dRMJ3d+o/vgjoKr7RvEx/pNruCeyM1599HCvwrVMrg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sts': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: false + + /@aws-sdk/middleware-bucket-endpoint@3.535.0: + resolution: {integrity: sha512-7sijlfQsc4UO9Fsl11mU26Y5f9E7g6UoNg/iJUBpC5pgvvmdBRO5UEhbB/gnqvOEPsBXyhmfzbstebq23Qdz7A==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-arn-parser': 3.535.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-expect-continue@3.535.0: + resolution: {integrity: sha512-hFKyqUBky0NWCVku8iZ9+PACehx0p6vuMw5YnZf8FVgHP0fode0b/NwQY6UY7oor/GftvRsAlRUAWGNFEGUpwA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/eventstream-codec@3.347.0: - resolution: {integrity: sha512-61q+SyspjsaQ4sdgjizMyRgVph2CiW4aAtfpoH69EJFJfTxTR/OqnZ9Jx/3YiYi0ksrvDenJddYodfWWJqD8/w==} + /@aws-sdk/middleware-flexible-checksums@3.535.0: + resolution: {integrity: sha512-rBIzldY9jjRATxICDX7t77aW6ctqmVDgnuAOgbVT5xgHftt4o7PGWKoMvl/45hYqoQgxVFnCBof9bxkqSBebVA==} + engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/crc32': 3.0.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-hex-encoding': 3.310.0 - tslib: 2.5.3 + '@aws-crypto/crc32c': 3.0.0 + '@aws-sdk/types': 3.535.0 + '@smithy/is-array-buffer': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 dev: false - /@aws-sdk/eventstream-serde-browser@3.347.0: - resolution: {integrity: sha512-9BLVTHWgpiTo/hl+k7qt7E9iYu43zVwJN+4TEwA9ZZB3p12068t1Hay6HgCcgJC3+LWMtw/OhvypV6vQAG4UBg==} + /@aws-sdk/middleware-host-header@3.535.0: + resolution: {integrity: sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-serde-universal': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/eventstream-serde-config-resolver@3.347.0: - resolution: {integrity: sha512-RcXQbNVq0PFmDqfn6+MnjCUWbbobcYVxpimaF6pMDav04o6Mcle+G2Hrefp5NlFr/lZbHW2eUKYsp1sXPaxVlQ==} + /@aws-sdk/middleware-location-constraint@3.535.0: + resolution: {integrity: sha512-SxfS9wfidUZZ+WnlKRTCRn3h+XTsymXRXPJj8VV6hNRNeOwzNweoG3YhQbTowuuNfXf89m9v6meYkBBtkdacKw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/eventstream-serde-node@3.347.0: - resolution: {integrity: sha512-pgQCWH0PkHjcHs04JE7FoGAD3Ww45ffV8Op0MSLUhg9OpGa6EDoO3EOpWi9l/TALtH4f0KRV35PVyUyHJ/wEkA==} + /@aws-sdk/middleware-logger@3.535.0: + resolution: {integrity: sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-serde-universal': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/eventstream-serde-universal@3.347.0: - resolution: {integrity: sha512-4wWj6bz6lOyDIO/dCCjwaLwRz648xzQQnf89R29sLoEqvAPP5XOB7HL+uFaQ/f5tPNh49gL6huNFSVwDm62n4Q==} + /@aws-sdk/middleware-recursion-detection@3.535.0: + resolution: {integrity: sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-codec': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/fetch-http-handler@3.353.0: - resolution: {integrity: sha512-8ic2+4E6jzfDevd++QS1rOR05QFkAhEFbi5Ja3/Zzp7TkWIS8wv5wwMATjNkbbdsXYuB5Lhl/OsjfZmIv5aqRw==} + /@aws-sdk/middleware-sdk-s3@3.535.0: + resolution: {integrity: sha512-/dLG/E3af6ohxkQ5GBHT8tZfuPIg6eItKxCXuulvYj0Tqgf3Mb+xTsvSkxQsJF06RS4sH7Qsg/PnB8ZfrJrXpg==} + engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/querystring-builder': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-arn-parser': 3.535.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 2.2.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + tslib: 2.6.2 dev: false - /@aws-sdk/hash-blob-browser@3.353.0: - resolution: {integrity: sha512-YO/38oTbTY5URjmYLU5YDh1VmHndWT7h3a0T5vM9K7AAoqdVbGXP1Di9zpEmteH4rurZNEqLGuLw9/p9dTre6Q==} + /@aws-sdk/middleware-signing@3.535.0: + resolution: {integrity: sha512-Rb4sfus1Gc5paRl9JJgymJGsb/i3gJKK/rTuFZICdd1PBBE5osIOHP5CpzWYBtc5LlyZE1a2QoxPMCyG+QUGPw==} + engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/chunked-blob-reader': 3.310.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/hash-node@3.347.0: - resolution: {integrity: sha512-96+ml/4EaUaVpzBdOLGOxdoXOjkPgkoJp/0i1fxOJEvl8wdAQSwc3IugVK9wZkCxy2DlENtgOe6DfIOhfffm/g==} + /@aws-sdk/middleware-ssec@3.535.0: + resolution: {integrity: sha512-QAQ++9my7VZzusUPOFcUMdhTnjpGRyy/OvPC+jg9usdfcaSZeQbfzbdaVBalcm2Wt+1qxh3LZSTS+LxKikm02Q==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-buffer-from': 3.310.0 - '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/hash-stream-node@3.347.0: - resolution: {integrity: sha512-tOBfcvELyt1GVuAlQ4d0mvm3QxoSSmvhH15SWIubM9RP4JWytBVzaFAn/aC02DBAWyvp0acMZ5J+47mxrWJElg==} + /@aws-sdk/middleware-user-agent@3.535.0: + resolution: {integrity: sha512-Uvb2WJ+zdHdCOtsWVPI/M0BcfNrjOYsicDZWtaljucRJKLclY5gNWwD+RwIC+8b5TvfnVOlH+N5jhvpi5Impog==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.535.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/invalid-dependency@3.347.0: - resolution: {integrity: sha512-8imQcwLwqZ/wTJXZqzXT9pGLIksTRckhGLZaXT60tiBOPKuerTsus2L59UstLs5LP8TKaVZKFFSsjRIn9dQdmQ==} + /@aws-sdk/region-config-resolver@3.535.0: + resolution: {integrity: sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==} + engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/is-array-buffer@3.310.0: - resolution: {integrity: sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==} + /@aws-sdk/signature-v4-multi-region@3.535.0: + resolution: {integrity: sha512-tqCsEsEj8icW0SAh3NvyhRUq54Gz2pu4NM2tOSrFp7SO55heUUaRLSzYteNZCTOupH//AAaZvbN/UUTO/DrOog==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 + '@aws-sdk/middleware-sdk-s3': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/md5-js@3.347.0: - resolution: {integrity: sha512-mChE+7DByTY9H4cQ6fnWp2x5jf8e6OZN+AdLp6WQ+W99z35zBeqBxVmgm8ziJwkMIrkSTv9j3Y7T9Ve3RIcSfg==} + /@aws-sdk/token-providers@3.535.0(@aws-sdk/credential-provider-node@3.535.0): + resolution: {integrity: sha512-4g+l/B9h1H/SiDtFRosW3pMwc+3PTXljZit+5NUBcET2XqcdUyHmgj3lBdu+CJ9CHdIMggRalYMAFXnRFe3Psg==} + engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.3 + '@aws-sdk/client-sso-oidc': 3.535.0(@aws-sdk/credential-provider-node@3.535.0) + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt dev: false - /@aws-sdk/middleware-bucket-endpoint@3.353.0: - resolution: {integrity: sha512-IBw5tmYBG4H/Q0KUnQ8ljtavE01UX1LDR9SjMOm0RbhTIeRUrw+bRTTnRWp2T1IXk29rgAhbGEA1w2pk5k/E8Q==} + /@aws-sdk/types@3.535.0: + resolution: {integrity: sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-arn-parser': 3.310.0 - '@aws-sdk/util-config-provider': 3.310.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-content-length@3.347.0: - resolution: {integrity: sha512-i4qtWTDImMaDUtwKQPbaZpXsReiwiBomM1cWymCU4bhz81HL01oIxOxOBuiM+3NlDoCSPr3KI6txZSz/8cqXCQ==} + /@aws-sdk/util-arn-parser@3.535.0: + resolution: {integrity: sha512-smVo29nUPAOprp8Z5Y3GHuhiOtw6c8/EtLCm5AVMtRsTPw4V414ZXL2H66tzmb5kEeSzQlbfBSBEdIFZoxO9kg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-endpoint@3.347.0: - resolution: {integrity: sha512-unF0c6dMaUL1ffU+37Ugty43DgMnzPWXr/Jup/8GbK5fzzWT5NQq6dj9KHPubMbWeEjQbmczvhv25JuJdK8gNQ==} + /@aws-sdk/util-endpoints@3.535.0: + resolution: {integrity: sha512-c8TlaQsiPchOOmTTR6qvHCO2O7L7NJwlKWAoQJ2GqWDZuC5es/fyuF2rp1h+ZRrUVraUomS0YdGkAmaDC7hJQg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-serde': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/url-parser': 3.347.0 - '@aws-sdk/util-middleware': 3.347.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + '@smithy/util-endpoints': 1.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-expect-continue@3.347.0: - resolution: {integrity: sha512-95M1unD1ENL0tx35dfyenSfx0QuXBSKtOi/qJja6LfX5771C5fm5ZTOrsrzPFJvRg/wj8pCOVWRZk+d5+jvfOQ==} + /@aws-sdk/util-locate-window@3.535.0: + resolution: {integrity: sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-flexible-checksums@3.347.0: - resolution: {integrity: sha512-Pda7VMAIyeHw9nMp29rxdFft3EF4KP/tz/vLB6bqVoBNbLujo5rxn3SGOgStgIz7fuMLQQfoWIsmvxUm+Fp+Dw==} + /@aws-sdk/util-user-agent-browser@3.535.0: + resolution: {integrity: sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + bowser: 2.11.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-user-agent-node@3.535.0: + resolution: {integrity: sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==} engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true dependencies: - '@aws-crypto/crc32': 3.0.0 - '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/is-array-buffer': 3.310.0 - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.3 + '@aws-sdk/types': 3.535.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-host-header@3.347.0: - resolution: {integrity: sha512-kpKmR9OvMlnReqp5sKcJkozbj1wmlblbVSbnQAIkzeQj2xD5dnVR3Nn2ogQKxSmU1Fv7dEroBtrruJ1o3fY38A==} + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@aws-sdk/xml-builder@3.535.0: + resolution: {integrity: sha512-VXAq/Jz8KIrU84+HqsOJhIKZqG0PNTdi6n6PFQ4xJf44ZQHD/5C7ouH4qCFX5XgZXcgbRIcMVVYGC6Jye0dRng==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-location-constraint@3.347.0: - resolution: {integrity: sha512-x5fcEV7q8fQ0OmUO+cLhN5iPqGoLWtC3+aKHIfRRb2BpOO1khyc1FKzsIAdeQz2hfktq4j+WsrmcPvFKv51pSg==} + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/parser@7.24.0: + resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@deno/shim-crypto@0.3.1: + resolution: {integrity: sha512-ed4pNnfur6UbASEgF34gVxR9p7Mc3qF+Ygbmjiil8ws5IhNFhPDFy5vE5hQAUA9JmVsSxXPcVLM5Rf8LOZqQ5Q==} + dev: false + + /@deno/shim-deno-test@0.5.0: + resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} + dev: false + + /@emnapi/runtime@0.45.0: + resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} + requiresBuild: true + dependencies: + tslib: 2.6.2 + dev: false + optional: true + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@hono/node-server@1.8.2: + resolution: {integrity: sha512-h8l2TBLCPHZBUrrkosZ6L5CpBLj6zdESyF4B+zngiCDF7aZFQJ0alVbLx7jn8PCVi9EyoFf8a4hOZFi1tD95EA==} + engines: {node: '>=18.14.1'} + dev: false + + /@img/sharp-darwin-arm64@0.33.2: + resolution: {integrity: sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.1 + dev: false + optional: true + + /@img/sharp-darwin-x64@0.33.2: + resolution: {integrity: sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.1 + dev: false + optional: true + + /@img/sharp-libvips-darwin-arm64@1.0.1: + resolution: {integrity: sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-darwin-x64@1.0.1: + resolution: {integrity: sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm64@1.0.1: + resolution: {integrity: sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm@1.0.1: + resolution: {integrity: sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-s390x@1.0.1: + resolution: {integrity: sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-x64@1.0.1: + resolution: {integrity: sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-arm64@1.0.1: + resolution: {integrity: sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-x64@1.0.1: + resolution: {integrity: sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-linux-arm64@0.33.2: + resolution: {integrity: sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.1 + dev: false + optional: true + + /@img/sharp-linux-arm@0.33.2: + resolution: {integrity: sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.1 + dev: false + optional: true + + /@img/sharp-linux-s390x@0.33.2: + resolution: {integrity: sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.1 + dev: false + optional: true + + /@img/sharp-linux-x64@0.33.2: + resolution: {integrity: sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.1 + dev: false + optional: true + + /@img/sharp-linuxmusl-arm64@0.33.2: + resolution: {integrity: sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 + dev: false + optional: true + + /@img/sharp-linuxmusl-x64@0.33.2: + resolution: {integrity: sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.1 + dev: false + optional: true + + /@img/sharp-wasm32@0.33.2: + resolution: {integrity: sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + requiresBuild: true + dependencies: + '@emnapi/runtime': 0.45.0 + dev: false + optional: true + + /@img/sharp-win32-ia32@0.33.2: + resolution: {integrity: sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-win32-x64@0.33.2: + resolution: {integrity: sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jmondi/string-encrypt-decrypt@0.0.6: + resolution: {integrity: sha512-RhpZYDN/g1zj381hwiXXMi58AjS+c7iJAJI/HoCIDeetnt0y8ZI9//KCCTJt+UM1pZQ2OUtNvOJheG0BC2f/3g==} + engines: {node: '>=20.0.0'} + dependencies: + '@deno/shim-crypto': 0.3.1 + '@deno/shim-deno-test': 0.5.0 + dev: false + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@rollup/rollup-android-arm-eabi@4.13.0: + resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.13.0: + resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.13.0: + resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.13.0: + resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.13.0: + resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.13.0: + resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.13.0: + resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.13.0: + resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.13.0: + resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.13.0: + resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.13.0: + resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.13.0: + resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.13.0: + resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@smithy/abort-controller@2.2.0: + resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-logger@3.347.0: - resolution: {integrity: sha512-NYC+Id5UCkVn+3P1t/YtmHt75uED06vwaKyxDy0UmB2K66PZLVtwWbLpVWrhbroaw1bvUHYcRyQ9NIfnVcXQjA==} - engines: {node: '>=14.0.0'} + /@smithy/chunked-blob-reader-native@2.2.0: + resolution: {integrity: sha512-VNB5+1oCgX3Fzs072yuRsUoC2N4Zg/LJ11DTxX3+Qu+Paa6AmbIF0E9sc2wthz9Psrk/zcOlTCyuposlIhPjZQ==} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/util-base64': 2.3.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-recursion-detection@3.347.0: - resolution: {integrity: sha512-qfnSvkFKCAMjMHR31NdsT0gv5Sq/ZHTUD4yQsSLpbVQ6iYAS834lrzXt41iyEHt57Y514uG7F/Xfvude3u4icQ==} - engines: {node: '>=14.0.0'} + /@smithy/chunked-blob-reader@2.2.0: + resolution: {integrity: sha512-3GJNvRwXBGdkDZZOGiziVYzDpn4j6zfyULHMDKAGIUo72yHALpE9CbhfQp/XcLNVoc1byfMpn6uW5H2BqPjgaQ==} dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-retry@3.353.0: - resolution: {integrity: sha512-v81NEzDGGvnpvFUy388razpicn7STwBA5gItlr3Ukz8ZWWudfQarTBr0nfVyODXb+76du2LwzEQOd6YtfoOZ+w==} + /@smithy/config-resolver@2.2.0: + resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/service-error-classification': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-middleware': 3.347.0 - '@aws-sdk/util-retry': 3.347.0 - tslib: 2.5.3 - uuid: 8.3.2 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-sdk-s3@3.347.0: - resolution: {integrity: sha512-TLr92+HMvamrhJJ0VDhA/PiUh4rTNQz38B9dB9ikohTaRgm+duP+mRiIv16tNPZPGl8v82Thn7Ogk2qPByNDtg==} + /@smithy/core@1.4.0: + resolution: {integrity: sha512-uu9ZDI95Uij4qk+L6kyFjdk11zqBkcJ3Lv0sc6jZrqHvLyr0+oeekD3CnqMafBn/5PRI6uv6ulW3kNLRBUHeVw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-arn-parser': 3.310.0 - tslib: 2.5.3 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-sdk-sts@3.353.0: - resolution: {integrity: sha512-GDpjznRBjvCvBfyLEhWb/FSmsnFR+nhBQC0N7d8pqWRqI084sy2ZRyQ6hNDWnImi6AvOabTBSfDm6cB5RexDow==} + /@smithy/credential-provider-imds@2.3.0: + resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-signing': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-serde@3.347.0: - resolution: {integrity: sha512-x5Foi7jRbVJXDu9bHfyCbhYDH5pKK+31MmsSJ3k8rY8keXLBxm2XEEg/AIoV9/TUF9EeVvZ7F1/RmMpJnWQsEg==} - engines: {node: '>=14.0.0'} + /@smithy/eventstream-codec@2.2.0: + resolution: {integrity: sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-signing@3.353.0: - resolution: {integrity: sha512-9WHgnIDavv7FRiDL1M7EVzGiTqqLjcCUW3ZX3oLJJvG4MuWpcStl9KmpnHs8RLabvGj6DSkeZRhh6ZC1r1M1gQ==} + /@smithy/eventstream-serde-browser@2.2.0: + resolution: {integrity: sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/signature-v4': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-middleware': 3.347.0 - tslib: 2.5.3 + '@smithy/eventstream-serde-universal': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-ssec@3.347.0: - resolution: {integrity: sha512-467VEi2elPmUGcHAgTmzhguZ3lwTpwK+3s+pk312uZtVsS9rP1MAknYhpS3ZvssiqBUVPx8m29cLcC6Tx5nOJg==} + /@smithy/eventstream-serde-config-resolver@2.2.0: + resolution: {integrity: sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-stack@3.347.0: - resolution: {integrity: sha512-Izidg4rqtYMcKuvn2UzgEpPLSmyd8ub9+LQ2oIzG3mpIzCBITq7wp40jN1iNkMg+X6KEnX9vdMJIYZsPYMCYuQ==} + /@smithy/eventstream-serde-node@2.2.0: + resolution: {integrity: sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 + '@smithy/eventstream-serde-universal': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/middleware-user-agent@3.352.0: - resolution: {integrity: sha512-QGqblMTsVDqeomy22KPm9LUW8PHZXBA2Hjk9Hcw8U1uFS8IKYJrewInG3ae2+9FAcTyug4LFWDf8CRr9YH2B3Q==} + /@smithy/eventstream-serde-universal@2.2.0: + resolution: {integrity: sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-endpoints': 3.352.0 - tslib: 2.5.3 + '@smithy/eventstream-codec': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/node-config-provider@3.353.0: - resolution: {integrity: sha512-4j0dFHAIa0NwQOPZ/PgkyfCWRaaLhilGbL/cOHkndtUdV54WtG+9+21pKNtakfxncF0irtZvVOv/CW/5x909ZQ==} - engines: {node: '>=14.0.0'} + /@smithy/fetch-http-handler@2.5.0: + resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + tslib: 2.6.2 dev: false - /@aws-sdk/node-http-handler@3.350.0: - resolution: {integrity: sha512-oD96GAlmpzYilCdC8wwyURM5lNfNHZCjm/kxBkQulHKa2kRbIrnD9GfDqdCkWA5cTpjh1NzGLT4D6e6UFDjt9w==} - engines: {node: '>=14.0.0'} + /@smithy/hash-blob-browser@2.2.0: + resolution: {integrity: sha512-SGPoVH8mdXBqrkVCJ1Hd1X7vh1zDXojNN1yZyZTZsCno99hVue9+IYzWDjq/EQDDXxmITB0gBmuyPh8oAZSTcg==} dependencies: - '@aws-sdk/abort-controller': 3.347.0 - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/querystring-builder': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/chunked-blob-reader': 2.2.0 + '@smithy/chunked-blob-reader-native': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/property-provider@3.353.0: - resolution: {integrity: sha512-Iu6J59hncaew7eBKroTcLjZ8cgrom0IWyZZ09rsow3rZDHVtw7LQSrUyuqsSbKGY9eRtL7Wa6ZtYHnXFiAE2kg==} + /@smithy/hash-node@2.2.0: + resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 dev: false - /@aws-sdk/protocol-http@3.347.0: - resolution: {integrity: sha512-2YdBhc02Wvy03YjhGwUxF0UQgrPWEy8Iq75pfS42N+/0B/+eWX1aQgfjFxIpLg7YSjT5eKtYOQGlYd4MFTgj9g==} + /@smithy/hash-stream-node@2.2.0: + resolution: {integrity: sha512-aT+HCATOSRMGpPI7bi7NSsTNVZE/La9IaxLXWoVAYMxHT5hGO3ZOGEMZQg8A6nNL+pdFGtZQtND1eoY084HgHQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 dev: false - /@aws-sdk/querystring-builder@3.347.0: - resolution: {integrity: sha512-phtKTe6FXoV02MoPkIVV6owXI8Mwr5IBN3bPoxhcPvJG2AjEmnetSIrhb8kwc4oNhlwfZwH6Jo5ARW/VEWbZtg==} - engines: {node: '>=14.0.0'} + /@smithy/invalid-dependency@2.2.0: + resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} dependencies: - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-uri-escape': 3.310.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/querystring-parser@3.347.0: - resolution: {integrity: sha512-5VXOhfZz78T2W7SuXf2avfjKglx1VZgZgp9Zfhrt/Rq+MTu2D+PZc5zmJHhYigD7x83jLSLogpuInQpFMA9LgA==} + /@smithy/is-array-buffer@2.2.0: + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - dev: false - - /@aws-sdk/service-error-classification@3.347.0: - resolution: {integrity: sha512-xZ3MqSY81Oy2gh5g0fCtooAbahqh9VhsF8vcKjVX8+XPbGC8y+kej82+MsMg4gYL8gRFB9u4hgYbNgIS6JTAvg==} - engines: {node: '>=14.0.0'} + tslib: 2.6.2 dev: false - /@aws-sdk/shared-ini-file-loader@3.347.0: - resolution: {integrity: sha512-Xw+zAZQVLb+xMNHChXQ29tzzLqm3AEHsD8JJnlkeFjeMnWQtXdUfOARl5s8NzAppcKQNlVe2gPzjaKjoy2jz1Q==} - engines: {node: '>=14.0.0'} + /@smithy/md5-js@2.2.0: + resolution: {integrity: sha512-M26XTtt9IIusVMOWEAhIvFIr9jYj4ISPPGJROqw6vXngO3IYJCnVVSMFn4Tx1rUTG5BiKJNg9u2nxmBiZC5IlQ==} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 dev: false - /@aws-sdk/signature-v4-multi-region@3.347.0: - resolution: {integrity: sha512-838h7pbRCVYWlTl8W+r5+Z5ld7uoBObgAn7/RB1MQ4JjlkfLdN7emiITG6ueVL+7gWZNZc/4dXR/FJSzCgrkxQ==} + /@smithy/middleware-content-length@2.2.0: + resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/signature-v4-crt': ^3.118.0 - peerDependenciesMeta: - '@aws-sdk/signature-v4-crt': - optional: true dependencies: - '@aws-sdk/protocol-http': 3.347.0 - '@aws-sdk/signature-v4': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/signature-v4@3.347.0: - resolution: {integrity: sha512-58Uq1do+VsTHYkP11dTK+DF53fguoNNJL9rHRWhzP+OcYv3/mBMLoS2WPz/x9FO5mBg4ESFsug0I6mXbd36tjw==} + /@smithy/middleware-endpoint@2.5.0: + resolution: {integrity: sha512-OBhI9ZEAG8Xen0xsFJwwNOt44WE2CWkfYIxTognC8x42Lfsdf0VN/wCMqpdkySMDio/vts10BiovAxQp0T0faA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/eventstream-codec': 3.347.0 - '@aws-sdk/is-array-buffer': 3.310.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-hex-encoding': 3.310.0 - '@aws-sdk/util-middleware': 3.347.0 - '@aws-sdk/util-uri-escape': 3.310.0 - '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.3 + '@smithy/middleware-serde': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/smithy-client@3.347.0: - resolution: {integrity: sha512-PaGTDsJLGK0sTjA6YdYQzILRlPRN3uVFyqeBUkfltXssvUzkm8z2t1lz2H4VyJLAhwnG5ZuZTNEV/2mcWrU7JQ==} + /@smithy/middleware-retry@2.2.0: + resolution: {integrity: sha512-PsjDOLpbevgn37yJbawmfVoanru40qVA8UEf2+YA1lvOefmhuhL6ZbKtGsLAWDRnE1OlAmedsbA/htH6iSZjNA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-stack': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/service-error-classification': 2.1.5 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + tslib: 2.6.2 + uuid: 8.3.2 dev: false - /@aws-sdk/token-providers@3.353.0: - resolution: {integrity: sha512-tGW36o1tVRf1FtT8HvQ7oCHuoV24XMsEnfErTZik19BZrfakDBeFvZUZ67av6/TBonHdbpBb7dDCJ+nqoG7XCg==} + /@smithy/middleware-serde@2.3.0: + resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso-oidc': 3.353.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/shared-ini-file-loader': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 - transitivePeerDependencies: - - aws-crt + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/types@3.347.0: - resolution: {integrity: sha512-GkCMy79mdjU9OTIe5KT58fI/6uqdf8UmMdWqVHmFJ+UpEzOci7L/uw4sOXWo7xpPzLs6cJ7s5ouGZW4GRPmHFA==} + /@smithy/middleware-stack@2.2.0: + resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 - dev: false - - /@aws-sdk/url-parser@3.347.0: - resolution: {integrity: sha512-lhrnVjxdV7hl+yCnJfDZOaVLSqKjxN20MIOiijRiqaWGLGEAiSqBreMhL89X1WKCifxAs4zZf9YB9SbdziRpAA==} - dependencies: - '@aws-sdk/querystring-parser': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-arn-parser@3.310.0: - resolution: {integrity: sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==} + /@smithy/node-config-provider@2.3.0: + resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-base64@3.310.0: - resolution: {integrity: sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==} + /@smithy/node-http-handler@2.5.0: + resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.3 - dev: false - - /@aws-sdk/util-body-length-browser@3.310.0: - resolution: {integrity: sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==} - dependencies: - tslib: 2.5.3 + '@smithy/abort-controller': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-body-length-node@3.310.0: - resolution: {integrity: sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==} + /@smithy/property-provider@2.2.0: + resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-buffer-from@3.310.0: - resolution: {integrity: sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==} + /@smithy/protocol-http@3.3.0: + resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/is-array-buffer': 3.310.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-config-provider@3.310.0: - resolution: {integrity: sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==} + /@smithy/querystring-builder@2.2.0: + resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 - dev: false - - /@aws-sdk/util-defaults-mode-browser@3.353.0: - resolution: {integrity: sha512-ushvOQKJIH7S6E//xMDPyf2/Bbu0K2A0GJRB88qQV6VKRBo4PEbeHTb6BbzPhYVX0IbY3uR/X7+Xwk4FeEkMWg==} - engines: {node: '>= 10.0.0'} - dependencies: - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - bowser: 2.11.0 - tslib: 2.5.3 - dev: false - - /@aws-sdk/util-defaults-mode-node@3.353.0: - resolution: {integrity: sha512-wUmv1qr19kjjLwKoc/hVTrZCGTVNssnMWdq7cu6dQoz06kOpYrxLpdQEsj71Lh0+XYFBYUU5c3NRMasnFnl1DQ==} - engines: {node: '>= 10.0.0'} - dependencies: - '@aws-sdk/config-resolver': 3.353.0 - '@aws-sdk/credential-provider-imds': 3.353.0 - '@aws-sdk/node-config-provider': 3.353.0 - '@aws-sdk/property-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + '@smithy/util-uri-escape': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-endpoints@3.352.0: - resolution: {integrity: sha512-PjWMPdoIUWfBPgAWLyOrWFbdSS/3DJtc0OmFb/JrE8C8rKFYl+VGW5f1p0cVdRWiDR0xCGr0s67p8itAakVqjw==} + /@smithy/querystring-parser@2.2.0: + resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-hex-encoding@3.310.0: - resolution: {integrity: sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==} + /@smithy/service-error-classification@2.1.5: + resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 + '@smithy/types': 2.12.0 dev: false - /@aws-sdk/util-locate-window@3.310.0: - resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} + /@smithy/shared-ini-file-loader@2.4.0: + resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-middleware@3.347.0: - resolution: {integrity: sha512-8owqUA3ePufeYTUvlzdJ7Z0miLorTwx+rNol5lourGQZ9JXsVMo23+yGA7nOlFuXSGkoKpMOtn6S0BT2bcfeiw==} + /@smithy/signature-v4@2.2.0: + resolution: {integrity: sha512-+B5TNzj/fRZzVW3z8UUJOkNx15+4E0CLuvJmJUA1JUIZFp3rdJ/M2H5r2SqltaVPXL0oIxv/6YK92T9TsFGbFg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 - dev: false - - /@aws-sdk/util-retry@3.347.0: - resolution: {integrity: sha512-NxnQA0/FHFxriQAeEgBonA43Q9/VPFQa8cfJDuT2A1YZruMasgjcltoZszi1dvoIRWSZsFTW42eY2gdOd0nffQ==} - engines: {node: '>= 14.0.0'} - dependencies: - '@aws-sdk/service-error-classification': 3.347.0 - tslib: 2.5.3 - dev: false - - /@aws-sdk/util-stream-browser@3.353.0: - resolution: {integrity: sha512-2EBLrnjdBiMwupdPlztUjTk7T/6LX//8ppudPJvaFDyXuPYV6pDR4L5CDvrPZQTdzfbzAJKb5MVG1OxTn+aF8g==} - dependencies: - '@aws-sdk/fetch-http-handler': 3.353.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-base64': 3.310.0 - '@aws-sdk/util-hex-encoding': 3.310.0 - '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.3 + '@smithy/eventstream-codec': 2.2.0 + '@smithy/is-array-buffer': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-uri-escape': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-stream-node@3.350.0: - resolution: {integrity: sha512-qhcmYEAVMJPjCepog3WTFBaeP3XCkLBbUrM5/+LaB/FASKk+JeV8qBQyjYUd8EVb6Gsk7+y9SE3Tj+ChyHB4WA==} + /@smithy/smithy-client@2.5.0: + resolution: {integrity: sha512-DDXWHWdimtS3y/Kw1Jo46KQ0ZYsDKcldFynQERUGBPDpkW1lXOTHy491ALHjwfiBQvzsVKVxl5+ocXNIgJuX4g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/node-http-handler': 3.350.0 - '@aws-sdk/types': 3.347.0 - '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.3 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-uri-escape@3.310.0: - resolution: {integrity: sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==} + /@smithy/types@2.12.0: + resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /@aws-sdk/util-user-agent-browser@3.347.0: - resolution: {integrity: sha512-ydxtsKVtQefgbk1Dku1q7pMkjDYThauG9/8mQkZUAVik55OUZw71Zzr3XO8J8RKvQG8lmhPXuAQ0FKAyycc0RA==} + /@smithy/url-parser@2.2.0: + resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} dependencies: - '@aws-sdk/types': 3.347.0 - bowser: 2.11.0 - tslib: 2.5.3 + '@smithy/querystring-parser': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-user-agent-node@3.353.0: - resolution: {integrity: sha512-wAviGE0NFqGnaBi6JdjCjp/3DA4AprXQayg9fGphRmP6ncOHNHGonPj/60l+Itu+m78V2CbIS76jqCdUtyAZEQ==} + /@smithy/util-base64@2.3.0: + resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} engines: {node: '>=14.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true dependencies: - '@aws-sdk/node-config-provider': 3.353.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 dev: false - /@aws-sdk/util-utf8-browser@3.259.0: - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + /@smithy/util-body-length-browser@2.2.0: + resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} dependencies: - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /@aws-sdk/util-utf8@3.310.0: - resolution: {integrity: sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==} + /@smithy/util-body-length-node@2.3.0: + resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.3 + tslib: 2.6.2 dev: false - /@aws-sdk/util-waiter@3.347.0: - resolution: {integrity: sha512-3ze/0PkwkzUzLncukx93tZgGL0JX9NaP8DxTi6WzflnL/TEul5Z63PCruRNK0om17iZYAWKrf8q2mFoHYb4grA==} + /@smithy/util-buffer-from@2.2.0: + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/abort-controller': 3.347.0 - '@aws-sdk/types': 3.347.0 - tslib: 2.5.3 + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.6.2 dev: false - /@aws-sdk/xml-builder@3.310.0: - resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} + /@smithy/util-config-provider@2.3.0: + resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.3 - dev: false - - /@colors/colors@1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} + tslib: 2.6.2 dev: false - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - - /@dabh/diagnostics@2.0.3: - resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + /@smithy/util-defaults-mode-browser@2.2.0: + resolution: {integrity: sha512-2okTdZaCBvOJszAPU/KSvlimMe35zLOKbQpHhamFJmR7t95HSe0K3C92jQPjKY3PmDBD+7iMkOnuW05F5OlF4g==} + engines: {node: '>= 10.0.0'} dependencies: - colorspace: 1.1.4 - enabled: 2.0.0 - kuler: 2.0.0 + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + bowser: 2.11.0 + tslib: 2.6.2 dev: false - /@fastify/ajv-compiler@3.5.0: - resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} + /@smithy/util-defaults-mode-node@2.3.0: + resolution: {integrity: sha512-hfKXnNLmsW9cmLb/JXKIvtuO6Cf4SuqN5PN1C2Ru/TBIws+m1wSgb+A53vo0r66xzB6E82inKG2J7qtwdi+Kkw==} + engines: {node: '>= 10.0.0'} dependencies: - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - fast-uri: 2.2.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@fastify/cors@8.3.0: - resolution: {integrity: sha512-oj9xkka2Tg0MrwuKhsSUumcAkfp2YCnKxmFEusi01pjk1YrdDsuSYTHXEelWNW+ilSy/ApZq0c2SvhKrLX0H1g==} + /@smithy/util-endpoints@1.2.0: + resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==} + engines: {node: '>= 14.0.0'} dependencies: - fastify-plugin: 4.5.0 - mnemonist: 0.39.5 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@fastify/deepmerge@1.3.0: - resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} + /@smithy/util-hex-encoding@2.2.0: + resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 dev: false - /@fastify/error@3.2.1: - resolution: {integrity: sha512-scZVbcpPNWw/yyFmzzO7cf1daTeJp53spN2n7dBTHZd+cV7791fcWJCPP1Tfhdbre+8vDiCyQyqqXfQnYMntYQ==} + /@smithy/util-middleware@2.2.0: + resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@fastify/fast-json-stringify-compiler@4.3.0: - resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} + /@smithy/util-retry@2.2.0: + resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} + engines: {node: '>= 14.0.0'} dependencies: - fast-json-stringify: 5.7.0 + '@smithy/service-error-classification': 2.1.5 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@fastify/formbody@7.4.0: - resolution: {integrity: sha512-H3C6h1GN56/SMrZS8N2vCT2cZr7mIHzBHzOBa5OPpjfB/D6FzP9mMpE02ZzrFX0ANeh0BAJdoXKOF2e7IbV+Og==} + /@smithy/util-stream@2.2.0: + resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} + engines: {node: '>=14.0.0'} dependencies: - fast-querystring: 1.1.2 - fastify-plugin: 4.5.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 dev: false - /@fastify/helmet@10.1.1: - resolution: {integrity: sha512-z9abyIlCHPU25llOTyo3uz8F8TJ+uDqtOC4+38dxODPw8Ro9sTZjbm2U7ZIF0IAv3/E0ke6vbUQ4sB376WuKJA==} + /@smithy/util-uri-escape@2.2.0: + resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} + engines: {node: '>=14.0.0'} dependencies: - fastify-plugin: 4.5.0 - helmet: 6.2.0 + tslib: 2.6.2 dev: false - /@fastify/middie@8.3.0: - resolution: {integrity: sha512-h+zBxCzMlkEkh4fM7pZaSGzqS7P9M0Z6rXnWPdUEPfe7x1BCj++wEk/pQ5jpyYY4pF8AknFqb77n7uwh8HdxEA==} + /@smithy/util-utf8@2.3.0: + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} dependencies: - '@fastify/error': 3.2.1 - fastify-plugin: 4.5.0 - path-to-regexp: 6.2.1 - reusify: 1.0.4 + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.6.2 dev: false - /@fastify/rate-limit@8.0.1: - resolution: {integrity: sha512-sKztox9tAhKYJadS7yD7mBamNs8sLP/OlBjX6prGzlL3+q4cxPE2UafW8QF5s4+BuUyssQ7FabSlgieqyk4JZg==} + /@smithy/util-waiter@2.2.0: + resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} + engines: {node: '>=14.0.0'} dependencies: - fastify-plugin: 4.5.0 - ms: 2.1.3 - tiny-lru: 11.0.1 + '@smithy/abort-controller': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: false - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} dev: true - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + /@types/md5@2.3.5: + resolution: {integrity: sha512-/i42wjYNgE6wf0j2bcTX6kuowmdL/6PE4IVitMpm2eYKBUuYCprdcWVK+xEF0gcV6ufMCRhtxmReGfc6hIK7Jw==} dev: true - /@lukeed/csprng@1.1.0: - resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} - engines: {node: '>=8'} - dev: false - - /@nestjs/common@10.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-Fa2GDQJrO5TTTcpISWfm0pdPS62V+8YbxeG5CA01zMUI+dCO3v3oFf+BSjqCGUUo7GDNzDsjAejwGXuqA54RPw==} - peerDependencies: - class-transformer: '*' - class-validator: '*' - reflect-metadata: ^0.1.12 - rxjs: ^7.1.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true - dependencies: - class-transformer: 0.5.1 - class-validator: 0.14.0 - iterare: 1.2.1 - reflect-metadata: 0.1.13 - rxjs: 7.8.1 - tslib: 2.5.3 - uid: 2.0.2 - dev: false - - /@nestjs/core@10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1): - resolution: {integrity: sha512-HFTdj4vsF+2qOaq97ZPRDle6Q/KyL5lmMah0/ZR0ie+e1/tnlvmlqw589xFACTemLJFFOjZMy763v+icO9u72w==} - requiresBuild: true - peerDependencies: - '@nestjs/common': ^10.0.0 - '@nestjs/microservices': ^10.0.0 - '@nestjs/platform-express': ^10.0.0 - '@nestjs/websockets': ^10.0.0 - reflect-metadata: ^0.1.12 - rxjs: ^7.1.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true - '@nestjs/websockets': - optional: true + /@types/node@20.11.29: + resolution: {integrity: sha512-P99thMkD/1YkCvAtOd6/zGedKNA0p2fj4ZpjCzcNiSCBWgm3cNRTBfa/qjFnsKkkojxu4vVLtWpesnZ9+ap+gA==} dependencies: - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nuxtjs/opencollective': 0.3.2 - fast-safe-stringify: 2.1.1 - iterare: 1.2.1 - path-to-regexp: 3.2.0 - reflect-metadata: 0.1.13 - rxjs: 7.8.1 - tslib: 2.5.3 - uid: 2.0.2 - transitivePeerDependencies: - - encoding - dev: false + undici-types: 5.26.5 + dev: true - /@nestjs/platform-fastify@10.0.0(@nestjs/common@10.0.0)(@nestjs/core@10.0.0): - resolution: {integrity: sha512-s5Ck3nTWLWytWH/c2l7JauuPiYt2MMszX3n+3hNWfevM3wELxhvnA/6617W2AliSOsVgFJ1m1uMCKudNo2vEUQ==} + /@vitest/coverage-v8@1.4.0(vitest@1.4.0): + resolution: {integrity: sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==} peerDependencies: - '@fastify/static': ^6.0.0 - '@fastify/view': ^7.0.0 - '@nestjs/common': ^10.0.0 - '@nestjs/core': ^10.0.0 - peerDependenciesMeta: - '@fastify/static': - optional: true - '@fastify/view': - optional: true + vitest: 1.4.0 dependencies: - '@fastify/cors': 8.3.0 - '@fastify/formbody': 7.4.0 - '@fastify/middie': 8.3.0 - '@nestjs/common': 10.0.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - '@nestjs/core': 10.0.0(@nestjs/common@10.0.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) - fastify: 4.18.0 - light-my-request: 5.10.0 - path-to-regexp: 3.2.0 - tslib: 2.5.3 + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.4 + istanbul-reports: 3.1.7 + magic-string: 0.30.8 + magicast: 0.3.3 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + test-exclude: 6.0.0 + v8-to-istanbul: 9.2.0 + vitest: 1.4.0(@types/node@20.11.29) transitivePeerDependencies: - supports-color - dev: false - - /@nuxtjs/opencollective@0.3.2: - resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true - dependencies: - chalk: 4.1.2 - consola: 2.15.3 - node-fetch: 2.6.11 - transitivePeerDependencies: - - encoding - dev: false - - /@smithy/protocol-http@1.0.1: - resolution: {integrity: sha512-9OrEn0WfOVtBNYJUjUAn9AOiJ4lzERCJJ/JeZs8E6yajTGxBaFRxUnNBHiNqoDJVg076hY36UmEnPx7xXrvUSg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 1.0.0 - tslib: 2.5.3 - dev: false - - /@smithy/types@1.0.0: - resolution: {integrity: sha512-kc1m5wPBHQCTixwuaOh9vnak/iJm21DrSf9UK6yDE5S3mQQ4u11pqAUiKWnlrZnYkeLfAI9UEHj9OaMT1v5Umg==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.5.3 - dev: false - - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + /@vitest/expect@1.4.0: + resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} + dependencies: + '@vitest/spy': 1.4.0 + '@vitest/utils': 1.4.0 + chai: 4.4.1 dev: true - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + /@vitest/runner@1.4.0: + resolution: {integrity: sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==} + dependencies: + '@vitest/utils': 1.4.0 + p-limit: 5.0.0 + pathe: 1.1.2 dev: true - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + /@vitest/snapshot@1.4.0: + resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} + dependencies: + magic-string: 0.30.8 + pathe: 1.1.2 + pretty-format: 29.7.0 dev: true - /@types/node@20.3.1: - resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==} + /@vitest/spy@1.4.0: + resolution: {integrity: sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==} + dependencies: + tinyspy: 2.2.1 dev: true - /@types/triple-beam@1.3.2: - resolution: {integrity: sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==} - dev: false - - /@types/validator@13.7.17: - resolution: {integrity: sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ==} - dev: false - - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + /@vitest/utils@1.4.0: + resolution: {integrity: sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 dev: true /abort-controller@3.0.0: @@ -1286,43 +1864,18 @@ packages: engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - dev: false - - /abstract-logging@2.0.1: - resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - dev: false - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} dev: true - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /ajv-formats@2.1.1(ajv@8.12.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.12.0 - dev: false - - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: false - /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -1330,39 +1883,36 @@ packages: color-convert: 1.9.3 dev: true - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} dev: true - /archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: false - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 dev: true - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - dev: false + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1371,22 +1921,13 @@ packages: /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - dev: false - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - dev: true - - /avvio@8.2.1: - resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} dependencies: - archy: 1.0.0 - debug: 4.3.4 - fastq: 1.15.0 - transitivePeerDependencies: - - supports-color - dev: false + possible-typed-array-names: 1.0.0 + dev: true /axios@1.6.8: resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} @@ -1398,30 +1939,12 @@ packages: - debug dev: false - /b4a@1.6.4: - resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} - dev: false - /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false /bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} @@ -1434,32 +1957,39 @@ packages: concat-map: 0.0.1 dev: true - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.1 + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1470,53 +2000,21 @@ packages: supports-color: 5.5.0 dev: true - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - /charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} dev: false - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 + get-func-name: 2.0.2 dev: true - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: false - - /class-transformer@0.5.1: - resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} - dev: false - - /class-validator@0.14.0: - resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} - dependencies: - '@types/validator': 13.7.17 - libphonenumber-js: 1.10.36 - validator: 13.9.0 - dev: false - /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -1527,6 +2025,7 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -1539,13 +2038,6 @@ packages: simple-swizzle: 0.2.2 dev: false - /color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - dev: false - /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} @@ -1554,12 +2046,9 @@ packages: color-string: 1.9.1 dev: false - /colorspace@1.1.4: - resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} - dependencies: - color: 3.2.1 - text-hex: 1.0.0 - dev: false + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -1572,17 +2061,8 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /consola@2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} - dev: false - - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - dev: false - - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true /cross-env@7.0.3: @@ -1599,7 +2079,7 @@ packages: dependencies: nice-try: 1.0.5 path-key: 2.0.1 - semver: 5.7.1 + semver: 5.7.2 shebang-command: 1.2.0 which: 1.3.1 dev: true @@ -1617,16 +2097,35 @@ packages: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} dev: false - /debug@3.2.7(supports-color@5.5.0): - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} dependencies: - ms: 2.1.3 - supports-color: 5.5.0 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} dev: true /debug@4.3.4: @@ -1639,25 +2138,29 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: false + dev: true - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} dependencies: - mimic-response: 3.1.0 - dev: false + type-detect: 4.0.8 + dev: true - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: false + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - has-property-descriptors: 1.0.0 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 dev: true @@ -1671,25 +2174,21 @@ packages: engines: {node: '>=8'} dev: false - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /dotenv@16.1.4: - resolution: {integrity: sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} dev: false - /enabled@2.0.0: - resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - dev: false - /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - dev: false + dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -1697,53 +2196,129 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + /es-abstract@1.22.5: + resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.5 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /es-abstract@1.23.2: + resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.1 - get-symbol-description: 1.0.0 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 globalthis: 1.0.3 gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 - is-typed-array: 1.1.10 + is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.12.3 + object-inspect: 1.13.1 object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-length: 1.0.4 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.5 unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 + which-typed-array: 1.1.15 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 dev: true - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - has-tostringtag: 1.0.0 + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -1755,136 +2330,91 @@ packages: is-symbol: 1.0.4 dev: true + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - dev: false /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - dev: false - - /expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - dev: false - - /fast-content-type-parse@1.0.0: - resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} - dev: false - - /fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - dev: false - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false - - /fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: false - /fast-json-stringify@5.7.0: - resolution: {integrity: sha512-sBVPTgnAZseLu1Qgj6lUbQ0HfjFhZWXAmpZ5AaSGkyLh5gAXBga/uPJjQPHpDFjC9adWIpdOcCLSDTgrZ7snoQ==} + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: - '@fastify/deepmerge': 1.3.0 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - fast-deep-equal: 3.1.3 - fast-uri: 2.2.0 - rfdc: 1.3.0 - dev: false + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true - /fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - dependencies: - fast-decode-uri-component: 1.0.1 - dev: false + /fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + dev: true - /fast-redact@3.2.0: - resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} + /fast-redact@3.4.0: + resolution: {integrity: sha512-2gwPvyna0zwBdxKnng1suu/dTL5s8XEy2ZqH8mwDUwJdDkV8w5kp+JV26mupdK68HmPMbm6yjW9m7/Ys/BHEHg==} engines: {node: '>=6'} dev: false /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - dev: false - - /fast-uri@2.2.0: - resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} - dev: false + dev: true - /fast-xml-parser@4.2.4: - resolution: {integrity: sha512-fbfMDvgBNIdDJLdLOwacjFAPYt67tr31H9ZhWSm45CDAxvd0I6WTlSOUo7K2P/K5sA5JgMKG64PI3DMcaFdWpQ==} + /fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true dependencies: strnum: 1.0.5 dev: false - /fastify-plugin@4.5.0: - resolution: {integrity: sha512-79ak0JxddO0utAXAQ5ccKhvs6vX2MGyHHMMsmZkBANrq3hXc1CHzvNPHOcvTsVMEPl5I+NT+RO4YKMGehOfSIg==} - dev: false - - /fastify@4.18.0: - resolution: {integrity: sha512-L5o/2GEkBastQ3HV0dtKo7SUZ497Z1+q4fcqAoPyq6JCQ/8zdk1JQEoTQwnBWCp+EmA7AQa6mxNqSAEhzP0RwQ==} - dependencies: - '@fastify/ajv-compiler': 3.5.0 - '@fastify/error': 3.2.1 - '@fastify/fast-json-stringify-compiler': 4.3.0 - abstract-logging: 2.0.1 - avvio: 8.2.1 - fast-content-type-parse: 1.0.0 - fast-json-stringify: 5.7.0 - find-my-way: 7.6.2 - light-my-request: 5.10.0 - pino: 8.14.1 - process-warning: 2.2.0 - proxy-addr: 2.0.7 - rfdc: 1.3.0 - secure-json-parse: 2.7.0 - semver: 7.5.2 - tiny-lru: 11.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: false - - /fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - dev: false - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /find-my-way@7.6.2: - resolution: {integrity: sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==} - engines: {node: '>=14'} - dependencies: - fast-deep-equal: 3.1.3 - fast-querystring: 1.1.2 - safe-regex2: 2.0.0 - dev: false - - /fn.name@1.1.0: - resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} - dev: false - /follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -1910,33 +2440,36 @@ packages: mime-types: 2.1.35 dev: false - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: false - - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: false + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: false + optional: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true dev: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 functions-have-names: 1.2.3 dev: true @@ -1949,45 +2482,62 @@ packages: engines: {node: '>= 4'} dev: false - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-proto: 1.0.1 + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 has-symbols: 1.0.3 + hasown: 2.0.2 - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 dev: true - /github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: false + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: - is-glob: 4.0.3 + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 dev: true /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.0 + define-properties: 1.2.1 dev: true /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.1 - dev: true + get-intrinsic: 1.2.4 /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -2005,80 +2555,85 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: false + dev: true - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.1 - dev: true + es-define-property: 1.0.0 - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 - /helmet@6.2.0: - resolution: {integrity: sha512-DWlwuXLLqbrIOltR6tFQXShj/+7Cyp0gLi6uAb8qMdFh/YBBFbKSgQ6nbXmScYd8emMctuthmgIa7tUfo9Rtyg==} - engines: {node: '>=14.0.0'} + /help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + dev: true + + /hono@4.1.2: + resolution: {integrity: sha512-pbfllzxpZifsp8gbjB01wetLk6Lc4p0OkJmtbH92CYFMPAdL6dzS2tHldfPjnNP87mNJS717P72lt6jzZSqg/g==} + engines: {node: '>=16.0.0'} dev: false /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false - /ignore-by-default@1.0.1: - resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false + dev: true - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 dev: true - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: false - - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.10 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /is-arrayish@0.2.1: @@ -2095,19 +2650,12 @@ packages: has-bigints: 1.0.2 dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-buffer@1.1.6: @@ -2119,33 +2667,28 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - has: 1.0.3 + hasown: 2.0.2 dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-typed-array: 1.1.13 dev: true - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: - is-extglob: 2.1.1 + has-tostringtag: 1.0.2 dev: true - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} dev: true @@ -2153,38 +2696,34 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + has-tostringtag: 1.0.2 dev: true /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-symbol@1.0.4: @@ -2194,55 +2733,76 @@ packages: has-symbols: 1.0.3 dev: true - /is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 + which-typed-array: 1.1.15 dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /iterare@1.2.1: - resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} - engines: {node: '>=6'} - dev: false + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 dev: true - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false + /istanbul-lib-source-maps@5.0.4: + resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} + engines: {node: '>=10'} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + dev: true - /kuler@2.0.0: - resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} - dev: false + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true - /libphonenumber-js@1.10.36: - resolution: {integrity: sha512-NCPWES1poiS4NSzIS49mxHM5hCkSWov8wFICRKfL9narzimqAXlnAgNloHCt0BukZHbWt8TIStCdzLy7LXBYpQ==} - dev: false + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: true - /light-my-request@5.10.0: - resolution: {integrity: sha512-ZU2D9GmAcOUculTTdH9/zryej6n8TzT+fNGdNtm6SDp5MMMpHrJJkvAdE3c6d8d2chE9i+a//dS9CWZtisknqA==} - dependencies: - cookie: 0.5.0 - process-warning: 2.2.0 - set-cookie-parser: 2.6.0 - dev: false + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + dev: true + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: true + + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true /load-json-file@4.0.0: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} @@ -2254,26 +2814,46 @@ packages: strip-bom: 3.0.0 dev: true - /logform@2.5.1: - resolution: {integrity: sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==} + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} dependencies: - '@colors/colors': 1.5.0 - '@types/triple-beam': 1.3.2 - fecha: 4.2.3 - ms: 2.1.3 - safe-stable-stringify: 2.4.3 - triple-beam: 1.3.0 - dev: false + mlly: 1.6.1 + pkg-types: 1.0.3 + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: false - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /magicast@0.3.3: + resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + dependencies: + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + source-map-js: 1.1.0 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 dev: true /md5@2.3.0: @@ -2289,6 +2869,10 @@ packages: engines: {node: '>= 0.10.0'} dev: true + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -2301,10 +2885,10 @@ packages: mime-db: 1.52.0 dev: false - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: false + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2314,109 +2898,55 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: false - - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: false + dev: true - /mnemonist@0.39.5: - resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} + /mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} dependencies: - obliterator: 2.0.4 - dev: false + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.5.2 + dev: true /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: false - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true - /nano@10.1.2: - resolution: {integrity: sha512-P3zSoD/sxAgDs/IE9eqpeAXqTdQ/gA9e9dnzaltr4A3WUo/n+eh66T873L+md5v8lXOutX/7dvcHFOO22f5hDw==} + /nano@10.1.3: + resolution: {integrity: sha512-q/hKQJJH3FhkkuJ3ojbgDph2StlSXFBPNkpZBZlsvZDbuYfxKJ4VtunEeilthcZtuIplIk1zVX5o2RgKTUTO+Q==} engines: {node: '>=14'} dependencies: axios: 1.6.8 node-abort-controller: 3.1.1 - qs: 6.11.2 + qs: 6.12.0 transitivePeerDependencies: - debug dev: false - /napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: false + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: true - /node-abi@3.45.0: - resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} - engines: {node: '>=10'} - dependencies: - semver: 7.5.4 - dev: false - /node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} dev: false - /node-addon-api@6.1.0: - resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - dev: false - - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /nodemon@2.0.22: - resolution: {integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==} - engines: {node: '>=8.10.0'} - hasBin: true - dependencies: - chokidar: 3.5.3 - debug: 3.2.7(supports-color@5.5.0) - ignore-by-default: 1.0.1 - minimatch: 3.1.2 - pstree.remy: 1.1.8 - semver: 5.7.1 - simple-update-notifier: 1.1.0 - supports-color: 5.5.0 - touch: 3.1.0 - undefsafe: 2.0.5 - dev: true - - /nopt@1.0.10: - resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: true - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 + resolve: 1.22.8 + semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - /npm-run-all@4.1.5: resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} engines: {node: '>= 4'} @@ -2430,46 +2960,57 @@ packages: pidtree: 0.3.1 read-pkg: 3.0.0 shell-quote: 1.8.1 - string.prototype.padend: 3.1.4 + string.prototype.padend: 3.1.5 + dev: true + + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 dev: true - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 + call-bind: 1.0.7 + define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true - /obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - dev: false - - /on-exit-leak-free@2.1.0: - resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} - dev: false + /on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: false + dev: true - /one-time@1.0.0: - resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: - fn.name: 1.1.0 - dev: false + mimic-fn: 4.0.0 + dev: true + + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} @@ -2479,6 +3020,11 @@ packages: json-parse-better-errors: 1.0.2 dev: true + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} @@ -2489,18 +3035,15 @@ packages: engines: {node: '>=8'} dev: true + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-to-regexp@3.2.0: - resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} - dev: false - - /path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - dev: false - /path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} @@ -2508,9 +3051,16 @@ packages: pify: 3.0.0 dev: true - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true /pidtree@0.3.1: @@ -2524,135 +3074,140 @@ packages: engines: {node: '>=4'} dev: true - /pino-abstract-transport@1.0.0: - resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} + /pino-abstract-transport@1.1.0: + resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} dependencies: - readable-stream: 4.4.0 + readable-stream: 4.5.2 split2: 4.2.0 - dev: false - /pino-std-serializers@6.2.1: - resolution: {integrity: sha512-wHuWB+CvSVb2XqXM0W/WOYUkVSPbiJb9S5fNB7TBhd8s892Xq910bRxwHtC4l71hgztObTjXL6ZheZXFjhDrDQ==} + /pino-pretty@10.3.1: + resolution: {integrity: sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==} + hasBin: true + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.1.0 + pump: 3.0.0 + readable-stream: 4.5.2 + secure-json-parse: 2.7.0 + sonic-boom: 3.8.0 + strip-json-comments: 3.1.1 + dev: true + + /pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} dev: false - /pino@8.14.1: - resolution: {integrity: sha512-8LYNv7BKWXSfS+k6oEc6occy5La+q2sPwU3q2ljTX5AZk7v+5kND2o5W794FyRaqha6DJajmkNRsWtPpFyMUdw==} + /pino@8.19.0: + resolution: {integrity: sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==} hasBin: true dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.2.0 - on-exit-leak-free: 2.1.0 - pino-abstract-transport: 1.0.0 - pino-std-serializers: 6.2.1 - process-warning: 2.2.0 + fast-redact: 3.4.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.1.0 + pino-std-serializers: 6.2.2 + process-warning: 3.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.4.3 - sonic-boom: 3.3.0 - thread-stream: 2.3.0 + sonic-boom: 3.8.0 + thread-stream: 2.4.1 dev: false - /playwright-core@1.35.1: - resolution: {integrity: sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==} + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.1 + mlly: 1.6.1 + pathe: 1.1.2 + dev: true + + /playwright-core@1.42.1: + resolution: {integrity: sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==} engines: {node: '>=16'} hasBin: true dev: false - /playwright@1.35.1: - resolution: {integrity: sha512-NbwBeGJLu5m7VGM0+xtlmLAH9VUfWwYOhUi/lSEDyGg46r1CA9RWlvoc5yywxR9AzQb0mOCm7bWtOXV7/w43ZA==} + /playwright@1.42.1: + resolution: {integrity: sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==} engines: {node: '>=16'} hasBin: true requiresBuild: true dependencies: - playwright-core: 1.35.1 + playwright-core: 1.42.1 + optionalDependencies: + fsevents: 2.3.2 dev: false - /prebuild-install@7.1.1: - resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} - engines: {node: '>=10'} - hasBin: true + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + + /postcss@8.4.36: + resolution: {integrity: sha512-/n7eumA6ZjFHAsbX30yhHup/IMkOmlmvtEi7P+6RMYf+bGJSUHc3geH4a0NSZxAz/RJfiS9tooCTs9LAVYUZKw==} + engines: {node: ^10 || ^12 || >=14} dependencies: - detect-libc: 2.0.2 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.45.0 - pump: 3.0.0 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: false + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.1.0 + dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} hasBin: true dev: true - /process-warning@2.2.0: - resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} dev: false /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - dev: false - - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - dev: false /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false - /pstree.remy@1.1.8: - resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - dev: true - /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: false - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: false + dev: true - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + /qs@6.12.0: + resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 - dev: false - - /queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + side-channel: 1.0.6 dev: false /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} dev: false - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - dev: false + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true /read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} @@ -2663,102 +3218,89 @@ packages: path-type: 3.0.0 dev: true - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: false - - /readable-stream@4.4.0: - resolution: {integrity: sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==} + /readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: abort-controller: 3.0.0 buffer: 6.0.3 events: 3.3.0 process: 0.11.10 - dev: false - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true + string_decoder: 1.3.0 /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} dev: false - /reflect-metadata@0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} - dev: false - - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 dev: true - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true - /ret@0.2.2: - resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} - engines: {node: '>=4'} - dev: false - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false - - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: false - - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + /rollup@4.13.0: + resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true dependencies: - tslib: 2.5.3 - dev: false + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.13.0 + '@rollup/rollup-android-arm64': 4.13.0 + '@rollup/rollup-darwin-arm64': 4.13.0 + '@rollup/rollup-darwin-x64': 4.13.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 + '@rollup/rollup-linux-arm64-gnu': 4.13.0 + '@rollup/rollup-linux-arm64-musl': 4.13.0 + '@rollup/rollup-linux-riscv64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-musl': 4.13.0 + '@rollup/rollup-win32-arm64-msvc': 4.13.0 + '@rollup/rollup-win32-ia32-msvc': 4.13.0 + '@rollup/rollup-win32-x64-msvc': 4.13.0 + fsevents: 2.3.3 + dev: true + + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + es-errors: 1.3.0 is-regex: 1.1.4 dev: true - /safe-regex2@2.0.0: - resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} - dependencies: - ret: 0.2.2 - dev: false - /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} @@ -2766,51 +3308,69 @@ packages: /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - dev: false - - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true dev: true - /semver@7.0.0: - resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true dev: true - /semver@7.5.2: - resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==} + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - dev: false - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} dependencies: - lru-cache: 6.0.0 - dev: false + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 - /set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - dev: false + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true - /sharp@0.32.6: - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} - engines: {node: '>=14.15.0'} + /sharp@0.33.2: + resolution: {integrity: sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ==} + engines: {libvips: '>=8.15.1', node: ^18.17.0 || ^20.3.0 || >=21.0.0} requiresBuild: true dependencies: color: 4.2.3 detect-libc: 2.0.2 - node-addon-api: 6.1.0 - prebuild-install: 7.1.1 - semver: 7.5.4 - simple-get: 4.0.1 - tar-fs: 3.0.4 - tunnel-agent: 0.6.0 + semver: 7.6.0 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.2 + '@img/sharp-darwin-x64': 0.33.2 + '@img/sharp-libvips-darwin-arm64': 1.0.1 + '@img/sharp-libvips-darwin-x64': 1.0.1 + '@img/sharp-libvips-linux-arm': 1.0.1 + '@img/sharp-libvips-linux-arm64': 1.0.1 + '@img/sharp-libvips-linux-s390x': 1.0.1 + '@img/sharp-libvips-linux-x64': 1.0.1 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 + '@img/sharp-libvips-linuxmusl-x64': 1.0.1 + '@img/sharp-linux-arm': 0.33.2 + '@img/sharp-linux-arm64': 0.33.2 + '@img/sharp-linux-s390x': 0.33.2 + '@img/sharp-linux-x64': 0.33.2 + '@img/sharp-linuxmusl-arm64': 0.33.2 + '@img/sharp-linuxmusl-x64': 0.33.2 + '@img/sharp-wasm32': 0.33.2 + '@img/sharp-win32-ia32': 0.33.2 + '@img/sharp-win32-x64': 0.33.2 dev: false /shebang-command@1.2.0: @@ -2841,24 +3401,23 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 - /simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true - /simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - dev: false + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -2866,106 +3425,110 @@ packages: is-arrayish: 0.3.2 dev: false - /simple-update-notifier@1.1.0: - resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} - engines: {node: '>=8.10.0'} - dependencies: - semver: 7.0.0 - dev: true - - /sonic-boom@3.3.0: - resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} + /sonic-boom@3.8.0: + resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} dependencies: atomic-sleep: 1.0.0 - dev: false + + /source-map-js@1.1.0: + resolution: {integrity: sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==} + engines: {node: '>=0.10.0'} + dev: true /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.17 dev: true - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + /spdx-license-ids@3.0.17: + resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} dev: true /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} - dev: false - /stack-trace@0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - dev: false + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true - /streamx@2.15.5: - resolution: {integrity: sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==} - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - dev: false + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true - /string.prototype.padend@3.1.4: - resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} + /string.prototype.padend@3.1.5: + resolution: {integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 dev: true - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 dev: true /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: false /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: false + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + dependencies: + js-tokens: 8.0.3 + dev: true /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} @@ -2983,182 +3546,150 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: false + dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - dev: false - - /tar-fs@3.0.4: - resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} - dependencies: - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 3.1.6 - dev: false - - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /tar-stream@3.1.6: - resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} dependencies: - b4a: 1.6.4 - fast-fifo: 1.3.2 - streamx: 2.15.5 - dev: false - - /text-hex@1.0.0: - resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - dev: false + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true - /thread-stream@2.3.0: - resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} + /thread-stream@2.4.1: + resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==} dependencies: real-require: 0.2.0 dev: false - /tiny-lru@11.0.1: - resolution: {integrity: sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==} - engines: {node: '>=12'} - dev: false + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + engines: {node: '>=14.0.0'} dev: true - /touch@3.1.0: - resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} - hasBin: true - dependencies: - nopt: 1.0.10 + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: false - /triple-beam@1.3.0: - resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false - /ts-node@10.9.1(@types/node@20.3.1)(typescript@5.1.3): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + /tsx@4.7.1: + resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==} + engines: {node: '>=18.0.0'} hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.3.1 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.1.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 + esbuild: 0.19.12 + get-tsconfig: 4.7.3 + optionalDependencies: + fsevents: 2.3.3 dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true - /tslib@2.5.3: - resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} - dev: false + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} dependencies: - safe-buffer: 5.2.1 - dev: false + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + /typed-array-length@1.0.5: + resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.10 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 dev: true - /typescript@5.1.3: - resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} hasBin: true dev: true - /uid@2.0.2: - resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} - engines: {node: '>=8'} - dependencies: - '@lukeed/csprng': 1.1.0 - dev: false + /ufo@1.5.2: + resolution: {integrity: sha512-eiutMaL0J2MKdhcOM1tUy13pIrYnyR87fEd8STJQFrrAwImwvlXkxlZEjaKah8r2viPohld08lt73QfLG1NxMg==} + dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 dev: true - /undefsafe@2.0.5: - resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.0 - dev: false - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: false - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 dev: true /validate-npm-package-license@3.0.4: @@ -3168,21 +3699,118 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /validator@13.9.0: - resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} - engines: {node: '>= 0.10'} - dev: false + /vite-node@1.4.0(@types/node@20.11.29): + resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.6(@types/node@20.11.29) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false + /vite@5.1.6(@types/node@20.11.29): + resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.11.29 + esbuild: 0.19.12 + postcss: 8.4.36 + rollup: 4.13.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + /vitest@1.4.0(@types/node@20.11.29): + resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.4.0 + '@vitest/ui': 1.4.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false + '@types/node': 20.11.29 + '@vitest/expect': 1.4.0 + '@vitest/runner': 1.4.0 + '@vitest/snapshot': 1.4.0 + '@vitest/spy': 1.4.0 + '@vitest/utils': 1.4.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.8 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.1.6(@types/node@20.11.29) + vite-node: 1.4.0(@types/node@20.11.29) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -3194,16 +3822,15 @@ packages: is-symbol: 1.0.4 dev: true - /which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 + has-tostringtag: 1.0.2 dev: true /which@1.3.1: @@ -3221,41 +3848,36 @@ packages: isexe: 2.0.0 dev: true - /winston-transport@4.5.0: - resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==} - engines: {node: '>= 6.4.0'} - dependencies: - logform: 2.5.1 - readable-stream: 3.6.2 - triple-beam: 1.3.0 - dev: false - - /winston@3.9.0: - resolution: {integrity: sha512-jW51iW/X95BCW6MMtZWr2jKQBP4hV5bIDq9QrIjfDk6Q9QuxvTKEAlpUNAzP+HYHFFCeENhph16s0zEunu4uuQ==} - engines: {node: '>= 12.0.0'} + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true dependencies: - '@colors/colors': 1.5.0 - '@dabh/diagnostics': 2.0.3 - async: 3.2.4 - is-stream: 2.0.1 - logform: 2.5.1 - one-time: 1.0.0 - readable-stream: 3.6.2 - safe-stable-stringify: 2.4.3 - stack-trace: 0.0.10 - triple-beam: 1.3.0 - winston-transport: 4.5.0 - dev: false + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false + dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: false - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} dev: true + + /zod-ff@1.4.0(zod@3.22.4): + resolution: {integrity: sha512-S8ugA4jMWWddU+0tECg06a1Ook/AzHr8HRTF9fs6NkDCGSvk0cfvyVnkKvKVeEWiC4csxjssbN688FVMmHZkZA==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.22.4 + dependencies: + zod: 3.22.4 + dev: false + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false diff --git a/src/allow_list.guard.ts b/src/allow_list.guard.ts deleted file mode 100644 index e35775c..0000000 --- a/src/allow_list.guard.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { CanActivate, ExecutionContext, UnauthorizedException } from "@nestjs/common"; -import { LoggerService } from "./services/logger.service.js"; - -export class AllowListGuard implements CanActivate { - private readonly allowedHosts?: string[]; - - constructor(private readonly logger: LoggerService, allowList?: string) { - this.allowedHosts = this.formatAllowList(allowList); - } - - canActivate(context: ExecutionContext) { - if (this.allowedHosts === undefined) { - return true; - } - - const req = context.switchToHttp().getRequest(); - - let url: URL; - try { - url = new URL(req.query.url); - } catch (e) { - throw new UnauthorizedException("invalid url requested"); - } - - const isValidDomain = this.allowedHosts.includes(url.host); - - this.logger.debug(`isValidDomain: ${isValidDomain}`); - this.logger.debug(`requested host: ${url.host}`); - this.logger.debug(`allowed hosts: ${this.allowedHosts.toString()}`); - - if (!isValidDomain) { - throw new UnauthorizedException("invalid url requested"); - } - - return true; - } - - formatAllowList(allowList?: string): undefined | string[] { - if (allowList === undefined || allowList === "") return; - return allowList - .split(",") - .map((url) => url.trim()) - .map((url) => url.replace(/https?:\/\//g, "")) - .map((url) => `http://${url}`) - .map((url) => new URL(url)) - .map((url) => url.host); - } -} diff --git a/src/app.module.ts b/src/app.module.ts deleted file mode 100644 index 23a240b..0000000 --- a/src/app.module.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { Module } from "@nestjs/common"; -import { APP_GUARD } from "@nestjs/core"; -import { S3Client } from "@aws-sdk/client-s3"; -import { Options } from "generic-pool"; -import nano from "nano"; - -import { AppController } from "./controllers/app.controller.js"; -import { createBrowserPool } from "./browser-pool.js"; -import { ImageRenderService, WaitForOptions } from "./services/image-render.service.js"; -import { IImageStorage, ImageStorageService } from "./services/image-storage.service.js"; -import { AmazonS3StorageProvider } from "./storage/amazon-s3-storage.provider.js"; -import { CouchDbStorageProvider } from "./storage/couch-db-storage.provider.js"; -import { StubStorageProvider } from "./storage/stub-storage.provider.js"; -import { winstonLogger } from "./winston-logger.js"; -import { AllowListGuard } from "./allow_list.guard.js"; -import { LoggerService } from "./services/logger.service.js"; -import { FileSystemStorageProvider } from "./storage/file-system-storage.provider.js"; - -const imageStorageService = { - provide: ImageStorageService, - async useFactory() { - let imageStorage: IImageStorage; - - switch (process.env.STORAGE_PROVIDER) { - case "s3": - const accessKeyId = process.env.AWS_ACCESS_KEY_ID ?? process.env.AWS_ACCESS_KEY!; - const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY ?? process.env.AWS_SECRET_KEY!; - const region = process.env.AWS_DEFAULT_REGION ?? process.env.AWS_REGION!; - - imageStorage = new AmazonS3StorageProvider( - new S3Client({ - region, - endpoint: process.env.AWS_ENDPOINT_URL_S3!, - credentials: { - accessKeyId, - secretAccessKey, - }, - }), - process.env.AWS_BUCKET!, - ); - break; - case "couchdb": - const protocol = process.env.COUCH_DB_PROTOCOL; - const user = process.env.COUCH_DB_USER; - const pass = process.env.COUCH_DB_PASS; - const host = process.env.COUCH_DB_HOST; - const port = process.env.COUCH_DB_PORT; - imageStorage = new CouchDbStorageProvider(nano(`${protocol}://${user}:${pass}@${host}:${port}`)); - break; - case "filesystem": - const filePath = process.env.IMAGE_STORAGE_PATH!; - imageStorage = new FileSystemStorageProvider(filePath, winstonLogger); - break; - default: - imageStorage = new StubStorageProvider(winstonLogger); - } - - console.log(imageStorage.constructor.name) - - return new ImageStorageService(imageStorage); - }, -}; - -const imageRenderService = { - provide: ImageRenderService, - useFactory: (logger: LoggerService) => { - const isValidInteger = (sample: any) => Number.isInteger(Number(sample)); - const opts: Options = {}; - - if (isValidInteger(process.env.POOLS_MAX)) { - opts.max = Number(process.env.POOLS_MAX); - } - - if (isValidInteger(process.env.POOLS_MIN)) { - opts.min = Number(process.env.POOLS_MIN); - } - - if (isValidInteger(process.env.POOLS_MAX_WAITING)) { - opts.maxWaitingClients = Number(process.env.POOLS_MAX_WAITING); - } - - if (isValidInteger(process.env.POOLS_MAX)) { - opts.max = Number(process.env.POOLS_MAX); - } - - const navigationOptions: Partial = {}; - switch (process.env.BROWSER_WAIT_UNTIL) { - case "load": - case "domcontentloaded": - case "networkidle": - navigationOptions.waitUntil = process.env.BROWSER_WAIT_UNTIL; - break; - } - - if (isValidInteger(process.env.BROWSER_TIMEOUT)) { - navigationOptions.timeout = Number(process.env.BROWSER_TIMEOUT); - } - - const browserPool = createBrowserPool(opts); - return new ImageRenderService(browserPool, logger, navigationOptions); - }, - inject: [LoggerService], -}; - -const loggerService = { - provide: LoggerService, - useValue: winstonLogger, -}; - -const allowListGuard = { - provide: APP_GUARD, - useFactory: (logger: LoggerService) => new AllowListGuard(logger, process.env.ALLOW_LIST), - inject: [LoggerService], -}; - -@Module({ - imports: [], - controllers: [AppController], - providers: [imageRenderService, imageStorageService, loggerService, allowListGuard], -}) -export class ApplicationModule {} diff --git a/src/app.ts b/src/app.ts new file mode 100644 index 0000000..c29b7c4 --- /dev/null +++ b/src/app.ts @@ -0,0 +1,65 @@ +import { StringEncrypter } from "@jmondi/string-encrypt-decrypt"; +import { Hono } from "hono"; +import { secureHeaders } from "hono/secure-headers"; +import { StatusCode } from "hono/utils/http-status"; + +import { BrowserPool } from "./lib/browser_pool.js"; +import { ImageRenderInterface } from "./lib/image_render.js"; +import { logger } from "./lib/logger.js"; +import { PlainConfigSchema } from "./lib/schema.js"; +import { ImageStorage } from "./lib/storage/_base.js"; +import { formatAllowList } from "./lib/utils.js"; +import { handleAllowListMiddleware } from "./middlewares/allow_list.js"; +import { handleExtractQueryParamsMiddleware } from "./middlewares/extract_query_params.js"; +import { getIndex } from "./routes/index.js"; + +export type Variables = { + input: PlainConfigSchema; + imageId: string; +}; +export type AppEnv = { Variables: Variables }; + +export function createApplication( + browserPool: BrowserPool, + imageRenderService: ImageRenderInterface, + imageStorageService: ImageStorage, + stringEncrypter?: StringEncrypter, +) { + const app = new Hono(); + + app.use( + secureHeaders({ + crossOriginResourcePolicy: "cross-origin", + }), + ); + + if (process.env.METRICS === "true") { + app.get("/metrics", c => + c.json({ + poolMetrics: browserPool.poolMetrics, + }), + ); + } + + app.get("/ping", c => c.json("pong")); + + app.onError((err, c) => { + let status: StatusCode = 500; + if ("status" in err && typeof err.status === "number") { + status = err.status as StatusCode; + } + return c.json({ message: err.message }, status); + }); + + app.use("/*", handleExtractQueryParamsMiddleware(stringEncrypter)); + + if (process.env.ALLOW_LIST && process.env.ALLOW_LIST.trim() !== "") { + const allowList = formatAllowList(process.env.ALLOW_LIST); + logger.info(`Allowed Domains: ${allowList.join(", ")}`); + app.use("/*", handleAllowListMiddleware(allowList)); + } + + app.get("/", getIndex(imageStorageService, imageRenderService)); + + return app; +} diff --git a/src/browser-pool.ts b/src/browser-pool.ts deleted file mode 100644 index 66abee3..0000000 --- a/src/browser-pool.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as genericPool from "generic-pool"; -import { Factory, Options } from "generic-pool"; -import { chromium, Browser } from "playwright"; - -const factory: Factory = { - async create(): Promise { - return await chromium.launch({ - args: ["--no-sandbox", "--disable-setuid-sandbox"], - }); - }, - async destroy(browser: Browser) { - await browser.close(); - }, -}; - -export function createBrowserPool(opts: Options = {}) { - opts = { - max: 10, - min: 2, - maxWaitingClients: 50, - idleTimeoutMillis: 15000, - ...opts, - }; - return genericPool.createPool(factory, opts); -} diff --git a/src/config.api.ts b/src/config.api.ts deleted file mode 100644 index 3705824..0000000 --- a/src/config.api.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { IsBooleanString, IsNumberString, IsOptional, IsUrl } from "class-validator"; - -export interface IConfigAPI { - width?: number; - height?: number; - viewPortWidth?: number; - viewPortHeight?: number; - isMobile?: boolean; - isFullPage?: boolean; - isDarkMode?: boolean; - deviceScaleFactor?: number; -} - -export class ConfigApi implements IConfigAPI { - @IsUrl() - public readonly url!: string; - - @IsOptional() - @IsBooleanString() - public readonly forceReload?: boolean; - - @IsOptional() - @IsNumberString() - public readonly width?: number; - - @IsOptional() - @IsNumberString() - public readonly height?: number; - - @IsOptional() - @IsNumberString() - public readonly viewPortHeight?: number; - - @IsOptional() - @IsNumberString() - public readonly viewPortWidth?: number; - - @IsOptional() - @IsBooleanString() - public readonly isMobile?: boolean; - - @IsOptional() - @IsBooleanString() - public readonly isFullPage?: boolean; - - @IsOptional() - @IsBooleanString() - public readonly isDarkMode?: boolean; - - @IsOptional() - @IsNumberString() - public readonly deviceScaleFactor?: number; -} diff --git a/src/controllers/app.controller.ts b/src/controllers/app.controller.ts deleted file mode 100644 index ea86dc5..0000000 --- a/src/controllers/app.controller.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { Controller, Get, HttpException, HttpStatus, Query, Res } from "@nestjs/common"; - -import { ConfigApi, IConfigAPI } from "../config.api.js"; -import { ImageRenderService } from "../services/image-render.service.js"; -import { ImageStorageService } from "../services/image-storage.service.js"; -import { LoggerService } from "../services/logger.service.js"; -import { FastifyReply } from "fastify"; - -@Controller() -export class AppController { - constructor( - private readonly imageStorageService: ImageStorageService, - private readonly imageRenderService: ImageRenderService, - private readonly loggerService: LoggerService, - ) { - } - - @Get() - public async root(@Res() response: FastifyReply, @Query() query: ConfigApi) { - const config: IConfigAPI = {}; - let forceReload = false; - - if (query.width) { - config.width = Number(query.width); - if (config.width > 1920) { - config.width = 1920; - } - } - - if (query.height) { - config.height = Number(query.height); - if (config.height > 1920) { - config.width = 1920; - } - } - - if (query.viewPortWidth) { - config.viewPortWidth = Number(query.viewPortWidth); - if (config.viewPortWidth > 1920) { - config.width = 1920; - } - } - - if (query.viewPortHeight) { - config.viewPortHeight = Number(query.viewPortHeight); - if (config.viewPortHeight > 1920) { - config.width = 1920; - } - } - - if (query.isFullPage) { - config.isFullPage = true; - } - - if (query.isMobile) { - config.isMobile = true; - } - - if (query.isDarkMode) { - config.isDarkMode = true; - } - - if (query.forceReload) { - forceReload = true; - } - - if (query.deviceScaleFactor) { - config.deviceScaleFactor = Number(query.deviceScaleFactor); - } - - - const date = new Date(); - const dateString = date.toLocaleDateString().replace(/\//g, "-"); - const imageId = dateString + "." + this.slugify(query.url) + this.configToString(config); - - console.log(this.imageStorageService, this.loggerService); - let imageBuffer: any = await this.imageStorageService.fetchImage(imageId); - - if (imageBuffer === null || forceReload) { - try { - imageBuffer = await this.imageRenderService.screenshot(query.url, config); - } catch (err) { - this.loggerService.error("Error rendering image", err); - return this.errorMessage(err as Error); - } - - try { - await this.imageStorageService.storeImage(imageId, imageBuffer); - } catch (err) { - this.loggerService.error("Error storing image", err); - } - } - - response.header("Content-Type", "image/png").send(imageBuffer); - return; - } - - protected errorMessage(err: Error) { - throw new HttpException( - { - name: err.name, - message: err.message, - stack: err.stack, - }, - HttpStatus.INTERNAL_SERVER_ERROR, - ); - } - - private configToString(configAPI: IConfigAPI) { - return Object.entries(configAPI) - .map(([key, value]) => `_${key}-${value}`) - .reduce((prev, next) => `${prev}${next}`, ""); - } - - private slugify(text: string) { - return text - .toString() - .toLowerCase() - .replace(/\s+/g, "-") // Replace spaces with - - .replace(/[^\w\-]+/g, "") // Remove all non-word chars - .replace(/\-\-+/g, "-") // Replace multiple - with single - - .replace(/^-+/, "") // Trim - from start of text - .replace(/-+$/, ""); // Trim - from end of text - } -} diff --git a/src/lib/browser_pool.ts b/src/lib/browser_pool.ts new file mode 100644 index 0000000..e3cb7d2 --- /dev/null +++ b/src/lib/browser_pool.ts @@ -0,0 +1,71 @@ +import * as genericPool from "generic-pool"; +import { Factory, Options } from "generic-pool"; +import { Browser, chromium } from "playwright"; +import { logger } from "./logger.js"; + +type BrowserPoolConstructorArgs = { + poolOpts: Options; + browserOpts?: never; +}; + +export type PoolMetrics = { + spareResourceCapacity: number; + size: number; + available: number; + borrowed: number; + pending: number; + max: number; + min: number; +}; + +export class BrowserPool { + private pool: genericPool.Pool; + + private factory: Factory = { + async create(): Promise { + return await chromium.launch({ + args: ["--no-sandbox", "--disable-setuid-sandbox"], + }); + }, + async destroy(browser: Browser) { + await browser.close(); + }, + }; + + constructor({ poolOpts }: BrowserPoolConstructorArgs = {} as BrowserPoolConstructorArgs) { + poolOpts = { + max: 10, + min: 2, + maxWaitingClients: 50, + idleTimeoutMillis: 15000, + ...poolOpts, + }; + logger.info(poolOpts); + this.pool = genericPool.createPool(this.factory, poolOpts); + } + + get poolMetrics(): PoolMetrics { + return { + spareResourceCapacity: this.pool.spareResourceCapacity, + size: this.pool.size, + available: this.pool.available, + borrowed: this.pool.borrowed, + pending: this.pool.pending, + max: this.pool.max, + min: this.pool.min, + }; + } + + async acquire(): Promise { + return await this.pool.acquire(); + } + + async release(browser: Browser): Promise { + await this.pool.release(browser); + } + + async drain() { + await this.pool.drain(); + await this.pool.clear(); + } +} diff --git a/src/lib/factory.ts b/src/lib/factory.ts new file mode 100644 index 0000000..e0fdbf6 --- /dev/null +++ b/src/lib/factory.ts @@ -0,0 +1,90 @@ +import { S3Client } from "@aws-sdk/client-s3"; +import { Options } from "generic-pool"; +import nano from "nano"; + +import { BrowserPool } from "./browser_pool.js"; +import { ImageRenderService, WaitForOptions } from "./image_render.js"; +import { logger } from "./logger.js"; +import { ImageStorage } from "./storage/_base.js"; +import { CouchDbStorageProvider } from "./storage/couch-db.js"; +import { FileSystemStorageProvider } from "./storage/filesystem.js"; +import { AmazonS3StorageProvider } from "./storage/s3.js"; +import { StubStorageProvider } from "./storage/stub.js"; + +export function createBrowserPool() { + const opts: Options = {}; + + if (Number.isInteger(Number(process.env.POOLS_MAX))) { + opts.max = Number(process.env.POOLS_MAX); + } + + if (Number.isInteger(Number(process.env.POOLS_MIN))) { + opts.min = Number(process.env.POOLS_MIN); + } + + if (Number.isInteger(Number(process.env.POOLS_MAX_WAITING))) { + opts.maxWaitingClients = Number(process.env.POOLS_MAX_WAITING); + } + + if (Number.isInteger(Number(process.env.POOLS_MAX))) { + opts.max = Number(process.env.POOLS_MAX); + } + + return new BrowserPool({ poolOpts: opts }); +} + +export function createImageRenderService(browserPool: BrowserPool) { + const navigationOptions: Partial = {}; + switch (process.env.BROWSER_WAIT_UNTIL) { + case "load": + case "domcontentloaded": + case "networkidle": + navigationOptions.waitUntil = process.env.BROWSER_WAIT_UNTIL; + break; + } + + if (Number.isInteger(Number(process.env.BROWSER_TIMEOUT))) { + navigationOptions.timeout = Number(process.env.BROWSER_TIMEOUT); + } + + return new ImageRenderService(browserPool, navigationOptions); +} + +export function createImageStorageService(): ImageStorage { + let imageStorage: ImageStorage; + switch (process.env.STORAGE_PROVIDER) { + case "s3": + imageStorage = new AmazonS3StorageProvider( + new S3Client({ + region: process.env.AWS_DEFAULT_REGION!, + endpoint: process.env.AWS_ENDPOINT_URL_S3!, + credentials: { + accessKeyId: process.env.AWS_ACCESS_KEY_ID!, + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!, + }, + }), + process.env.AWS_BUCKET!, + ); + break; + case "couchdb": + const protocol = process.env.COUCH_DB_PROTOCOL; + const user = process.env.COUCH_DB_USER; + const pass = process.env.COUCH_DB_PASS; + const host = process.env.COUCH_DB_HOST; + const port = process.env.COUCH_DB_PORT; + imageStorage = new CouchDbStorageProvider( + nano(`${protocol}://${user}:${pass}@${host}:${port}`), + ); + break; + case "filesystem": + const filePath = process.env.IMAGE_STORAGE_PATH!; + imageStorage = new FileSystemStorageProvider(filePath); + break; + default: + imageStorage = new StubStorageProvider(); + } + + logger.info(imageStorage.constructor.name); + + return imageStorage; +} diff --git a/src/services/image-render.service.ts b/src/lib/image_render.ts similarity index 56% rename from src/services/image-render.service.ts rename to src/lib/image_render.ts index eb4f7a9..51965ea 100644 --- a/src/services/image-render.service.ts +++ b/src/lib/image_render.ts @@ -1,23 +1,23 @@ -import { Injectable, OnApplicationShutdown } from "@nestjs/common"; -import { Pool } from "generic-pool"; -import { Browser } from "playwright"; import sharp from "sharp"; -import { IConfigAPI } from "../config.api.js"; -import { LoggerService } from "./logger.service.js"; +import { BrowserPool } from "./browser_pool.js"; +import { logger } from "./logger.js"; +import { IConfigAPI } from "./schema.js"; export type WaitForOptions = { timeout: number; waitUntil: "load" | "domcontentloaded" | "networkidle"; }; -@Injectable() -export class ImageRenderService implements OnApplicationShutdown { +export interface ImageRenderInterface { + screenshot(url: string, config: IConfigAPI): Promise; +} + +export class ImageRenderService implements ImageRenderInterface { private readonly NAV_OPTIONS: WaitForOptions; constructor( - private readonly browserPool: Pool, - private readonly logger: LoggerService, + private readonly browserPool: BrowserPool, navigationOptions: Partial, ) { this.NAV_OPTIONS = { @@ -25,16 +25,11 @@ export class ImageRenderService implements OnApplicationShutdown { timeout: 10000, ...navigationOptions, }; - this.logger.debug(`navigation options ${JSON.stringify(this.NAV_OPTIONS)}`); - } - - async onApplicationShutdown(signal: string) { - this.logger.info(`received signal ${signal}, draining browserPool`); - await this.browserPool.drain(); - await this.browserPool.clear(); + logger.debug(`navigation options`); + logger.debug(this.NAV_OPTIONS); } - public async screenshot(url: string, config: IConfigAPI = {}): Promise { + public async screenshot(url: string, config: IConfigAPI = {}): Promise { config = { viewPortWidth: 1080, viewPortHeight: 1080, @@ -45,8 +40,6 @@ export class ImageRenderService implements OnApplicationShutdown { ...config, }; - this.logger.debug(JSON.stringify(config)); - if (!config.width && !config.height) { config.width = 250; @@ -56,27 +49,28 @@ export class ImageRenderService implements OnApplicationShutdown { } const browser = await this.browserPool.acquire(); + try { const page = await browser.newPage({ viewport: { width: config.viewPortWidth!, height: config.viewPortHeight!, }, - isMobile: config.isMobile, + isMobile: !!config.isMobile, colorScheme: config.isDarkMode ? "dark" : "light", - deviceScaleFactor: config.deviceScaleFactor, + deviceScaleFactor: config.deviceScaleFactor ?? 1, }); - let image: Buffer; - try { await page.goto(url, this.NAV_OPTIONS); - const screenshot = await page.screenshot({ fullPage: config.isFullPage }); - image = await this.resize(screenshot, config.width!, config.height!); + return await this.resize( + await page.screenshot({ fullPage: !!config.isFullPage }), + config.width ?? 1000, + config.height ?? 1000, + ); } finally { await page.close(); } - return image ?? false; } finally { await this.browserPool.release(browser); } diff --git a/src/lib/logger.ts b/src/lib/logger.ts new file mode 100644 index 0000000..8dad5e7 --- /dev/null +++ b/src/lib/logger.ts @@ -0,0 +1,9 @@ +import { Logger, pino } from "pino"; + +let level: string = process.env.LOG_LEVEL ?? "info"; + +if (process.env.NODE_ENV === "test") { + level = "warn"; +} + +export const logger: Logger = pino({ name: "url-to-png", level }); diff --git a/src/lib/schema.ts b/src/lib/schema.ts new file mode 100644 index 0000000..7321b2b --- /dev/null +++ b/src/lib/schema.ts @@ -0,0 +1,25 @@ +import { z } from "zod"; + +// https://github.com/colinhacks/zod/issues/2985#issuecomment-1905652037 +const zodStringBool = z + .string() + .toLowerCase() + .transform(x => x === "true") + .pipe(z.boolean()); + +export const PlainConfigSchema = z.object({ + url: z.string().url(), + width: z.coerce.number().nullish(), + height: z.coerce.number().nullish(), + viewPortWidth: z.coerce.number().nullish(), + viewPortHeight: z.coerce.number().nullish(), + forceReload: zodStringBool.nullish(), + isMobile: zodStringBool.nullish(), + isFullPage: zodStringBool.nullish(), + isDarkMode: zodStringBool.nullish(), + deviceScaleFactor: z.coerce.number().nullish(), +}); +export type PlainConfigSchema = z.infer; +export const HashSchema = z.string().startsWith("str-enc:"); + +export type IConfigAPI = Omit; diff --git a/src/lib/storage/_base.ts b/src/lib/storage/_base.ts new file mode 100644 index 0000000..96430d7 --- /dev/null +++ b/src/lib/storage/_base.ts @@ -0,0 +1,4 @@ +export interface ImageStorage { + fetchImage(imageId: string): Promise; + storeImage(imageId: string, image: Buffer): Promise; +} diff --git a/src/storage/couch-db-storage.provider.ts b/src/lib/storage/couch-db.ts similarity index 79% rename from src/storage/couch-db-storage.provider.ts rename to src/lib/storage/couch-db.ts index 4eefaac..c5a2247 100644 --- a/src/storage/couch-db-storage.provider.ts +++ b/src/lib/storage/couch-db.ts @@ -1,11 +1,9 @@ -import { Injectable } from "@nestjs/common"; import md5 from "md5"; import couchDBNano from "nano"; -import { IImageStorage } from "../services/image-storage.service.js"; +import { ImageStorage } from "./_base.js"; -@Injectable() -export class CouchDbStorageProvider implements IImageStorage { +export class CouchDbStorageProvider implements ImageStorage { constructor(private readonly couchDB: couchDBNano.ServerScope) {} get images() { diff --git a/src/lib/storage/filesystem.ts b/src/lib/storage/filesystem.ts new file mode 100644 index 0000000..1b9df39 --- /dev/null +++ b/src/lib/storage/filesystem.ts @@ -0,0 +1,47 @@ +import * as fs from "fs/promises"; +import * as path from "path"; +import { logger } from "../logger.js"; + +import { ImageStorage } from "./_base.js"; + +export class FileSystemStorageProvider implements ImageStorage { + constructor(private readonly storagePath: string) { + this.createStorageDirectory().then(); + } + + async fetchImage(imageId: string): Promise { + const imagePath = this.imagePath(imageId); + try { + return await fs.readFile(imagePath); + } catch (error) { + logger.error(`Error fetching image: ${imagePath}:`, error); + return null; + } + } + + async storeImage(imageId: string, image: Buffer): Promise { + const imagePath = this.imagePath(imageId); + try { + await fs.writeFile(imagePath, image); + return true; + } catch (error) { + logger.error(`Error storing image ${imagePath}:`, error); + return false; + } + } + + private imagePath(imageId: string) { + return path.join(this.storagePath, imageId) + ".png"; + } + + private async createStorageDirectory(): Promise { + try { + await fs.access(this.storagePath); + logger.info(`storage directory FOUND: ${this.storagePath}:`); + } catch { + await fs.mkdir(this.storagePath, { recursive: true }); + logger.info(`storage directory NOT FOUND`); + logger.info(`creating directory: ${this.storagePath}:`); + } + } +} diff --git a/src/storage/amazon-s3-storage.provider.ts b/src/lib/storage/s3.ts similarity index 57% rename from src/storage/amazon-s3-storage.provider.ts rename to src/lib/storage/s3.ts index 8da208d..22e3cbc 100644 --- a/src/storage/amazon-s3-storage.provider.ts +++ b/src/lib/storage/s3.ts @@ -1,8 +1,12 @@ -import { S3Client, GetObjectCommand, PutObjectCommand } from "@aws-sdk/client-s3"; -import { IImageStorage } from "../services/image-storage.service.js"; +import { GetObjectCommand, PutObjectCommand, S3Client } from "@aws-sdk/client-s3"; +import { logger } from "../logger.js"; +import { ImageStorage } from "./_base.js"; -export class AmazonS3StorageProvider implements IImageStorage { - constructor(private readonly s3: S3Client, private readonly BUCKET_NAME: string) {} +export class AmazonS3StorageProvider implements ImageStorage { + constructor( + private readonly s3: S3Client, + private readonly BUCKET_NAME: string, + ) {} public async fetchImage(imageId: string) { const params = new GetObjectCommand({ @@ -11,10 +15,14 @@ export class AmazonS3StorageProvider implements IImageStorage { }); try { const response = await this.s3.send(params); - return response.Body; - } catch(e) { - return null; + const body = response.Body; + if (body instanceof Uint8Array) { + return Buffer.from(body); + } + } catch (e) { + logger.error(e); } + return null; } public async storeImage(imageId: string, image: Buffer) { diff --git a/src/lib/storage/stub.ts b/src/lib/storage/stub.ts new file mode 100644 index 0000000..f1de63e --- /dev/null +++ b/src/lib/storage/stub.ts @@ -0,0 +1,14 @@ +import { logger } from "../logger.js"; +import { ImageStorage } from "./_base.js"; + +export class StubStorageProvider implements ImageStorage { + async fetchImage(imageId: string): Promise { + logger.debug(`Stub fetch image: ${imageId}`); + return null; + } + + async storeImage(imageId: string): Promise { + logger.debug(`Stub store image: ${imageId}`); + return true; + } +} diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..a91df2d --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,26 @@ +export function formatAllowList(allowList: string): string[] { + return allowList.split(",").map(url => { + url = url.trim().replace(/https?:\/\//g, ""); + return new URL(`http://${url}`).host; + }); +} + +export function configToString(configAPI: URLSearchParams) { + let result = ""; + for (const [key, value] of configAPI) { + if (key === "url") continue; + result += `_${key}-${value}`; + } + return result; +} + +export function slugify(text: string) { + return text + .toString() + .toLowerCase() + .replace(/\s+/g, "-") // Replace spaces with - + .replace(/[^\w\-]+/g, "") // Remove all non-word chars + .replace(/\-\-+/g, "-") // Replace multiple - with single - + .replace(/^-+/, "") // Trim - from start of text + .replace(/-+$/, ""); // Trim - from end of text +} diff --git a/src/main.ts b/src/main.ts index ebd1603..178b591 100755 --- a/src/main.ts +++ b/src/main.ts @@ -1,41 +1,71 @@ -import helmet from "@fastify/helmet"; -import rateLimit from "@fastify/rate-limit"; -import { NestFactory } from "@nestjs/core"; -import { ValidationPipe } from "@nestjs/common"; -import { FastifyAdapter, NestFastifyApplication } from "@nestjs/platform-fastify"; +import "dotenv/config"; -import { ApplicationModule } from "./app.module.js"; -import { winstonLogger } from "./winston-logger.js"; +import { serve } from "@hono/node-server"; +import { StringEncrypter } from "@jmondi/string-encrypt-decrypt"; +import { createApplication } from "./app.js"; +import { BrowserPool } from "./lib/browser_pool.js"; +import { + createBrowserPool, + createImageRenderService, + createImageStorageService, +} from "./lib/factory.js"; +import { logger } from "./lib/logger.js"; if (process.env.AWS_ACCESS_KEY) { - console.warn("AWS_ACCESS_KEY is deprecated, please use AWS_ACCESS_KEY_ID"); + logger.warn("AWS_ACCESS_KEY is deprecated, please use AWS_ACCESS_KEY_ID"); } if (process.env.AWS_SECRET_KEY) { - console.warn("AWS_SECRET_KEY is deprecated, please use AWS_SECRET_ACCESS_KEY"); + logger.warn("AWS_SECRET_KEY is deprecated, please use AWS_SECRET_ACCESS_KEY"); } if (process.env.AWS_REGION) { - console.warn("AWS_REGION is deprecated, please use AWS_DEFAULT_REGION"); + logger.warn("AWS_REGION is deprecated, please use AWS_DEFAULT_REGION"); } -async function bootstrap() { - const app = await NestFactory.create(ApplicationModule, new FastifyAdapter(), { - logger: winstonLogger, - }); +let server: ReturnType; + +async function main() { + const encryptionService = process.env.CRYPTO_KEY + ? await StringEncrypter.fromCryptoString(process.env.CRYPTO_KEY) + : undefined; + + const imageStorageService = createImageStorageService(); + + const browserPool: BrowserPool = createBrowserPool(); - app.useGlobalPipes(new ValidationPipe()); - app.enableShutdownHooks(); + const imageRenderService = createImageRenderService(browserPool); - await app.register(rateLimit as any, { max: 100, timeWindow: "1 minute" }); - await app.register(helmet as any, { contentSecurityPolicy: false }); + const app = createApplication( + browserPool, + imageRenderService, + imageStorageService, + encryptionService, + ); + + const port = Number(process.env.PORT) || 3089; + server = serve({ fetch: app.fetch, port }); + + process.on("SIGINT", async () => { + logger.info("Playwright Shutdown [STARTING]"); + logger.info("Playwright Shutdown [DONE]"); + logger.info("Server Shutdown [STARTING]"); + server?.close(); + await browserPool.drain(); + logger.info("Server Shutdown [DONE]"); + logger.info("EXITING..."); + process.exit(0); + }); - await app.listen(3000, "0.0.0.0"); + logger.info(`Server is running on port http://localhost:${port}/ping`); + if (process.env.NODE_ENV === "development") { + logger.info(`http://localhost:${port}/?url=https://jasonraimondi.com/resume&isFullPage=true`); + } } -bootstrap() +main() .then() - .catch((err) => { - winstonLogger.error(JSON.stringify(err)); + .catch(err => { + logger.error(err); }); diff --git a/src/middlewares/allow_list.ts b/src/middlewares/allow_list.ts new file mode 100644 index 0000000..04891b7 --- /dev/null +++ b/src/middlewares/allow_list.ts @@ -0,0 +1,19 @@ +import { Context } from "hono"; +import { HTTPException } from "hono/http-exception"; + +import { AppEnv } from "../app.js"; +import { logger } from "../lib/logger.js"; + +export function handleAllowListMiddleware(allowList: string[]) { + return async (c: Context, next: () => Promise) => { + const input = c.get("input"); + const isValidDomain = allowList.includes(new URL(input.url).host); + + if (!isValidDomain) { + logger.warn(`Blocked request to ${input.url} - not in allowlist`); + throw new HTTPException(400, { message: "Invalid URL Requested" }); + } + + await next(); + }; +} diff --git a/src/middlewares/extract_query_params.ts b/src/middlewares/extract_query_params.ts new file mode 100644 index 0000000..a216c9e --- /dev/null +++ b/src/middlewares/extract_query_params.ts @@ -0,0 +1,64 @@ +import { StringEncrypter } from "@jmondi/string-encrypt-decrypt"; +import { Context } from "hono"; +import { HTTPException } from "hono/http-exception"; +import { parseForm } from "zod-ff"; + +import { AppEnv } from "../app.js"; + +import { PlainConfigSchema } from "../lib/schema.js"; +import { configToString, slugify } from "../lib/utils.js"; + +export function handleExtractQueryParamsMiddleware(encryptionService?: StringEncrypter) { + return async (c: Context, next: () => Promise) => { + const params = new URL(c.req.url).searchParams; + let input: PlainConfigSchema | URLSearchParams; + + if (params.has("hash")) { + if (!encryptionService) { + throw new HTTPException(400, { message: "This server is not configured for encryption" }); + } + const hash = params.get("hash"); + if (typeof hash !== "string" || !hash.startsWith("str-enc:")) { + throw new HTTPException(400, { message: "Invalid hash" }); + } + const decryptedString = await encryptionService.decrypt(hash); + input = JSON.parse(decryptedString); + } else { + if (encryptionService) { + throw new HTTPException(400, { message: "This server must use encryption" }); + } + input = params; + } + + const { validData, errors } = parseForm({ data: input, schema: PlainConfigSchema }); + + if (errors) { + throw new HTTPException(400, { message: "Invalid query parameters", cause: errors }); + } + + if (validData.width && validData.width > 1920) { + validData.width = 1920; + } + + if (validData.height && validData.height > 1920) { + validData.height = 1920; + } + + if (validData.viewPortWidth && validData.viewPortWidth > 1920) { + validData.width = 1920; + } + + if (validData.viewPortHeight && validData.viewPortHeight > 1920) { + validData.width = 1920; + } + + const date = new Date(); + const dateString = date.toLocaleDateString().replace(/\//g, "-"); + const imageId = dateString + "." + slugify(validData.url) + configToString(params); + + c.set("input", validData); + c.set("imageId", imageId); + + await next(); + }; +} diff --git a/src/routes/index.ts b/src/routes/index.ts new file mode 100644 index 0000000..af49491 --- /dev/null +++ b/src/routes/index.ts @@ -0,0 +1,45 @@ +import { Context } from "hono"; +import { HTTPException } from "hono/http-exception"; + +import { AppEnv } from "../app.js"; +import { ImageRenderInterface } from "../lib/image_render.js"; +import { logger } from "../lib/logger.js"; + +import { ImageStorage } from "../lib/storage/_base.js"; + +export function getIndex( + imageStorageService: ImageStorage, + imageRenderService: ImageRenderInterface, +) { + return async (c: Context) => { + const { url, ...input } = c.get("input"); + const imageId = c.get("imageId"); + + logger.debug({ url, input, imageId }); + + let imageBuffer: Buffer | null = await imageStorageService.fetchImage(imageId); + + if (imageBuffer === null || input.forceReload) { + try { + imageBuffer = await imageRenderService.screenshot(url, input); + } catch (err: any) { + throw new HTTPException(500, { message: err.message }); + } + + try { + await imageStorageService.storeImage(imageId, imageBuffer); + } catch (err) { + logger.error("Error storing image", err); + } + } + + if (imageBuffer === null) { + throw new HTTPException(500, { message: "Error rendering image" }); + } + + return c.body(imageBuffer, 200, { + "Content-Type": "image/png", + // "Cache-Control": "public, max-age=31536000, immutable", + }); + }; +} diff --git a/src/services/image-storage.service.ts b/src/services/image-storage.service.ts deleted file mode 100644 index 4ae5eec..0000000 --- a/src/services/image-storage.service.ts +++ /dev/null @@ -1,16 +0,0 @@ -export interface IImageStorage { - fetchImage(imageId: string): Promise; - storeImage(imageId: string, image: Buffer): Promise; -} - -export class ImageStorageService implements IImageStorage { - constructor(private readonly storageService: IImageStorage) {} - - public async fetchImage(imageId: string): Promise { - return await this.storageService.fetchImage(imageId); - } - - public async storeImage(imageId: string, image: Buffer): Promise { - return await this.storageService.storeImage(imageId, image); - } -} diff --git a/src/services/logger.service.ts b/src/services/logger.service.ts deleted file mode 100644 index d0c8555..0000000 --- a/src/services/logger.service.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { LoggerService as ILoggerService } from "@nestjs/common"; -import { Logger } from "winston"; - -export class LoggerService implements ILoggerService { - constructor(private readonly logger: Logger) {} - - public log(message: string) { - return this.logger.log({ - level: "info", - message, - }); - } - - public debug(message: string) { - return this.logger.debug(message); - } - - public verbose(message: string) { - return this.logger.verbose(message); - } - - public info(message: string) { - return this.log(message); - } - - public warn(message: string) { - return this.logger.warn(message); - } - - public error(message: string, trace?: any) { - return this.logger.error(message, trace); - } -} diff --git a/src/storage/file-system-storage.provider.ts b/src/storage/file-system-storage.provider.ts deleted file mode 100644 index 441ca00..0000000 --- a/src/storage/file-system-storage.provider.ts +++ /dev/null @@ -1,48 +0,0 @@ -import * as fs from "fs/promises"; -import * as path from "path"; - -import { IImageStorage } from "../services/image-storage.service.js"; -import { LoggerService } from "../services/logger.service.js"; - -export class FileSystemStorageProvider implements IImageStorage { - constructor(private readonly storagePath: string, private readonly logger: LoggerService) { - this.createStorageDirectory().then(); - } - - public async fetchImage(imageId: string): Promise { - const imagePath = this.imagePath(imageId); - try { - return await fs.readFile(imagePath); - } catch (error) { - this.logger.error(`Error storing image: ${imagePath}:`, error); - return null; - } - } - - public async storeImage(imageId: string, image: Buffer): Promise { - const imagePath = this.imagePath(imageId); - try { - await fs.writeFile(imagePath, image); - return true; - } catch (error) { - this.logger.error(`Error storing image ${imagePath}:`); - this.logger.error(String(error)); - return false; - } - } - - private imagePath(imageId: string) { - return path.join(this.storagePath, imageId) + ".png"; - } - - private async createStorageDirectory(): Promise { - try { - await fs.access(this.storagePath); - this.logger.info(`storage directory FOUND: ${this.storagePath}:`); - } catch { - await fs.mkdir(this.storagePath, { recursive: true }); - this.logger.info(`storage directory NOT FOUND`); - this.logger.info(`creating directory: ${this.storagePath}:`); - } - } -} diff --git a/src/storage/stub-storage.provider.ts b/src/storage/stub-storage.provider.ts deleted file mode 100644 index 5038d47..0000000 --- a/src/storage/stub-storage.provider.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { IImageStorage } from "../services/image-storage.service.js"; -import { LoggerService } from "../services/logger.service.js"; - -export class StubStorageProvider implements IImageStorage { - constructor(private readonly logger: LoggerService) {} - - public fetchImage(imageId: string): Promise { - this.logger.verbose(`Stub fetch image: ${imageId}`); - return Promise.resolve(null); - } - - public storeImage(imageId: string, _image: Buffer): Promise { - this.logger.verbose(`Stub store image: ${imageId}`); - return Promise.resolve(null); - } -} diff --git a/src/winston-logger.ts b/src/winston-logger.ts deleted file mode 100644 index 6f40c5c..0000000 --- a/src/winston-logger.ts +++ /dev/null @@ -1,27 +0,0 @@ -import * as winston from "winston"; -import * as Transport from "winston-transport"; - -import { LoggerService } from "./services/logger.service.js"; - -const transports: Transport[] = [new winston.transports.Console({ format: winston.format.simple() })]; - -const isNotDocker = !process.env.DOCKER; - -if (isNotDocker) { - transports.push( - new winston.transports.File({ filename: "/tmp/combined.log" }), - new winston.transports.File({ filename: "/tmp/error.log", level: "error" }), - ); -} - -const logger = winston.createLogger({ - level: ["error", "warn", "help", "data", "info", "debug"].includes(process.env.DEBUG ?? "") ? process.env.DEBUG : "info", - format: winston.format.json(), - transports, -}); - -if (process.env.NODE_ENV === "debug") { - logger.level = "debug"; -} - -export const winstonLogger = new LoggerService(logger); diff --git a/tests/app.spec.ts b/tests/app.spec.ts new file mode 100644 index 0000000..e19f2eb --- /dev/null +++ b/tests/app.spec.ts @@ -0,0 +1,92 @@ +import { StringEncrypter } from "@jmondi/string-encrypt-decrypt"; +import type { Hono } from "hono"; +import { it, describe, suite, expect, beforeEach } from "vitest"; + +import { type AppEnv, createApplication } from "../src/app.js"; +import { createBrowserPool, createImageStorageService } from "../src/lib/factory.js"; +import { StubImageRenderService } from "./helpers/stubs.js"; + +suite("app", () => { + let app: Hono; + + const browserPool = createBrowserPool(); + const imageStorageService = createImageStorageService(); + const imageRenderService = new StubImageRenderService(); + + beforeEach(() => { + app = createApplication(browserPool, imageRenderService, imageStorageService); + }); + + describe("GET /ping", () => { + it("success", async () => { + const res = await app.request("/ping"); + expect(res.status).toBe(200); + expect(await res.json()).toBe("pong"); + }); + }); + + describe("GET /metrics", () => { + beforeEach(() => { + process.env.METRICS = "true"; + app = createApplication(browserPool, imageRenderService, imageStorageService); + }); + + it("success", async () => { + const res = await app.request("/metrics"); + expect(res.status).toBe(200); + expect(await res.json()).toStrictEqual({ + poolMetrics: { + available: 0, + borrowed: 0, + max: 10, + min: 2, + pending: 0, + size: 2, + spareResourceCapacity: 8, + }, + }); + }); + }); + + describe("GET /?url=", () => { + it("succeeds with minimal", async () => { + const res = await app.request("/?url=https://google.com"); + expect(res.status).toBe(200); + }); + + it("succeeds with resize", async () => { + const res = await app.request("/?url=https://google.com&width=500&height=500"); + expect(res.status).toBe(200); + }); + + it("throws when invalid domain", async () => { + const res = await app.request("/?url=bar"); + expect(res.status).toBe(400); + expect(await res.text()).toMatch(/Invalid query/ig); + }); + }); + + describe("GET /?hash=", () => { + describe("without CRYPTO_KEY", () => { + it("throws when server is not configured for encryption", async () => { + const res = await app.request("/?hash=str-enc:a/4xkic0kY8scM3QRJIiLLtQ3NhZxEudhmd7RZDbsuuguXkamhZe0HdW9LmnZxtGCtf0GAPO5II85fE8rSkdFNIbBATyS/INKM0hmw==:a4S74z7c4DQVtijl"); + const body = await res.json(); + expect(res.status).toBe(400); + expect(body.message).toMatch(/This server is not configured for encryption/); + }); + }); + + describe("with CRYPTO_KEY", () => { + beforeEach(async () => { + const cryptoKey = '{"kty":"oct","k":"cq8cebOn49gXxcjoRbjP93z4OpzCkyz4WJSgPnvR4ds","alg":"A256GCM","key_ops":["encrypt","decrypt"],"ext":true}'; + const stringEncrypter = await StringEncrypter.fromCryptoString(cryptoKey); + app = createApplication(browserPool, imageRenderService, imageStorageService, stringEncrypter); + }); + + it("succeeds!", async () => { + const res = await app.request("/?hash=str-enc:a/4xkic0kY8scM3QRJIiLLtQ3NhZxEudhmd7RZDbsuuguXkamhZe0HdW9LmnZxtGCtf0GAPO5II85fE8rSkdFNIbBATyS/INKM0hmw==:a4S74z7c4DQVtijl"); + expect(res.status).toBe(200); + }); + }); + }); +}); diff --git a/tests/helpers/assets/test_img.png b/tests/helpers/assets/test_img.png new file mode 100644 index 0000000000000000000000000000000000000000..621e1cd78a99d6d8d49a203bb584fcabb6dc8f11 GIT binary patch literal 590099 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�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 z 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 z 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 r#Q-;&k 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 z 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

;DsnNM9}^1fo57Je`B@T@QE0B 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 elx`j8@{!)4 { + } + + async screenshot(): Promise { + const {join} = await import("path"); + const filePath = join(__dirname, "./assets/test_img.png"); + return await fs.readFile(filePath); + } + + poolMetrics(): Record { + return StubImageRenderService.POOL_METRICS; + } +} diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 0000000..13bd2ef --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["tests/**/*.ts"] +} diff --git a/tsconfig.json b/tsconfig.json index cab0b33..7e65a75 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,5 +30,5 @@ "noUnusedParameters": true, "forceConsistentCasingInFileNames": true }, - "include": ["src/**/*.ts"] + "include": ["src/**/*.ts", "tests/**/*.ts"], } From fcb89f0ba765a35f28a8fa26d47233d7a7560732 Mon Sep 17 00:00:00 2001 From: Jason Raimondi Date: Wed, 20 Mar 2024 00:15:24 -0400 Subject: [PATCH 3/8] feat: add working docker-compose with s3/couchdb examples feat: add config option for BROWSER_TIMEOUT feat: add config option for AWS_FORCE_PATH_STYLE feat: add config option for METRICS feat: add config option for CACHE_CONTROL with default "public, max-age=86400, immutable" --- Dockerfile | 2 +- docker-compose.yml | 59 +++++++++++++++++++++++++++++++++++++++++ src/app.ts | 10 ++++--- src/lib/browser_pool.ts | 8 +++--- src/lib/factory.ts | 29 +++----------------- src/lib/image_render.ts | 2 +- src/lib/storage/s3.ts | 4 +-- src/routes/index.ts | 2 +- 8 files changed, 79 insertions(+), 37 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5b0aecc..90b8b3a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,7 +24,7 @@ RUN apt-get update \ && apt-get install -y tini USER pwuser COPY --from=builder --chown=pwuser:pwuser /app/package.json /app/pnpm-lock.yaml /app/ -RUN pnpm install --production +RUN pnpm install --production && pnpm exec playwright install COPY --from=builder --chown=pwuser:pwuser /app/dist /app/dist EXPOSE 3000 ENTRYPOINT ["/usr/bin/tini", "--"] diff --git a/docker-compose.yml b/docker-compose.yml index 8b60733..3e765aa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,5 +6,64 @@ services: ports: - 3089:3089 environment: + METRICS: true NODE_ENV: debug BROWSER_WAIT_UNTIL: networkidle + STORAGE_PROVIDER: s3 + AWS_ACCESS_KEY_ID: miniominiominio + AWS_SECRET_ACCESS_KEY: miniominiominio + AWS_DEFAULT_REGION: us-east-1 + AWS_ENDPOINT_URL_S3: http://minio:9000 + AWS_FORCE_PATH_STYLE: true + AWS_BUCKET: url-to-png-uploads +# STORAGE_PROVIDER: couchdb +# COUCH_DB_PROTOCOL: http +# COUCH_DB_HOST: couchdb +# COUCH_DB_PORT: 5984 +# COUCH_DB_USER: admin +# COUCH_DB_PASS: password + + couchdb: + image: couchdb + container_name: couchdb + restart: always + ports: + - "5984:5984" + environment: + - COUCHDB_USER=admin + - COUCHDB_PASSWORD=password + volumes: + - couchdb-data:/opt/couchdb/data + + minio: + image: minio/minio + command: ["server", "/data", "--console-address", ":9001"] + ports: + - 9000:9000 + - 9001:9001 + volumes: + - minio-config:/root/.minio + - minio-data:/data + environment: + MINIO_ACCESS_KEY: miniominiominio + MINIO_SECRET_KEY: miniominiominio + MINIO_HTTP_TRACE: /dev/stdout + + minio-mc: + image: minio/mc + depends_on: + - minio + entrypoint: > + /bin/sh -c " + /usr/bin/mc config host rm local; + /usr/bin/mc config host add --quiet --api s3v4 local http://minio:9000 miniominiominio miniominiominio; + /usr/bin/mc rb --force local/url-to-png-uploads/; + /usr/bin/mc mb --quiet local/url-to-png-uploads/; + /usr/bin/mc policy set public local/url-to-png-uploads; + exit 0; + " + +volumes: + couchdb-data: + minio-config: + minio-data: diff --git a/src/app.ts b/src/app.ts index c29b7c4..79d80c1 100644 --- a/src/app.ts +++ b/src/app.ts @@ -35,9 +35,13 @@ export function createApplication( if (process.env.METRICS === "true") { app.get("/metrics", c => - c.json({ - poolMetrics: browserPool.poolMetrics, - }), + c.json( + process.env.METRICS === "true" + ? { + poolMetrics: browserPool.poolMetrics, + } + : { message: "Metrics are disabled." }, + ), ); } diff --git a/src/lib/browser_pool.ts b/src/lib/browser_pool.ts index e3cb7d2..979fc03 100644 --- a/src/lib/browser_pool.ts +++ b/src/lib/browser_pool.ts @@ -34,10 +34,10 @@ export class BrowserPool { constructor({ poolOpts }: BrowserPoolConstructorArgs = {} as BrowserPoolConstructorArgs) { poolOpts = { - max: 10, - min: 2, - maxWaitingClients: 50, - idleTimeoutMillis: 15000, + max: Number(process.env.POOL_MAX) || 10, + min: Number(process.env.POOL_MIN) || 2, + maxWaitingClients: Number(process.env.POOL_MAX_WAITING_CLIENTS) || 50, + idleTimeoutMillis: Number(process.env.POOL_IDLE_TIMEOUT_MS) || 15000, ...poolOpts, }; logger.info(poolOpts); diff --git a/src/lib/factory.ts b/src/lib/factory.ts index e0fdbf6..e4117cb 100644 --- a/src/lib/factory.ts +++ b/src/lib/factory.ts @@ -11,25 +11,7 @@ import { FileSystemStorageProvider } from "./storage/filesystem.js"; import { AmazonS3StorageProvider } from "./storage/s3.js"; import { StubStorageProvider } from "./storage/stub.js"; -export function createBrowserPool() { - const opts: Options = {}; - - if (Number.isInteger(Number(process.env.POOLS_MAX))) { - opts.max = Number(process.env.POOLS_MAX); - } - - if (Number.isInteger(Number(process.env.POOLS_MIN))) { - opts.min = Number(process.env.POOLS_MIN); - } - - if (Number.isInteger(Number(process.env.POOLS_MAX_WAITING))) { - opts.maxWaitingClients = Number(process.env.POOLS_MAX_WAITING); - } - - if (Number.isInteger(Number(process.env.POOLS_MAX))) { - opts.max = Number(process.env.POOLS_MAX); - } - +export function createBrowserPool(opts: Options = {}) { return new BrowserPool({ poolOpts: opts }); } @@ -43,10 +25,6 @@ export function createImageRenderService(browserPool: BrowserPool) { break; } - if (Number.isInteger(Number(process.env.BROWSER_TIMEOUT))) { - navigationOptions.timeout = Number(process.env.BROWSER_TIMEOUT); - } - return new ImageRenderService(browserPool, navigationOptions); } @@ -56,12 +34,13 @@ export function createImageStorageService(): ImageStorage { case "s3": imageStorage = new AmazonS3StorageProvider( new S3Client({ - region: process.env.AWS_DEFAULT_REGION!, - endpoint: process.env.AWS_ENDPOINT_URL_S3!, + region: process.env.AWS_DEFAULT_REGION ?? "us-east-1", + endpoint: process.env.AWS_ENDPOINT_URL_S3, credentials: { accessKeyId: process.env.AWS_ACCESS_KEY_ID!, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!, }, + forcePathStyle: process.env.AWS_FORCE_PATH_STYLE === "true", }), process.env.AWS_BUCKET!, ); diff --git a/src/lib/image_render.ts b/src/lib/image_render.ts index 51965ea..e1ff2c0 100644 --- a/src/lib/image_render.ts +++ b/src/lib/image_render.ts @@ -22,7 +22,7 @@ export class ImageRenderService implements ImageRenderInterface { ) { this.NAV_OPTIONS = { waitUntil: "networkidle", - timeout: 10000, + timeout: Number(process.env.BROWSER_TIMEOUT) || 10000, ...navigationOptions, }; logger.debug(`navigation options`); diff --git a/src/lib/storage/s3.ts b/src/lib/storage/s3.ts index 22e3cbc..a18e1a3 100644 --- a/src/lib/storage/s3.ts +++ b/src/lib/storage/s3.ts @@ -1,5 +1,5 @@ import { GetObjectCommand, PutObjectCommand, S3Client } from "@aws-sdk/client-s3"; -import { logger } from "../logger.js"; + import { ImageStorage } from "./_base.js"; export class AmazonS3StorageProvider implements ImageStorage { @@ -20,7 +20,7 @@ export class AmazonS3StorageProvider implements ImageStorage { return Buffer.from(body); } } catch (e) { - logger.error(e); + // image not found, return null } return null; } diff --git a/src/routes/index.ts b/src/routes/index.ts index af49491..4a2dfbc 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -39,7 +39,7 @@ export function getIndex( return c.body(imageBuffer, 200, { "Content-Type": "image/png", - // "Cache-Control": "public, max-age=31536000, immutable", + "Cache-Control": process.env.CACHE_CONTROL ?? "public, max-age=86400, immutable", }); }; } From 5a6f0b5518481a0a667a1cc7d648add105d561dc Mon Sep 17 00:00:00 2001 From: Jason Raimondi Date: Wed, 20 Mar 2024 16:30:36 -0400 Subject: [PATCH 4/8] ops: improve env sample, optimize dockerfile, add couchdb sidecar helper --- .env.sample | 43 +++++++++++++++++++++--------- Dockerfile | 11 +++----- docker-compose.yml | 53 ++++++++++++++++++++++++------------- src/lib/factory.ts | 4 +++ src/lib/storage/couch-db.ts | 12 ++++----- src/main.ts | 12 --------- 6 files changed, 79 insertions(+), 56 deletions(-) diff --git a/.env.sample b/.env.sample index 1051b18..6bd25c6 100644 --- a/.env.sample +++ b/.env.sample @@ -1,19 +1,38 @@ +LOG_LEVEL=debug NODE_ENV=development +PORT=3089 ALLOW_LIST=jasonraimondi.com,github.com +#CACHE_CONTROL="public, max-age=86400, immutable" -STORAGE_PROVIDER= +#BROWSER_TIMEOUT=10000 +#BROWSER_WAIT_UNTIL=domcontentloaded -COUCH_DB_PROTOCOL= -COUCH_DB_HOST= -COUCH_DB_PORT= -COUCH_DB_USER= -COUCH_DB_PASS= +#POOL_IDLE_TIMEOUT_MS=15000 +#POOL_MAX=10 +#POOL_MAX_WAITING_CLIENTS=50 +#POOL_MIN=2 -AWS_ACCESS_KEY= -AWS_SECRET_KEY= -AWS_REGION= -AWS_BUCKET= +METRICS=true +STORAGE_PROVIDER=stub -BROWSER_TIMEOUT=10000 -BROWSER_WAIT_UNTIL=domcontentloaded +#STORAGE_PROVIDER=s3 +#AWS_BUCKET= +#AWS_ACCESS_KEY_ID= +#AWS_SECRET_ACCESS_KEY= +#AWS_DEFAULT_REGION=us-east-1 +#AWS_ENDPOINT_URL_S3= +#AWS_FORCE_PATH_STYLE=false + +#STORAGE_PROVIDER=couchdb +#COUCH_DB_HOST= +#COUCH_DB_PASS= +#COUCH_DB_PORT= +#COUCH_DB_PROTOCOL= +#COUCH_DB_USER= +#COUCHDB_DATABASE=images + +#STORAGE_PROVIDER=filesystem +#IMAGE_STORAGE_PATH= + +#CRYPTO_KEY= diff --git a/Dockerfile b/Dockerfile index 90b8b3a..bfbbebb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,11 +7,9 @@ RUN npm install -g pnpm \ FROM baserepo as builder WORKDIR / -RUN apt-get update \ - && apt-get install -y wget USER pwuser WORKDIR /app -COPY package.json pnpm-lock.yaml /app +COPY package.json pnpm-lock.yaml /app/ RUN pnpm install --production false COPY tsconfig.json tsconfig.build.json /app/ COPY src /app/src @@ -20,12 +18,9 @@ RUN pnpm build FROM baserepo ENV DOCKER=1 -RUN apt-get update \ - && apt-get install -y tini USER pwuser COPY --from=builder --chown=pwuser:pwuser /app/package.json /app/pnpm-lock.yaml /app/ -RUN pnpm install --production && pnpm exec playwright install +RUN pnpm install --production && pnpm exec playwright install chromium COPY --from=builder --chown=pwuser:pwuser /app/dist /app/dist EXPOSE 3000 -ENTRYPOINT ["/usr/bin/tini", "--"] -CMD node -r dotenv/config dist/main.js +CMD ["node", "-r", "dotenv/config", "dist/main.js"] diff --git a/docker-compose.yml b/docker-compose.yml index 3e765aa..6895c6c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,34 +7,51 @@ services: - 3089:3089 environment: METRICS: true + LOG_LEVEL: debug NODE_ENV: debug BROWSER_WAIT_UNTIL: networkidle - STORAGE_PROVIDER: s3 - AWS_ACCESS_KEY_ID: miniominiominio - AWS_SECRET_ACCESS_KEY: miniominiominio - AWS_DEFAULT_REGION: us-east-1 - AWS_ENDPOINT_URL_S3: http://minio:9000 - AWS_FORCE_PATH_STYLE: true - AWS_BUCKET: url-to-png-uploads -# STORAGE_PROVIDER: couchdb -# COUCH_DB_PROTOCOL: http -# COUCH_DB_HOST: couchdb -# COUCH_DB_PORT: 5984 -# COUCH_DB_USER: admin -# COUCH_DB_PASS: password +# STORAGE_PROVIDER: s3 +# AWS_ACCESS_KEY_ID: miniominiominio +# AWS_SECRET_ACCESS_KEY: miniominiominio +# AWS_DEFAULT_REGION: us-east-1 +# AWS_ENDPOINT_URL_S3: http://minio:9000 +# AWS_FORCE_PATH_STYLE: true +# AWS_BUCKET: url-to-png-uploads + STORAGE_PROVIDER: couchdb + COUCH_DB_PROTOCOL: http + COUCH_DB_HOST: couchdb + COUCH_DB_PORT: 5984 + COUCH_DB_USER: admin + COUCH_DB_PASS: password couchdb: image: couchdb - container_name: couchdb - restart: always ports: - - "5984:5984" + - 5984:5984 environment: - COUCHDB_USER=admin - COUCHDB_PASSWORD=password volumes: - couchdb-data:/opt/couchdb/data + couchdb-sidecar: + image: curlimages/curl + depends_on: + - couchdb + command: | + sh -c " + until curl -f http://admin:password@couchdb:5984/_up; do + echo 'Waiting for CouchDB to be ready...'; + sleep 1; + done; + echo 'CouchDB is ready, creating databases...'; + curl -X PUT http://admin:password@couchdb:5984/_users; + curl -X PUT http://admin:password@couchdb:5984/_replicator; + curl -X PUT http://admin:password@couchdb:5984/_global_changes; + curl -X PUT http://admin:password@couchdb:5984/images; + echo 'Databases created successfully.'; + " + minio: image: minio/minio command: ["server", "/data", "--console-address", ":9001"] @@ -45,8 +62,8 @@ services: - minio-config:/root/.minio - minio-data:/data environment: - MINIO_ACCESS_KEY: miniominiominio - MINIO_SECRET_KEY: miniominiominio + MINIO_ROOT_USER: miniominiominio + MINIO_ROOT_PASSWORD: miniominiominio MINIO_HTTP_TRACE: /dev/stdout minio-mc: diff --git a/src/lib/factory.ts b/src/lib/factory.ts index e4117cb..fdab3ee 100644 --- a/src/lib/factory.ts +++ b/src/lib/factory.ts @@ -23,6 +23,9 @@ export function createImageRenderService(browserPool: BrowserPool) { case "networkidle": navigationOptions.waitUntil = process.env.BROWSER_WAIT_UNTIL; break; + default: + navigationOptions.waitUntil = "domcontentloaded"; + break; } return new ImageRenderService(browserPool, navigationOptions); @@ -59,6 +62,7 @@ export function createImageStorageService(): ImageStorage { const filePath = process.env.IMAGE_STORAGE_PATH!; imageStorage = new FileSystemStorageProvider(filePath); break; + case "stub": default: imageStorage = new StubStorageProvider(); } diff --git a/src/lib/storage/couch-db.ts b/src/lib/storage/couch-db.ts index c5a2247..4af57bb 100644 --- a/src/lib/storage/couch-db.ts +++ b/src/lib/storage/couch-db.ts @@ -7,13 +7,13 @@ export class CouchDbStorageProvider implements ImageStorage { constructor(private readonly couchDB: couchDBNano.ServerScope) {} get images() { - return this.couchDB.use("images"); + return this.couchDB.use(process.env.COUCHDB_DATABASE ?? "images"); } public async fetchImage(imageId: string): Promise { - imageId = md5(imageId); + const imageMd5 = md5(imageId); try { - return await this.images.attachment.get(imageId, "urlto.png"); + return await this.images.attachment.get(imageMd5, `${imageId}.png`); } catch (err) { return null; } @@ -21,12 +21,12 @@ export class CouchDbStorageProvider implements ImageStorage { public async storeImage(imageId: string, image: Buffer): Promise { const images = this.images; - imageId = md5(imageId); + const imageMd5 = md5(imageId); try { - await images.attachment.get(imageId, "urlto.png"); + await images.attachment.get(imageMd5, `${imageId}.png`); return true; } catch (err) { - await images.attachment.insert(imageId, "urlto.png", image, "image/png"); + await images.attachment.insert(imageMd5, `${imageId}.png`, image, "image/png"); } return true; diff --git a/src/main.ts b/src/main.ts index 178b591..1b99e12 100755 --- a/src/main.ts +++ b/src/main.ts @@ -12,18 +12,6 @@ import { } from "./lib/factory.js"; import { logger } from "./lib/logger.js"; -if (process.env.AWS_ACCESS_KEY) { - logger.warn("AWS_ACCESS_KEY is deprecated, please use AWS_ACCESS_KEY_ID"); -} - -if (process.env.AWS_SECRET_KEY) { - logger.warn("AWS_SECRET_KEY is deprecated, please use AWS_SECRET_ACCESS_KEY"); -} - -if (process.env.AWS_REGION) { - logger.warn("AWS_REGION is deprecated, please use AWS_DEFAULT_REGION"); -} - let server: ReturnType; async function main() { From 1d975895d4ea60f2791bceacaee492bf430ed3d1 Mon Sep 17 00:00:00 2001 From: Jason Raimondi Date: Wed, 20 Mar 2024 23:58:15 -0400 Subject: [PATCH 5/8] docs: improve documentation --- .env.sample | 41 +- .github/workflows/docs.yml | 30 ++ .github/workflows/publish.yml | 7 +- .mise.toml | 4 +- README.md | 182 +------ docs/.vitepress/.gitignore | 2 + docs/.vitepress/config.ts | 33 ++ docs/config/index.md | 59 ++ docs/contributing/index.md | 24 + docs/getting_started/index.md | 49 ++ docs/index.md | 21 + docs/metrics/index.md | 19 + docs/storage_providers/index.md | 39 ++ package.json | 21 +- pnpm-lock.yaml | 922 ++++++++++++++++++++++++++++++-- src/app.ts | 4 +- 16 files changed, 1208 insertions(+), 249 deletions(-) create mode 100644 .github/workflows/docs.yml create mode 100644 docs/.vitepress/.gitignore create mode 100644 docs/.vitepress/config.ts create mode 100644 docs/config/index.md create mode 100644 docs/contributing/index.md create mode 100644 docs/getting_started/index.md create mode 100644 docs/index.md create mode 100644 docs/metrics/index.md create mode 100644 docs/storage_providers/index.md diff --git a/.env.sample b/.env.sample index 6bd25c6..879fca7 100644 --- a/.env.sample +++ b/.env.sample @@ -1,21 +1,50 @@ +# Logging level (debug, info, warn, error) LOG_LEVEL=debug + +# Node environment (development, production) NODE_ENV=development -PORT=3089 -ALLOW_LIST=jasonraimondi.com,github.com +# Port number for the application to listen on (optional) +#PORT=3089 + +# Comma-separated list of allowed domains for screenshots (optional) +#ALLOW_LIST=jasonraimondi.com,github.com + +# Cache-Control header value for the responses (optional) #CACHE_CONTROL="public, max-age=86400, immutable" +# Browser timeout in milliseconds for rendering (optional) #BROWSER_TIMEOUT=10000 + +# Event to wait for before considering the page loaded (optional) #BROWSER_WAIT_UNTIL=domcontentloaded +# Idle timeout for database connection pool in milliseconds (optional) #POOL_IDLE_TIMEOUT_MS=15000 + +# Maximum number of connections in the database pool (optional) #POOL_MAX=10 + +# Maximum number of waiting clients for the database pool (optional) #POOL_MAX_WAITING_CLIENTS=50 + +# Minimum number of connections in the database pool (optional) #POOL_MIN=2 -METRICS=true +# Enable or disable metrics collection (optional) +#METRICS=false + +# Encryption key for sensitive data (optional) +#CRYPTO_KEY= + +# Storage provider (stub, s3, couchdb, filesystem) STORAGE_PROVIDER=stub +# Configuration for filesystem storage provider (optional) +#STORAGE_PROVIDER=filesystem +#IMAGE_STORAGE_PATH= + +# Configuration for S3 storage provider (optional) #STORAGE_PROVIDER=s3 #AWS_BUCKET= #AWS_ACCESS_KEY_ID= @@ -24,6 +53,7 @@ STORAGE_PROVIDER=stub #AWS_ENDPOINT_URL_S3= #AWS_FORCE_PATH_STYLE=false +# Configuration for CouchDB storage provider (optional) #STORAGE_PROVIDER=couchdb #COUCH_DB_HOST= #COUCH_DB_PASS= @@ -31,8 +61,3 @@ STORAGE_PROVIDER=stub #COUCH_DB_PROTOCOL= #COUCH_DB_USER= #COUCHDB_DATABASE=images - -#STORAGE_PROVIDER=filesystem -#IMAGE_STORAGE_PATH= - -#CRYPTO_KEY= diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..c42b9bf --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,30 @@ +name: Deploy VitePress site to GitHub Pages + +on: + push: + branches: + - main + - next + paths: + - '.github/workflows/docs.yml' + - 'docs/**' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v3 + with: + version: 8 + - uses: actions/setup-node@v4 + with: + node-version-file: 20 + cache: pnpm + cache-dependency-path: pnpm-lock.yaml + - run: pnpm install --frozen-lockfile + - run: pnpm docs:build + - uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: docs/.vitepress/dist diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2e53188..019496b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,4 +1,4 @@ -name: Build and Publish Docker Image +name: Build and publish Docker images on: push: @@ -12,7 +12,7 @@ jobs: build-and-publish: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 - uses: docker/login-action@v1 @@ -37,8 +37,7 @@ jobs: else echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT fi - - name: Build and Push Docker Image - uses: docker/build-push-action@v5 + - uses: docker/build-push-action@v5 with: context: . file: Dockerfile diff --git a/.mise.toml b/.mise.toml index 9fffd03..3377e63 100644 --- a/.mise.toml +++ b/.mise.toml @@ -1,3 +1,3 @@ [tools] -node = "20" -pnpm = "8" +node = "20" +pnpm = "8" diff --git a/README.md b/README.md index b9b8c85..b120fa0 100644 --- a/README.md +++ b/README.md @@ -1,173 +1,21 @@

- URL to PNG logo -
URL to PNG + URL-to-PNG logo + URL-to-PNG

-A URL to PNG generator over HTTP with a fairly simple API accessed via query params passed to the servers single endpoint. +![GitHub License](https://img.shields.io/github/license/jasonraimondi/url-to-png) +[![GitHub Workflow Status]( https://img.shields.io/github/actions/workflow/status/jasonraimondi/url-to-png/publish.yml?branch=main&style=flat-square)](https://github.com/jasonraimondi/url-to-png) +![Docker Pulls](https://img.shields.io/docker/pulls/jasonraimondi/url-to-png) -## Getting Started +URL-to-PNG is a server that generates PNG images from URLs over HTTP. It provides a simple API that can be accessed via query parameters passed to the server's single endpoint. -### Docker +### Features -Run the following command: - -``` -docker run --rm -p 3089:3089 ghcr.io/jasonraimondi/url-to-png -``` - -On the hub: [Link to DockerHub](https://hub.docker.com/r/jasonraimondi/url-to-png/) - -### Local Serve - -Serve the project - -``` -git clone git@github.com:jasonraimondi/url-to-png.git -cd url-to-png -pnpm install -# you may need to run this command if you are having issues with playwright -pnpm exec playwright install -pnpm dev -``` - -## Query Params - -- `url: string` - Valid URL to be captured - **Required** -- `width: number` - Width of output screenshot - **Optional** - Default: `250` -- `height: number` - Height of output screenshot - **Optional** - Default: `250` -- `viewPortWidth: number` - Width of render viewport - **Optional** - Default: `1080` -- `viewPortHeight: number` - Height of render viewport - **Optional** - Default: `1080` -- `forceReload: boolean` - Force cached image reload - **Optional** - Default: `false` -- `isMobile: boolean` - Adds mobile flag to user agent - **Optional** - Default: `false -- `isFullPage: boolean` - Render full page instead of viewport crop - **Optional** - Default: `false` -- `isDarkMode: boolean` - Prefer color scheme dark - **Optional** - Default: `false` -- `deviceScaleFactor: number` - Specify device scale factor (can be thought of as dpr) - **Optional** - Default: `1` - -Try it out at `localhost:3089?url=https://www.jasonraimondi.com&isDarkMode=true` and you should get back an image capture of my website homepage. - -All sorts of combos work: - -``` -http://localhost:3089?url=https://jasonraimondi.com -http://localhost:3089?url=https://jasonraimondi.com&forceReload=true -http://localhost:3089?url=https://jasonraimondi.com&isFullPage=true -http://localhost:3089?url=https://jasonraimondi.com&isMobile=true -http://localhost:3089?url=https://jasonraimondi.com&isDarkMode=true -http://localhost:3089?url=https://jasonraimondi.com&width=400&height=400 -http://localhost:3089?url=https://jasonraimondi.com&viewPortHeight=400&viewPortWidth=400 -http://localhost:3089?url=https://jasonraimondi.com&viewPortHeight=400&viewPortWidth=400 -http://localhost:3089?url=https://jasonraimondi.com&isFullPage=true&isMobile=true&width=400&height=400&viewPortHeight=400&viewPortWidth=400 -http://localhost:3089?url=https://jasonraimondi.com&isMobile=true&isFullPage=true&viewPortWidth=375&width=375&deviceScaleFactor=1 -``` - -## System Requirements - -The following is cut from the Playwright documentation, please view the [official system requirement documentation](https://playwright.dev/docs/1.3.0/intro/#system-requirements) for the most up to date requirements guide. - -Playwright requires Node.js version 10.15 or above. The browser binaries for Chromium, Firefox and WebKit work across the 3 platforms (Windows, macOS, Linux): - -* **Windows**: Works with Windows and Windows Subsystem for Linux (WSL). -* **macOS**: Requires 10.14 or above. -* **Linux**: Depending on your Linux distribution, you might need to install additional dependencies to run the browsers. - * **Firefox** requires Ubuntu 18.04+ - * For **Ubuntu 18.04**, the additional dependencies are defined in the [playwright Docker image](https://github.com/microsoft/playwright/blob/master/utils/docker/Dockerfile.bionic), which is based on Ubuntu. - -## Allow List - -Allow domain specific requests by passing in an ALLOW_LIST. The list should be **comma separated**, **not include spaces**, and should be the **domain name only**. - -If this value is either `undefined || ""`, url-to-png will allow any domain to be rendered. - -``` -ALLOW_LIST=jasonraimondi.com,github.com -``` - -## Playwright Options - -Please see the Playwright API documentation [here](https://playwright.dev/docs/api/class-page#pagegotourl-options) for further knowledge. - -``` -BROWSER_TIMEOUT= -BROWSER_WAIT_UNTIL= -``` - -#### `BROWSER_TIMEOUT` - -The maximum navigation time in milliseconds, pass 0 to disable timeout. The default value is 10000 - -#### `BROWSER_WAIT_UNTIL` - -When playwright to considers the navigation succeeded. The default value for this option is `domcontentloaded` - -Valid Options: - -- `'load'` - consider operation to be finished when the `load` event is fired. -- `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired. -- `'networkidle'` - consider operation to be finished when there are no network connections for at least `500` ms. - -## Image Storage / Cache - -NOTE: If you are running in Docker, you should skip the .env and load the environment variables into your container. - -You are going to need to copy the environment file to use any of the storage options. By default no images are cached. - -``` -cp .env.sample .env -``` - -#### AWS S3 - -To use Amazon S3 set `STORAGE_PROVIDER=s3`, ensure the following variables are loaded in your `.env`: - -``` -STORAGE_PROVIDER=s3 -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION= -AWS_ENDPOINT_URL_S3= -AWS_BUCKET= -``` - -#### CouchDB - -To use CouchDB set `STORAGE_PROVIDER=couchdb`, ensure the following variables are loaded in your `.env`: - -``` -STORAGE_PROVIDER=couchdb -COUCH_DB_PROTOCOL= -COUCH_DB_HOST= -COUCH_DB_USER= -COUCH_DB_PASS= -``` - -#### Filesystem - -To use your local filesystem, set `STORAGE_PROVIDER=filesystem`, ensure the following variables are loaded in your `.env`: - -``` -STORAGE_PROVIDER=filesystem -IMAGE_STORAGE_PATH=/tmp/foo -``` - -## Metrics - -You can enable metrics by setting `METRICS=true` in your `.env` file. This will expose a `/metrics` endpoint for Prometheus to scrape. - -```json -{ - "poolMetrics": { - "spareResourceCapacity": 8, - "size": 2, - "available": 2, - "borrowed": 0, - "pending": 0, - "max": 10, - "min": 2 - } -} -``` - -## Sources - -- Upstream Repository: [https://git.jasonraimondi.com/jason/url-to-png](https://git.jasonraimondi.com/jason/url-to-png) -- Logo from [https://www.hipsterlogogenerator.com/](https://www.hipsterlogogenerator.com/) +- Generate PNG images from URLs +- Customizable image dimensions and viewport size +- Support for mobile user agent and dark mode rendering +- Caching of generated images +- Allow list for domain-specific requests +- Configurable Playwright options +- Integration with various storage providers (AWS S3, CouchDB, Filesystem) +- Prometheus metrics endpoint diff --git a/docs/.vitepress/.gitignore b/docs/.vitepress/.gitignore new file mode 100644 index 0000000..518e159 --- /dev/null +++ b/docs/.vitepress/.gitignore @@ -0,0 +1,2 @@ +dist/ +cache/ diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts new file mode 100644 index 0000000..4a96c1b --- /dev/null +++ b/docs/.vitepress/config.ts @@ -0,0 +1,33 @@ +import { defineConfig } from "vitepress"; + +// https://vitepress.vuejs.org/config/app-configs +export default defineConfig({ + lang: "en-US", + title: "URL-to-PNG", + base: "/url-to-png/", + description: + "Selfhosted. URL-to-PNG utility featuring parallel rendering using Playwright for screenshots and with storage caching via Local, S3, or CouchDB.", + themeConfig: { + repo: "jasonraimondi/url-to-png", + docsDir: "docs", + editLink: { + pattern: 'https://github.com/jasonraimondi/url-to-png/edit/main/docs/:path', + text: 'Edit this page on GitHub' + }, + nav: [ + { text: "Github", link: "https://github.com/jasonraimondi/url-to-png" }, + { text: "Getting Started", link: "/getting_started/" }, + ], + sidebar: [ + { + items: [ + { text: "Getting Started", link: "/getting_started/" }, + { text: "Configuration", link: "/config/" }, + { text: "Storage Providers", link: "/storage_providers/" }, + { text: "Metrics", link: "/metrics/" }, + { text: "Contributing", link: "/contributing/" }, + ], + }, + ], + }, +}); diff --git a/docs/config/index.md b/docs/config/index.md new file mode 100644 index 0000000..e6dc56c --- /dev/null +++ b/docs/config/index.md @@ -0,0 +1,59 @@ +# Configuration + +URL-to-PNG allows you to configure various settings through environment variables. Here are the available configuration options: + +## General Settings + +- `LOG_LEVEL`: Logging level (debug, info, warn, error). Default: `debug`. +- `NODE_ENV`: Node environment (development, production). Default: `development`. +- `PORT`: Port number for the application to listen on. Default: `3089`. +- `CACHE_CONTROL`: Cache-Control header value for the responses. Default: `"public, max-age=86400, immutable"`. + +## Allow List + +- `ALLOW_LIST`: Comma-separated list of allowed domains for screenshots. If undefined or empty, all domains are allowed. Example: `ALLOW_LIST=jasonraimondi.com,github.com`. + +## Playwright Options + +- `BROWSER_TIMEOUT`: Browser timeout in milliseconds for rendering. Default: `10000`. +- `BROWSER_WAIT_UNTIL`: Event to wait for before considering the page loaded. Valid options: `'load'`, `'domcontentloaded'`, `'networkidle'`. Default: `'domcontentloaded'`. + +## Database Connection Pool + +- `POOL_IDLE_TIMEOUT_MS`: Idle timeout for database connection pool in milliseconds. Default: `15000`. +- `POOL_MAX`: Maximum number of connections in the database pool. Default: `10`. +- `POOL_MAX_WAITING_CLIENTS`: Maximum number of waiting clients for the database pool. Default: `50`. +- `POOL_MIN`: Minimum number of connections in the database pool. Default: `2`. + +## Metrics and Encryption + +- `METRICS`: Enable or disable metrics collection. Default: `false`. +- `CRYPTO_KEY`: Encryption key for sensitive data. + +## Storage Providers + +- `STORAGE_PROVIDER`: Storage provider to use. Valid options: `stub`, `s3`, `couchdb`, `filesystem`. Default: `stub`. + +### Filesystem Storage Provider + +- `IMAGE_STORAGE_PATH`: Path to store images when using the filesystem storage provider. + +### S3 Storage Provider + +- `AWS_BUCKET`: AWS S3 bucket name. +- `AWS_ACCESS_KEY_ID`: AWS access key ID. +- `AWS_SECRET_ACCESS_KEY`: AWS secret access key. +- `AWS_DEFAULT_REGION`: AWS default region. Default: `us-east-1`. +- `AWS_ENDPOINT_URL_S3`: AWS S3 endpoint URL. +- `AWS_FORCE_PATH_STYLE`: Force path-style URLs for S3. Default: `false`. + +### CouchDB Storage Provider + +- `COUCH_DB_HOST`: CouchDB host. +- `COUCH_DB_PASS`: CouchDB password. +- `COUCH_DB_PORT`: CouchDB port. +- `COUCH_DB_PROTOCOL`: CouchDB protocol. +- `COUCH_DB_USER`: CouchDB username. +- `COUCHDB_DATABASE`: CouchDB database name. Default: `images`. + +To configure URL-to-PNG, set the appropriate environment variables either in your `.env` file or pass them as environment variables to your Docker container. diff --git a/docs/contributing/index.md b/docs/contributing/index.md new file mode 100644 index 0000000..6fe4952 --- /dev/null +++ b/docs/contributing/index.md @@ -0,0 +1,24 @@ +# Local Development + +To run URL-to-PNG locally, follow these steps: + +1. Clone the repository: + ```bash + git clone git@github.com:jasonraimondi/url-to-png.git + cd url-to-png + ``` + +2. Install dependencies: + ```bash + pnpm install + ``` + +3. Install Playwright browsers (if needed): + ```bash + pnpm exec playwright install chromium + ``` + +4. Start the development server: + ```bash + pnpm dev + ``` diff --git a/docs/getting_started/index.md b/docs/getting_started/index.md new file mode 100644 index 0000000..fdc4b14 --- /dev/null +++ b/docs/getting_started/index.md @@ -0,0 +1,49 @@ +# Getting Started + +## Docker + +You can run URL-to-PNG using Docker with the following command: + +```bash +docker run --rm -p 3089:3089 ghcr.io/jasonraimondi/url-to-png +``` + +The Docker image is also available on [DockerHub](https://hub.docker.com/r/jasonraimondi/url-to-png/). + +# API + +URL-to-PNG provides a single endpoint that accepts various query parameters to customize the generated image. + +## Query Parameters + +- `url` (required): The valid URL to be captured. +- `width` (optional): The width of the output screenshot. Default is `250`. +- `height` (optional): The height of the output screenshot. Default is `250`. +- `viewPortWidth` (optional): The width of the render viewport. Default is `1080`. +- `viewPortHeight` (optional): The height of the render viewport. Default is `1080`. +- `forceReload` (optional): Forces a reload of the cached image. Default is `false`. +- `isMobile` (optional): Adds a mobile flag to the user agent. Default is `false`. +- `isFullPage` (optional): Renders the full page instead of the viewport crop. Default is `false`. +- `isDarkMode` (optional): Prefers the dark color scheme. Default is `false`. +- `deviceScaleFactor` (optional): Specifies the device scale factor (can be thought of as DPR). Default is `1`. + +## Usage Examples + +Here are some example combinations of query parameters: + +``` +http://localhost:3089?url=https://jasonraimondi.com +http://localhost:3089?url=https://jasonraimondi.com&forceReload=true +http://localhost:3089?url=https://jasonraimondi.com&isFullPage=true +http://localhost:3089?url=https://jasonraimondi.com&isMobile=true +http://localhost:3089?url=https://jasonraimondi.com&isDarkMode=true +http://localhost:3089?url=https://jasonraimondi.com&width=400&height=400 +http://localhost:3089?url=https://jasonraimondi.com&viewPortHeight=400&viewPortWidth=400 +http://localhost:3089?url=https://jasonraimondi.com&isFullPage=true&isMobile=true&width=400&height=400&viewPortHeight=400&viewPortWidth=400 +http://localhost:3089?url=https://jasonraimondi.com&isMobile=true&isFullPage=true&viewPortWidth=375&width=375&deviceScaleFactor=1 +``` + +```html +Jason Raimondi's personal home page screenshot +``` diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..b120fa0 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,21 @@ +

+ URL-to-PNG logo + URL-to-PNG +

+ +![GitHub License](https://img.shields.io/github/license/jasonraimondi/url-to-png) +[![GitHub Workflow Status]( https://img.shields.io/github/actions/workflow/status/jasonraimondi/url-to-png/publish.yml?branch=main&style=flat-square)](https://github.com/jasonraimondi/url-to-png) +![Docker Pulls](https://img.shields.io/docker/pulls/jasonraimondi/url-to-png) + +URL-to-PNG is a server that generates PNG images from URLs over HTTP. It provides a simple API that can be accessed via query parameters passed to the server's single endpoint. + +### Features + +- Generate PNG images from URLs +- Customizable image dimensions and viewport size +- Support for mobile user agent and dark mode rendering +- Caching of generated images +- Allow list for domain-specific requests +- Configurable Playwright options +- Integration with various storage providers (AWS S3, CouchDB, Filesystem) +- Prometheus metrics endpoint diff --git a/docs/metrics/index.md b/docs/metrics/index.md new file mode 100644 index 0000000..32959ea --- /dev/null +++ b/docs/metrics/index.md @@ -0,0 +1,19 @@ +# Metrics + +The metrics endpoint provides information about the browser pool, such as the spare resource capacity, pool size, available and borrowed instances, pending requests, and the maximum and minimum pool size. + +You can enable metrics by setting `METRICS=true`. This will expose a `/metrics` endpoint for Prometheus to scrape. + +```json +{ + "poolMetrics": { + "spareResourceCapacity": 8, + "size": 2, + "available": 2, + "borrowed": 0, + "pending": 0, + "max": 10, + "min": 2 + } +} +``` diff --git a/docs/storage_providers/index.md b/docs/storage_providers/index.md new file mode 100644 index 0000000..edea972 --- /dev/null +++ b/docs/storage_providers/index.md @@ -0,0 +1,39 @@ +# Storage Providers + +The project supports multiple storage providers for caching rendered images. The storage provider can be configured using the `STORAGE_PROVIDER` environment variable. The available storage providers are: + +## Stub Storage Provider (default) + +The stub storage provider is a placeholder storage provider that doesn't actually store or retrieve images, it simply logs debug messages. It can be used for testing or when storage functionality is not required. + +## Filesystem + +The filesystem storage provider allows storing and retrieving rendered images on the local filesystem. + +- `STORAGE_PROVIDER`: `"filesystem"` +- `IMAGE_STORAGE_PATH`: The directory path where images will be stored + +## S3 + +The S3 compatible storage provider allows storing and retrieving rendered images using Amazon S3. + +- `STORAGE_PROVIDER`: `"s3"` +- `AWS_BUCKET`: The name of the S3 bucket to store images +- `AWS_ACCESS_KEY_ID`: The AWS access key ID +- `AWS_SECRET_ACCESS_KEY`: The AWS secret access key +- `AWS_DEFAULT_REGION`: The AWS region for S3 (default: "us-east-1") +- `AWS_FORCE_PATH_STYLE`: Set to `true` to use path-style URLs for S3 (default: `false`) +- `AWS_ENDPOINT_URL_S3`: The endpoint URL for S3 (optional) + +## CouchDB + +The CouchDB storage provider allows storing and retrieving rendered images using CouchDB. + +- `STORAGE_PROVIDER`: `"couchdb"` +- `COUCH_DB_PROTOCOL`: The protocol for connecting to CouchDB (e.g., "http" or "https") +- `COUCH_DB_USER`: The CouchDB username +- `COUCH_DB_PASS`: The CouchDB password +- `COUCH_DB_HOST`: The CouchDB host +- `COUCH_DB_PORT`: The CouchDB port +- `COUCHDB_DATABASE`: The name of the CouchDB database to store images (default: "images") + diff --git a/package.json b/package.json index 8e0eb65..d60451b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@jmondi/url-to-png", "version": "1.3.1", - "description": "URL to PNG Server", + "description": "URL-to-PNG Server", "private": true, "type": "module", "scripts": { @@ -13,7 +13,10 @@ "format": "prettier --write \"./src/**/*.ts\"", "test": "vitest run", "test:watch": "vitest", - "test:coverage": "vitest run --coverage" + "test:coverage": "vitest run --coverage", + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:serve": "vitepress serve docs" }, "engines": { "node": ">= 20", @@ -21,12 +24,12 @@ }, "engineStrict": true, "dependencies": { - "@aws-sdk/client-s3": "^3.536.0", + "@aws-sdk/client-s3": "^3.537.0", "@hono/node-server": "^1.8.2", "@jmondi/string-encrypt-decrypt": "^0.0.6", "dotenv": "^16.4.5", "generic-pool": "^3.9.0", - "hono": "^4.1.2", + "hono": "^4.1.3", "md5": "^2.3.0", "nano": "^10.1.3", "pino": "^8.19.0", @@ -37,14 +40,16 @@ }, "devDependencies": { "@types/md5": "^2.3.5", - "@types/node": "^20.11.29", + "@types/node": "^20.11.30", "@vitest/coverage-v8": "^1.4.0", "cross-env": "^7.0.3", "npm-run-all": "^4.1.5", - "pino-pretty": "^10.3.1", + "pino-pretty": "^11.0.0", "prettier": "^3.2.5", "tsx": "^4.7.1", - "typescript": "^5.4.2", - "vitest": "^1.4.0" + "typescript": "^5.4.3", + "vitepress": "1.0.0-rc.45", + "vitest": "^1.4.0", + "vue": "3.4.21" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4b865f..2a8707b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@aws-sdk/client-s3': - specifier: ^3.536.0 - version: 3.536.0 + specifier: ^3.537.0 + version: 3.537.0 '@hono/node-server': specifier: ^1.8.2 version: 1.8.2 @@ -21,8 +21,8 @@ dependencies: specifier: ^3.9.0 version: 3.9.0 hono: - specifier: ^4.1.2 - version: 4.1.2 + specifier: ^4.1.3 + version: 4.1.3 md5: specifier: ^2.3.0 version: 2.3.0 @@ -50,8 +50,8 @@ devDependencies: specifier: ^2.3.5 version: 2.3.5 '@types/node': - specifier: ^20.11.29 - version: 20.11.29 + specifier: ^20.11.30 + version: 20.11.30 '@vitest/coverage-v8': specifier: ^1.4.0 version: 1.4.0(vitest@1.4.0) @@ -62,8 +62,8 @@ devDependencies: specifier: ^4.1.5 version: 4.1.5 pino-pretty: - specifier: ^10.3.1 - version: 10.3.1 + specifier: ^11.0.0 + version: 11.0.0 prettier: specifier: ^3.2.5 version: 3.2.5 @@ -71,14 +71,154 @@ devDependencies: specifier: ^4.7.1 version: 4.7.1 typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 + vitepress: + specifier: 1.0.0-rc.45 + version: 1.0.0-rc.45(@algolia/client-search@4.22.1)(@types/node@20.11.30)(search-insights@2.13.0)(typescript@5.4.3) vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@20.11.29) + version: 1.4.0(@types/node@20.11.30) + vue: + specifier: 3.4.21 + version: 3.4.21(typescript@5.4.3) packages: + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: true + + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + search-insights: 2.13.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: true + + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + '@algolia/client-search': 4.22.1 + algoliasearch: 4.22.1 + dev: true + + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1): + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 4.22.1 + algoliasearch: 4.22.1 + dev: true + + /@algolia/cache-browser-local-storage@4.22.1: + resolution: {integrity: sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g==} + dependencies: + '@algolia/cache-common': 4.22.1 + dev: true + + /@algolia/cache-common@4.22.1: + resolution: {integrity: sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA==} + dev: true + + /@algolia/cache-in-memory@4.22.1: + resolution: {integrity: sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw==} + dependencies: + '@algolia/cache-common': 4.22.1 + dev: true + + /@algolia/client-account@4.22.1: + resolution: {integrity: sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/client-search': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/client-analytics@4.22.1: + resolution: {integrity: sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/client-search': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/client-common@4.22.1: + resolution: {integrity: sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ==} + dependencies: + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/client-personalization@4.22.1: + resolution: {integrity: sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/client-search@4.22.1: + resolution: {integrity: sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA==} + dependencies: + '@algolia/client-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + + /@algolia/logger-common@4.22.1: + resolution: {integrity: sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg==} + dev: true + + /@algolia/logger-console@4.22.1: + resolution: {integrity: sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA==} + dependencies: + '@algolia/logger-common': 4.22.1 + dev: true + + /@algolia/requester-browser-xhr@4.22.1: + resolution: {integrity: sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw==} + dependencies: + '@algolia/requester-common': 4.22.1 + dev: true + + /@algolia/requester-common@4.22.1: + resolution: {integrity: sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg==} + dev: true + + /@algolia/requester-node-http@4.22.1: + resolution: {integrity: sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA==} + dependencies: + '@algolia/requester-common': 4.22.1 + dev: true + + /@algolia/transporter@4.22.1: + resolution: {integrity: sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==} + dependencies: + '@algolia/cache-common': 4.22.1 + '@algolia/logger-common': 4.22.1 + '@algolia/requester-common': 4.22.1 + dev: true + /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -156,8 +296,8 @@ packages: tslib: 1.14.1 dev: false - /@aws-sdk/client-s3@3.536.0: - resolution: {integrity: sha512-UM5txJxq8qKzLDVuW9c904bpb7+u1jOeyJITLz79WpyHSOP6ERHoTx/ltEuGJ4zQVazfkgthqR0lIn09sXEEuw==} + /@aws-sdk/client-s3@3.537.0: + resolution: {integrity: sha512-EMPN2toHz1QtSiDeLKS1zrazh+8J0g1Y5t5lCq25iTXqCSV9vB2jCKwG5+OB6L5tAKkwyl1uZofeWLmdFkztEg==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha1-browser': 3.0.0 @@ -175,7 +315,7 @@ packages: '@aws-sdk/middleware-recursion-detection': 3.535.0 '@aws-sdk/middleware-sdk-s3': 3.535.0 '@aws-sdk/middleware-signing': 3.535.0 - '@aws-sdk/middleware-ssec': 3.535.0 + '@aws-sdk/middleware-ssec': 3.537.0 '@aws-sdk/middleware-user-agent': 3.535.0 '@aws-sdk/region-config-resolver': 3.535.0 '@aws-sdk/signature-v4-multi-region': 3.535.0 @@ -588,8 +728,8 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/middleware-ssec@3.535.0: - resolution: {integrity: sha512-QAQ++9my7VZzusUPOFcUMdhTnjpGRyy/OvPC+jg9usdfcaSZeQbfzbdaVBalcm2Wt+1qxh3LZSTS+LxKikm02Q==} + /@aws-sdk/middleware-ssec@3.537.0: + resolution: {integrity: sha512-2QWMrbwd5eBy5KCYn9a15JEWBgrK2qFEKQN2lqb/6z0bhtevIOxIRfC99tzvRuPt6nixFQ+ynKuBjcfT4ZFrdQ==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.535.0 @@ -717,8 +857,8 @@ packages: tslib: 2.6.2 dev: false - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} dev: true @@ -727,8 +867,8 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/parser@7.24.0: - resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + /@babel/parser@7.24.1: + resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: @@ -739,7 +879,7 @@ packages: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 + '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: true @@ -756,6 +896,49 @@ packages: resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} dev: false + /@docsearch/css@3.6.0: + resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} + dev: true + + /@docsearch/js@3.6.0(@algolia/client-search@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==} + dependencies: + '@docsearch/react': 3.6.0(@algolia/client-search@4.22.1)(search-insights@2.13.0) + preact: 10.20.0 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + dev: true + + /@docsearch/react@3.6.0(@algolia/client-search@4.22.1)(search-insights@2.13.0): + resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.22.1)(algoliasearch@4.22.1) + '@docsearch/css': 3.6.0 + algoliasearch: 4.22.1 + search-insights: 2.13.0 + transitivePeerDependencies: + - '@algolia/client-search' + dev: true + /@emnapi/runtime@0.45.0: resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} requiresBuild: true @@ -773,6 +956,15 @@ packages: dev: true optional: true + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.19.12: resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} @@ -782,6 +974,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.19.12: resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} @@ -791,6 +992,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.19.12: resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} @@ -800,6 +1010,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.19.12: resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} @@ -809,6 +1028,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.19.12: resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} @@ -818,6 +1046,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.19.12: resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} @@ -827,6 +1064,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.19.12: resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} @@ -836,6 +1082,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.19.12: resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} @@ -845,6 +1100,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.19.12: resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} @@ -854,6 +1118,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.19.12: resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} @@ -863,6 +1136,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.19.12: resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} @@ -872,6 +1154,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.19.12: resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} @@ -881,6 +1172,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.19.12: resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} @@ -890,6 +1190,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.19.12: resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} @@ -899,6 +1208,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.19.12: resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} @@ -908,6 +1226,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.19.12: resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} @@ -917,6 +1244,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.19.12: resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} @@ -926,6 +1262,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.19.12: resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} @@ -935,6 +1280,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.19.12: resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} @@ -944,6 +1298,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.19.12: resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} @@ -953,6 +1316,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.19.12: resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} @@ -962,6 +1334,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.19.12: resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} @@ -971,6 +1352,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@hono/node-server@1.8.2: resolution: {integrity: sha512-h8l2TBLCPHZBUrrkosZ6L5CpBLj6zdESyF4B+zngiCDF7aZFQJ0alVbLx7jn8PCVi9EyoFf8a4hOZFi1tD95EA==} engines: {node: '>=18.14.1'} @@ -1318,6 +1708,16 @@ packages: dev: true optional: true + /@shikijs/core@1.2.0: + resolution: {integrity: sha512-OlFvx+nyr5C8zpcMBnSGir0YPD6K11uYhouqhNmm1qLiis4GA7SsGtu07r9gKS9omks8RtQqHrJL4S+lqWK01A==} + dev: true + + /@shikijs/transformers@1.2.0: + resolution: {integrity: sha512-xKn7DtA65DQV4FOfYsrvqM80xOy2xuXnxWWKsZmHv1VII/IOuDUDsWDu3KnpeLH6wqNJWp1GRoNUsHR1aw/VhQ==} + dependencies: + shiki: 1.2.0 + dev: true + /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true @@ -1786,16 +2186,46 @@ packages: resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} dev: true + /@types/linkify-it@3.0.5: + resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + dev: true + + /@types/markdown-it@13.0.7: + resolution: {integrity: sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==} + dependencies: + '@types/linkify-it': 3.0.5 + '@types/mdurl': 1.0.5 + dev: true + /@types/md5@2.3.5: resolution: {integrity: sha512-/i42wjYNgE6wf0j2bcTX6kuowmdL/6PE4IVitMpm2eYKBUuYCprdcWVK+xEF0gcV6ufMCRhtxmReGfc6hIK7Jw==} dev: true - /@types/node@20.11.29: - resolution: {integrity: sha512-P99thMkD/1YkCvAtOd6/zGedKNA0p2fj4ZpjCzcNiSCBWgm3cNRTBfa/qjFnsKkkojxu4vVLtWpesnZ9+ap+gA==} + /@types/mdurl@1.0.5: + resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + dev: true + + /@types/node@20.11.30: + resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} dependencies: undici-types: 5.26.5 dev: true + /@types/web-bluetooth@0.0.20: + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + dev: true + + /@vitejs/plugin-vue@5.0.4(vite@5.2.2)(vue@3.4.21): + resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + dependencies: + vite: 5.2.2(@types/node@20.11.30) + vue: 3.4.21(typescript@5.4.3) + dev: true + /@vitest/coverage-v8@1.4.0(vitest@1.4.0): resolution: {integrity: sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==} peerDependencies: @@ -1815,7 +2245,7 @@ packages: strip-literal: 2.0.0 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 - vitest: 1.4.0(@types/node@20.11.29) + vitest: 1.4.0(@types/node@20.11.30) transitivePeerDependencies: - supports-color dev: true @@ -1859,6 +2289,181 @@ packages: pretty-format: 29.7.0 dev: true + /@vue/compiler-core@3.4.21: + resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} + dependencies: + '@babel/parser': 7.24.1 + '@vue/shared': 3.4.21 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + dev: true + + /@vue/compiler-dom@3.4.21: + resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} + dependencies: + '@vue/compiler-core': 3.4.21 + '@vue/shared': 3.4.21 + dev: true + + /@vue/compiler-sfc@3.4.21: + resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} + dependencies: + '@babel/parser': 7.24.1 + '@vue/compiler-core': 3.4.21 + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + estree-walker: 2.0.2 + magic-string: 0.30.8 + postcss: 8.4.38 + source-map-js: 1.2.0 + dev: true + + /@vue/compiler-ssr@3.4.21: + resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/shared': 3.4.21 + dev: true + + /@vue/devtools-api@7.0.20(vue@3.4.21): + resolution: {integrity: sha512-DGEIdotTQFll4187YGc/0awcag7UGJu9M6rE1Pxcs8AX/sGm0Ikk7UqQELmqYsyPzTT9s6OZzSPuBc4OatOXKA==} + dependencies: + '@vue/devtools-kit': 7.0.20(vue@3.4.21) + transitivePeerDependencies: + - vue + dev: true + + /@vue/devtools-kit@7.0.20(vue@3.4.21): + resolution: {integrity: sha512-FgFuPuqrhQ51rR/sVi52FnGgrxJ3X1bvNra/SkBzPhxJVhfyL5w2YUJZI1FgCvtLAyPSomJNdvlG415ZbJsr6w==} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@vue/devtools-shared': 7.0.20 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + vue: 3.4.21(typescript@5.4.3) + dev: true + + /@vue/devtools-shared@7.0.20: + resolution: {integrity: sha512-E6CiCaYr6ZWOCYJgWodXcPCXxB12vgbUA1X1sG0F1tK5Bo5I35GJuTR8LBJLFHV0VpwLWvyrIi9drT1ZbuJxlg==} + dependencies: + rfdc: 1.3.1 + dev: true + + /@vue/reactivity@3.4.21: + resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==} + dependencies: + '@vue/shared': 3.4.21 + dev: true + + /@vue/runtime-core@3.4.21: + resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==} + dependencies: + '@vue/reactivity': 3.4.21 + '@vue/shared': 3.4.21 + dev: true + + /@vue/runtime-dom@3.4.21: + resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==} + dependencies: + '@vue/runtime-core': 3.4.21 + '@vue/shared': 3.4.21 + csstype: 3.1.3 + dev: true + + /@vue/server-renderer@3.4.21(vue@3.4.21): + resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==} + peerDependencies: + vue: 3.4.21 + dependencies: + '@vue/compiler-ssr': 3.4.21 + '@vue/shared': 3.4.21 + vue: 3.4.21(typescript@5.4.3) + dev: true + + /@vue/shared@3.4.21: + resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} + dev: true + + /@vueuse/core@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.9.0 + '@vueuse/shared': 10.9.0(vue@3.4.21) + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@vueuse/integrations@10.9.0(focus-trap@7.5.4)(vue@3.4.21): + resolution: {integrity: sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==} + peerDependencies: + async-validator: '*' + axios: '*' + change-case: '*' + drauu: '*' + focus-trap: '*' + fuse.js: '*' + idb-keyval: '*' + jwt-decode: '*' + nprogress: '*' + qrcode: '*' + sortablejs: '*' + universal-cookie: '*' + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + dependencies: + '@vueuse/core': 10.9.0(vue@3.4.21) + '@vueuse/shared': 10.9.0(vue@3.4.21) + focus-trap: 7.5.4 + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + + /@vueuse/metadata@10.9.0: + resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} + dev: true + + /@vueuse/shared@10.9.0(vue@3.4.21): + resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} + dependencies: + vue-demi: 0.14.7(vue@3.4.21) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: true + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -1876,6 +2481,25 @@ packages: hasBin: true dev: true + /algoliasearch@4.22.1: + resolution: {integrity: sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg==} + dependencies: + '@algolia/cache-browser-local-storage': 4.22.1 + '@algolia/cache-common': 4.22.1 + '@algolia/cache-in-memory': 4.22.1 + '@algolia/client-account': 4.22.1 + '@algolia/client-analytics': 4.22.1 + '@algolia/client-common': 4.22.1 + '@algolia/client-personalization': 4.22.1 + '@algolia/client-search': 4.22.1 + '@algolia/logger-common': 4.22.1 + '@algolia/logger-console': 4.22.1 + '@algolia/requester-browser-xhr': 4.22.1 + '@algolia/requester-common': 4.22.1 + '@algolia/requester-node-http': 4.22.1 + '@algolia/transporter': 4.22.1 + dev: true + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -2097,6 +2721,10 @@ packages: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} dev: false + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: true + /data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} @@ -2169,8 +2797,8 @@ packages: engines: {node: '>=0.4.0'} dev: false - /detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} dev: false @@ -2190,6 +2818,11 @@ packages: once: 1.4.0 dev: true + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -2361,11 +2994,46 @@ packages: '@esbuild/win32-x64': 0.19.12 dev: true + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + dev: true + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: @@ -2399,8 +3067,8 @@ packages: resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} dev: true - /fast-redact@3.4.0: - resolution: {integrity: sha512-2gwPvyna0zwBdxKnng1suu/dTL5s8XEy2ZqH8mwDUwJdDkV8w5kp+JV26mupdK68HmPMbm6yjW9m7/Ys/BHEHg==} + /fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} engines: {node: '>=6'} dev: false @@ -2415,6 +3083,12 @@ packages: strnum: 1.0.5 dev: false + /focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + dependencies: + tabbable: 6.2.0 + dev: true + /follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -2587,11 +3261,15 @@ packages: resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} dev: true - /hono@4.1.2: - resolution: {integrity: sha512-pbfllzxpZifsp8gbjB01wetLk6Lc4p0OkJmtbH92CYFMPAdL6dzS2tHldfPjnNP87mNJS717P72lt6jzZSqg/g==} + /hono@4.1.3: + resolution: {integrity: sha512-V0I6qCw0gn2MA4LLtyXe6oD3/7ToeQf5Zv98o7uSuLuViQgWHJeYoYrZ4NbXhOtg4SaZjNJJm1+XuFB3LN+j6A==} engines: {node: '>=16.0.0'} dev: false + /hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + dev: true + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -2844,9 +3522,9 @@ packages: /magicast@0.3.3: resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} dependencies: - '@babel/parser': 7.24.0 + '@babel/parser': 7.24.1 '@babel/types': 7.24.0 - source-map-js: 1.1.0 + source-map-js: 1.2.0 dev: true /make-dir@4.0.0: @@ -2856,6 +3534,10 @@ packages: semver: 7.6.0 dev: true + /mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + dev: true + /md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} dependencies: @@ -2900,13 +3582,21 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /minisearch@6.3.0: + resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} + dev: true + + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + dev: true + /mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} dependencies: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.5.2 + ufo: 1.5.3 dev: true /ms@2.1.2: @@ -3059,6 +3749,10 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + dev: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -3080,8 +3774,8 @@ packages: readable-stream: 4.5.2 split2: 4.2.0 - /pino-pretty@10.3.1: - resolution: {integrity: sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==} + /pino-pretty@11.0.0: + resolution: {integrity: sha512-YFJZqw59mHIY72wBnBs7XhLGG6qpJMa4pEQTRgEPEbjIYbng2LXEZZF1DoyDg9CfejEy8uZCyzpcBXXG0oOCwQ==} hasBin: true dependencies: colorette: 2.0.20 @@ -3109,7 +3803,7 @@ packages: hasBin: true dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.4.0 + fast-redact: 3.5.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 1.1.0 pino-std-serializers: 6.2.2 @@ -3139,7 +3833,6 @@ packages: resolution: {integrity: sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==} engines: {node: '>=16'} hasBin: true - requiresBuild: true dependencies: playwright-core: 1.42.1 optionalDependencies: @@ -3151,13 +3844,17 @@ packages: engines: {node: '>= 0.4'} dev: true - /postcss@8.4.36: - resolution: {integrity: sha512-/n7eumA6ZjFHAsbX30yhHup/IMkOmlmvtEi7P+6RMYf+bGJSUHc3geH4a0NSZxAz/RJfiS9tooCTs9LAVYUZKw==} + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.1.0 + source-map-js: 1.2.0 + dev: true + + /preact@10.20.0: + resolution: {integrity: sha512-wU7iZw2BjsaKDal3pDRDy/HpPB6cuFOnVUCcw9aIPKG98+ZrXx3F+szkos8BVME5bquyKDKvRlOJFG8kMkcAbg==} dev: true /prettier@3.2.5: @@ -3256,6 +3953,10 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true + /rollup@4.13.0: resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3306,6 +4007,10 @@ packages: engines: {node: '>=10'} dev: false + /search-insights@2.13.0: + resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} + dev: true + /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: true @@ -3349,7 +4054,7 @@ packages: requiresBuild: true dependencies: color: 4.2.3 - detect-libc: 2.0.2 + detect-libc: 2.0.3 semver: 7.6.0 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.2 @@ -3401,6 +4106,12 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: true + /shiki@1.2.0: + resolution: {integrity: sha512-xLhiTMOIUXCv5DqJ4I70GgQCtdlzsTqFLZWcMHHG3TAieBUbvEGthdrlPDlX4mL/Wszx9C6rEcxU6kMlg4YlxA==} + dependencies: + '@shikijs/core': 1.2.0 + dev: true + /side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -3430,8 +4141,8 @@ packages: dependencies: atomic-sleep: 1.0.0 - /source-map-js@1.1.0: - resolution: {integrity: sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} dev: true @@ -3457,6 +4168,11 @@ packages: resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} dev: true + /speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + dev: true + /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} @@ -3553,6 +4269,10 @@ packages: engines: {node: '>= 0.4'} dev: true + /tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + dev: true + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -3655,14 +4375,14 @@ packages: possible-typed-array-names: 1.0.0 dev: true - /typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + /typescript@5.4.3: + resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} engines: {node: '>=14.17'} hasBin: true dev: true - /ufo@1.5.2: - resolution: {integrity: sha512-eiutMaL0J2MKdhcOM1tUy13pIrYnyR87fEd8STJQFrrAwImwvlXkxlZEjaKah8r2viPohld08lt73QfLG1NxMg==} + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} dev: true /unbox-primitive@1.0.2: @@ -3699,7 +4419,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-node@1.4.0(@types/node@20.11.29): + /vite-node@1.4.0(@types/node@20.11.30): resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -3708,7 +4428,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.6(@types/node@20.11.29) + vite: 5.2.2(@types/node@20.11.30) transitivePeerDependencies: - '@types/node' - less @@ -3720,8 +4440,8 @@ packages: - terser dev: true - /vite@5.1.6(@types/node@20.11.29): - resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} + /vite@5.2.2(@types/node@20.11.30): + resolution: {integrity: sha512-FWZbz0oSdLq5snUI0b6sULbz58iXFXdvkZfZWR/F0ZJuKTSPO7v72QPXt6KqYeMFb0yytNp6kZosxJ96Nr/wDQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3748,15 +4468,70 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.29 - esbuild: 0.19.12 - postcss: 8.4.36 + '@types/node': 20.11.30 + esbuild: 0.20.2 + postcss: 8.4.38 rollup: 4.13.0 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@1.4.0(@types/node@20.11.29): + /vitepress@1.0.0-rc.45(@algolia/client-search@4.22.1)(@types/node@20.11.30)(search-insights@2.13.0)(typescript@5.4.3): + resolution: {integrity: sha512-/OiYsu5UKpQKA2c0BAZkfyywjfauDjvXyv6Mo4Ra57m5n4Bxg1HgUGoth1CLH2vwUbR/BHvDA9zOM0RDvgeSVQ==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4.3.2 + postcss: ^8.4.35 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + dependencies: + '@docsearch/css': 3.6.0 + '@docsearch/js': 3.6.0(@algolia/client-search@4.22.1)(search-insights@2.13.0) + '@shikijs/core': 1.2.0 + '@shikijs/transformers': 1.2.0 + '@types/markdown-it': 13.0.7 + '@vitejs/plugin-vue': 5.0.4(vite@5.2.2)(vue@3.4.21) + '@vue/devtools-api': 7.0.20(vue@3.4.21) + '@vueuse/core': 10.9.0(vue@3.4.21) + '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(vue@3.4.21) + focus-trap: 7.5.4 + mark.js: 8.11.1 + minisearch: 6.3.0 + shiki: 1.2.0 + vite: 5.2.2(@types/node@20.11.30) + vue: 3.4.21(typescript@5.4.3) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + dev: true + + /vitest@1.4.0(@types/node@20.11.30): resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -3781,7 +4556,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.11.29 + '@types/node': 20.11.30 '@vitest/expect': 1.4.0 '@vitest/runner': 1.4.0 '@vitest/snapshot': 1.4.0 @@ -3799,8 +4574,8 @@ packages: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.1.6(@types/node@20.11.29) - vite-node: 1.4.0(@types/node@20.11.29) + vite: 5.2.2(@types/node@20.11.30) + vite-node: 1.4.0(@types/node@20.11.30) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -3812,6 +4587,37 @@ packages: - terser dev: true + /vue-demi@0.14.7(vue@3.4.21): + resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.4.21(typescript@5.4.3) + dev: true + + /vue@3.4.21(typescript@5.4.3): + resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.21 + '@vue/compiler-sfc': 3.4.21 + '@vue/runtime-dom': 3.4.21 + '@vue/server-renderer': 3.4.21(vue@3.4.21) + '@vue/shared': 3.4.21 + typescript: 5.4.3 + dev: true + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: diff --git a/src/app.ts b/src/app.ts index 79d80c1..babc3b6 100644 --- a/src/app.ts +++ b/src/app.ts @@ -55,12 +55,12 @@ export function createApplication( return c.json({ message: err.message }, status); }); - app.use("/*", handleExtractQueryParamsMiddleware(stringEncrypter)); + app.use("/", handleExtractQueryParamsMiddleware(stringEncrypter)); if (process.env.ALLOW_LIST && process.env.ALLOW_LIST.trim() !== "") { const allowList = formatAllowList(process.env.ALLOW_LIST); logger.info(`Allowed Domains: ${allowList.join(", ")}`); - app.use("/*", handleAllowListMiddleware(allowList)); + app.use("/", handleAllowListMiddleware(allowList)); } app.get("/", getIndex(imageStorageService, imageRenderService)); From 044a4ec6a05cd39e25f556739bab4502ba532e46 Mon Sep 17 00:00:00 2001 From: Jason Raimondi Date: Wed, 20 Mar 2024 23:51:30 -0400 Subject: [PATCH 6/8] chore: update license to gnu gplv3 --- LICENSE | 675 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 671 insertions(+), 4 deletions(-) diff --git a/LICENSE b/LICENSE index 56bd727..e70e8b1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,674 @@ -Copyright 2024 Jason Raimondi + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + Preamble -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + @jmondi/url-to-png Copyright (C) 2024 Jason Raimondi + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From dec9e21dfbeeba202112bde68a181de5b05dc44f Mon Sep 17 00:00:00 2001 From: Jason Raimondi Date: Wed, 20 Mar 2024 23:54:18 -0400 Subject: [PATCH 7/8] chore: fix prettier write dir and add tests dir --- package.json | 2 +- tests/app.spec.ts | 20 +++++++++++++++----- tests/helpers/stubs.ts | 7 +++---- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index d60451b..6a16d9d 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "dev": "tsx --watch src/main.ts | pino-pretty", "compile": "tsc --project tsconfig.build.json", "build": "run-s clean compile", - "format": "prettier --write \"./src/**/*.ts\"", + "format": "prettier --write \"./(src|tests)/**/*.ts\"", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", diff --git a/tests/app.spec.ts b/tests/app.spec.ts index e19f2eb..e6ae19d 100644 --- a/tests/app.spec.ts +++ b/tests/app.spec.ts @@ -62,14 +62,16 @@ suite("app", () => { it("throws when invalid domain", async () => { const res = await app.request("/?url=bar"); expect(res.status).toBe(400); - expect(await res.text()).toMatch(/Invalid query/ig); + expect(await res.text()).toMatch(/Invalid query/gi); }); }); describe("GET /?hash=", () => { describe("without CRYPTO_KEY", () => { it("throws when server is not configured for encryption", async () => { - const res = await app.request("/?hash=str-enc:a/4xkic0kY8scM3QRJIiLLtQ3NhZxEudhmd7RZDbsuuguXkamhZe0HdW9LmnZxtGCtf0GAPO5II85fE8rSkdFNIbBATyS/INKM0hmw==:a4S74z7c4DQVtijl"); + const res = await app.request( + "/?hash=str-enc:a/4xkic0kY8scM3QRJIiLLtQ3NhZxEudhmd7RZDbsuuguXkamhZe0HdW9LmnZxtGCtf0GAPO5II85fE8rSkdFNIbBATyS/INKM0hmw==:a4S74z7c4DQVtijl", + ); const body = await res.json(); expect(res.status).toBe(400); expect(body.message).toMatch(/This server is not configured for encryption/); @@ -78,13 +80,21 @@ suite("app", () => { describe("with CRYPTO_KEY", () => { beforeEach(async () => { - const cryptoKey = '{"kty":"oct","k":"cq8cebOn49gXxcjoRbjP93z4OpzCkyz4WJSgPnvR4ds","alg":"A256GCM","key_ops":["encrypt","decrypt"],"ext":true}'; + const cryptoKey = + '{"kty":"oct","k":"cq8cebOn49gXxcjoRbjP93z4OpzCkyz4WJSgPnvR4ds","alg":"A256GCM","key_ops":["encrypt","decrypt"],"ext":true}'; const stringEncrypter = await StringEncrypter.fromCryptoString(cryptoKey); - app = createApplication(browserPool, imageRenderService, imageStorageService, stringEncrypter); + app = createApplication( + browserPool, + imageRenderService, + imageStorageService, + stringEncrypter, + ); }); it("succeeds!", async () => { - const res = await app.request("/?hash=str-enc:a/4xkic0kY8scM3QRJIiLLtQ3NhZxEudhmd7RZDbsuuguXkamhZe0HdW9LmnZxtGCtf0GAPO5II85fE8rSkdFNIbBATyS/INKM0hmw==:a4S74z7c4DQVtijl"); + const res = await app.request( + "/?hash=str-enc:a/4xkic0kY8scM3QRJIiLLtQ3NhZxEudhmd7RZDbsuuguXkamhZe0HdW9LmnZxtGCtf0GAPO5II85fE8rSkdFNIbBATyS/INKM0hmw==:a4S74z7c4DQVtijl", + ); expect(res.status).toBe(200); }); }); diff --git a/tests/helpers/stubs.ts b/tests/helpers/stubs.ts index 613576f..aaad428 100644 --- a/tests/helpers/stubs.ts +++ b/tests/helpers/stubs.ts @@ -1,6 +1,6 @@ import fs from "fs/promises"; -import {ImageRenderInterface} from "../../src/lib/image_render.js"; +import { ImageRenderInterface } from "../../src/lib/image_render.js"; export class StubImageRenderService implements ImageRenderInterface { static readonly POOL_METRICS = { @@ -13,11 +13,10 @@ export class StubImageRenderService implements ImageRenderInterface { available: 1, }; - async drainBrowserPool(): Promise { - } + async drainBrowserPool(): Promise {} async screenshot(): Promise { - const {join} = await import("path"); + const { join } = await import("path"); const filePath = join(__dirname, "./assets/test_img.png"); return await fs.readFile(filePath); } From 23528cf108f502930cd5a97c9d9ec4da2ea8f155 Mon Sep 17 00:00:00 2001 From: Jason Raimondi Date: Thu, 21 Mar 2024 00:00:46 -0400 Subject: [PATCH 8/8] ci: fix node-version --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c42b9bf..c4851c4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -19,7 +19,7 @@ jobs: version: 8 - uses: actions/setup-node@v4 with: - node-version-file: 20 + node-version: 20 cache: pnpm cache-dependency-path: pnpm-lock.yaml - run: pnpm install --frozen-lockfile