diff --git a/.pnpmfile.cjs b/.pnpmfile.cjs new file mode 100644 index 0000000..fe3201e --- /dev/null +++ b/.pnpmfile.cjs @@ -0,0 +1,31 @@ +function readPackage(pkg) { + // some dependencies will try pull in react on their own. + // normally, with vite, this is fine. vite will replace react with preact using aliases. + // but SSR mode disables those aliases, because it doesn't bundle dependencies. + // so the react imports are left in place, and then dependencies are trying to use react hooks in a preact context, and + // all other kinds of funky business. + + // this replaces react with preact in dependencies, and removes react from peerDependencies. + // this means react is pretty much not installed, and pnpm aliases `react` as `preact` in node_modules + // for those packages. + + // this mostly fixes all preact compatibility issues, and the ones that remain can be handled by force bundling + // the dependencies that are causing issues. you can see that in vite.config.ts, ssr.noExternal is set for some dependencies. + if (pkg.dependencies) { + if (pkg.dependencies.react) pkg.dependencies.react = 'npm:@preact/compat'; + if (pkg.dependencies['react-dom']) pkg.dependencies['react-dom'] = 'npm:@preact/compat'; + } + + if (pkg.peerDependencies) { + delete pkg.peerDependencies.react; + delete pkg.peerDependencies['react-dom']; + } + + return pkg; +} + +module.exports = { + hooks: { + readPackage, + }, +}; diff --git a/.vscode/settings.json b/.vscode/settings.json index dda6da6..969325e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,9 +1,10 @@ { + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, "css.validate": false, "less.validate": false, "npm.scriptExplorerExclude": ["^((?!watch|generate:watch).)*$"], "scss.validate": false, - "typescript.tsdk": "node_modules/typescript/lib", "eslint.workingDirectories": [ { "pattern": "./{packages,apps}/*" diff --git a/Dockerfile b/Dockerfile index cb9a159..8e1d8d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,4 @@ -FROM node:18-alpine AS deps -ENV NEXT_TELEMETRY_DISABLED 1 +FROM node:20-alpine AS deps RUN apk add --no-cache libc6-compat make clang build-base python3 RUN npm i -g pnpm @@ -13,8 +12,7 @@ RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store \ -FROM node:18-alpine AS builder -ENV NEXT_TELEMETRY_DISABLED 1 +FROM node:20-alpine AS builder WORKDIR /usr/src/micro @@ -36,8 +34,7 @@ RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store \ -FROM node:18-alpine AS runner -ENV NEXT_TELEMETRY_DISABLED 1 +FROM node:20-alpine AS runner ENV NODE_ENV production WORKDIR /usr/src/micro @@ -45,12 +42,8 @@ WORKDIR /usr/src/micro RUN apk add --no-cache ffmpeg # copy file dependencies -COPY --from=builder /usr/src/micro/packages/web/public ./packages/web/public -COPY --from=builder /usr/src/micro/packages/web/next.config.js ./packages/web/next.config.js - -# copy web -COPY --from=builder --chown=node:node /usr/src/micro/packages/web/.next/standalone/ ./ -COPY --from=builder --chown=node:node /usr/src/micro/packages/web/.next/static ./packages/web/.next/static/ +COPY --from=builder --chown=node:node /usr/src/micro/packages/web/dist/ ./packages/web/dist/ +COPY --from=builder --chown=node:node /usr/src/micro/packages/web/package.json ./packages/web/ # copy api COPY --from=builder --chown=node:node /usr/src/micro/packages/api/pruned ./packages/api diff --git a/README.md b/README.md index a071c94..092974d 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,8 @@ A vanity file sharing service with support for ShareX. You can see a preview at - [installation](#installation) - [configuration](#configuration) - [updating](#updating) + - [development](#development) + - [`web` package notes](#web-package-notes) - [todo](#todo) - [support](#support) @@ -97,6 +99,24 @@ The database will be automatically migrated on startup. 1. `docker compose pull micro` 2. `docker compose up -d micro` +## development + +You can pull the repo and then `pnpm install`, after that everything should be good to go. You can start the `packages/api`/`packages/web` with `pnpm watch`. + +### `web` package notes + +> [!IMPORTANT] +> tl;dr, `web` is quirky and some packages that depend on react may break. if they do, try adding them to `noExternal` in vite.config.ts and they'll probably work. + +The web package is a little weird. It uses [vike](https://vike.dev) in place of what might normally be nextjs, [preact](https://preactjs.com) in place of react and [vite](https://vitejs.dev) to build it all. Unlike nextjs, we have much more control over rendering, SSR, routing, etc. It's much faster, and much more fun. Of course, nothing is free - some hacky workarounds are required to get it working. + +Preact is smaller, faster[,](https://tenor.com/view/26464591) and more fun than react. It's a drop-in replacement, but actually dropping it in is the hard part. The main problem is that in SSR mode, vite does not bundle dependencies, which means aliasing `react` to `preact` does not work because it's not transforming the packages to replace the react imports. You can force it to bundle dependencies, but then it chokes on some node dependencies like fastify. The only way I've found to get around this is to: + +- Alias `react` to `preact` in node_modules using `.pnpmfile.cjs` +- Add some packages that still complain to `noExternal` in `vite.config.ts`, which forces them to be bundled and appears to resolve any remaining issues. + +`tsup` is used as a final build step to bundle everything together. Vite breaks doing this, but not doing it results in much larger docker images. + ## todo - [ ] Ratelimiting diff --git a/package.json b/package.json index bd40b3a..0716c0e 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ }, "devDependencies": { "syncpack": "^12.3.0", - "turbo": "1.11.3" + "turbo": "1.11.3", + "typescript": "^5.3.3" }, "packageManager": "pnpm@7.0.0" } diff --git a/packages/api/package.json b/packages/api/package.json index a8f4ce2..5dffd41 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -12,6 +12,7 @@ "scripts": { "build": "tsc --noEmit && tsup", "lint": "eslint src --fix --cache", + "start": "node dist/main.js", "test": "vitest run", "watch": "tsup --watch --onSuccess \"node dist/main.js\"" }, @@ -48,7 +49,8 @@ "passport-jwt": "^4.0.1", "rxjs": "^7.8.1", "sharp": "^0.33.1", - "stream-size": "^0.0.6" + "stream-size": "^0.0.6", + "utf-8-validate": "^6.0.3" }, "devDependencies": { "@atlasbot/configs": "^10.5.15", @@ -64,6 +66,7 @@ "@types/node": "^20.10.6", "@types/nodemailer": "^6.4.14", "@types/passport-jwt": "^4.0.0", + "@types/utf-8-validate": "^5.0.2", "bytes": "^3.1.2", "chalk": "^5.3.0", "content-range": "^2.0.2", diff --git a/packages/api/src/helpers/is-likely-binary.ts b/packages/api/src/helpers/is-likely-binary.ts new file mode 100644 index 0000000..b7a2c91 --- /dev/null +++ b/packages/api/src/helpers/is-likely-binary.ts @@ -0,0 +1,8 @@ +const prefixes = ['image/', 'video/', 'audio/']; + +export const isLikelyBinary = (mimeType: string) => { + if (mimeType === 'application/octet-stream') return true; + const hasPrefix = prefixes.some((prefix) => mimeType.startsWith(prefix)); + if (hasPrefix) return true; + return false; +}; diff --git a/packages/api/src/migrations/Migration20240126092417.ts b/packages/api/src/migrations/Migration20240126092417.ts new file mode 100644 index 0000000..eba1890 --- /dev/null +++ b/packages/api/src/migrations/Migration20240126092417.ts @@ -0,0 +1,11 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20240126092417 extends Migration { + async up(): Promise { + this.addSql('alter table "files" add column "is_utf8" boolean null;'); + } + + async down(): Promise { + this.addSql('alter table "files" drop column "is_utf8";'); + } +} diff --git a/packages/api/src/modules/auth/auth.resolver.ts b/packages/api/src/modules/auth/auth.resolver.ts index 76d3c0e..073ebbe 100644 --- a/packages/api/src/modules/auth/auth.resolver.ts +++ b/packages/api/src/modules/auth/auth.resolver.ts @@ -1,7 +1,7 @@ import { InjectRepository } from '@mikro-orm/nestjs'; import { EntityRepository } from '@mikro-orm/postgresql'; import { UseGuards } from '@nestjs/common'; -import { Args, Context, Mutation, Resolver } from '@nestjs/graphql'; +import { Args, Context, Mutation, Query, Resolver } from '@nestjs/graphql'; import type { FastifyReply } from 'fastify'; import ms from 'ms'; import { rootHost } from '../../config.js'; @@ -60,7 +60,7 @@ export class AuthResolver { return true; } - @Mutation(() => OTPEnabledDto) + @Query(() => OTPEnabledDto) @UseGuards(JWTAuthGuard) async generateOTP(@UserId() userId: string) { const user = await this.userRepo.findOneOrFail(userId); diff --git a/packages/api/src/modules/file/file.entity.ts b/packages/api/src/modules/file/file.entity.ts index 940ba75..38d724d 100644 --- a/packages/api/src/modules/file/file.entity.ts +++ b/packages/api/src/modules/file/file.entity.ts @@ -40,6 +40,9 @@ export class File extends Resource { @Field() hash: string; + @Property({ nullable: true }) + isUtf8?: boolean; + @Embedded(() => FileMetadata, { nullable: true }) @Field(() => FileMetadata, { nullable: true }) metadata?: FileMetadata; diff --git a/packages/api/src/modules/file/file.resolver.ts b/packages/api/src/modules/file/file.resolver.ts index e67346b..0e5da90 100644 --- a/packages/api/src/modules/file/file.resolver.ts +++ b/packages/api/src/modules/file/file.resolver.ts @@ -8,10 +8,17 @@ import { ResourceLocations } from '../../types/resource-locations.type.js'; import { UserId } from '../auth/auth.decorators.js'; import { OptionalJWTAuthGuard } from '../auth/guards/optional-jwt.guard.js'; import { File } from './file.entity.js'; +import { StorageService } from '../storage/storage.service.js'; +import isValidUtf8 from 'utf-8-validate'; +import { isLikelyBinary } from '../../helpers/is-likely-binary.js'; @Resolver(() => File) export class FileResolver { - constructor(@InjectRepository(File) private readonly fileRepo: EntityRepository) {} + private static readonly MAX_PREVIEWABLE_TEXT_SIZE = 1 * 1024 * 1024; // 1 MB + constructor( + @InjectRepository(File) private readonly fileRepo: EntityRepository, + private storageService: StorageService, + ) {} @Query(() => File) @UseGuards(OptionalJWTAuthGuard) @@ -27,7 +34,7 @@ export class FileResolver { async deleteFile( @UserId() userId: string, @Args('fileId', { type: () => ID }) fileId: string, - @Args('key', { nullable: true }) deleteKey?: string + @Args('key', { nullable: true }) deleteKey?: string, ) { const file = await this.fileRepo.findOneOrFail(fileId, { populate: ['deleteKey'] }); if (file.owner.id !== userId && (!deleteKey || file.deleteKey !== deleteKey)) { @@ -38,6 +45,30 @@ export class FileResolver { return true; } + @ResolveField(() => String, { nullable: true }) + async textContent(@Parent() file: File) { + if (file.isUtf8 === false) return null; + if (file.size > FileResolver.MAX_PREVIEWABLE_TEXT_SIZE) return null; + if (isLikelyBinary(file.type)) return null; + + const stream = this.storageService.createReadStream(file.hash); + const chunks = []; + for await (const chunk of stream) { + const isUtf8 = isValidUtf8(chunk); + if (!isUtf8) { + const ref = this.fileRepo.getReference(file.id); + ref.isUtf8 = false; + await this.fileRepo.persistAndFlush(ref); + return null; + } + + chunks.push(chunk); + } + + const buffer = Buffer.concat(chunks); + return buffer.toString(); + } + @ResolveField(() => String) displayName(@Parent() file: File) { return file.getDisplayName(); diff --git a/packages/api/src/orm.config.ts b/packages/api/src/orm.config.ts index 7f6a349..2a09b8e 100644 --- a/packages/api/src/orm.config.ts +++ b/packages/api/src/orm.config.ts @@ -4,6 +4,7 @@ import { FlushMode } from '@mikro-orm/core'; import type { MikroOrmModuleSyncOptions } from '@mikro-orm/nestjs'; import { Logger, NotFoundException } from '@nestjs/common'; import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; import { config } from './config.js'; import { FileMetadata } from './modules/file/file-metadata.embeddable.js'; import { File } from './modules/file/file.entity.js'; @@ -13,9 +14,6 @@ import { Paste } from './modules/paste/paste.entity.js'; import { Thumbnail } from './modules/thumbnail/thumbnail.entity.js'; import { UserVerification } from './modules/user/user-verification.entity.js'; import { User } from './modules/user/user.entity.js'; -import { fileURLToPath } from 'url'; - -process.env.MIKRO_ORM_DYNAMIC_IMPORTS = 'true'; export const ORM_LOGGER = new Logger('MikroORM'); export const MIGRATIONS_TABLE_NAME = 'mikro_orm_migrations'; diff --git a/packages/api/src/schema.gql b/packages/api/src/schema.gql index e018225..0c986cd 100644 --- a/packages/api/src/schema.gql +++ b/packages/api/src/schema.gql @@ -58,6 +58,7 @@ type File { paths: ResourceLocations! size: Float! sizeFormatted: String! + textContent: String thumbnail: Thumbnail type: String! urls: ResourceLocations! @@ -108,7 +109,6 @@ type Mutation { createUser(data: CreateUserDto!): User! deleteFile(fileId: ID!, key: String): Boolean! disableOTP(otpCode: String!): Boolean! - generateOTP: OTPEnabledDto! login(otpCode: String, password: String!, username: String!): User! logout: Boolean! refreshToken: User! @@ -157,6 +157,7 @@ type PastePageEdge { type Query { config: Config! file(fileId: ID!): File! + generateOTP: OTPEnabledDto! invite(inviteId: ID!): Invite! link(linkId: ID!): Link! paste(pasteId: ID!): Paste! diff --git a/packages/api/tsup.config.ts b/packages/api/tsup.config.ts index 1bbd488..407685d 100644 --- a/packages/api/tsup.config.ts +++ b/packages/api/tsup.config.ts @@ -1,7 +1,7 @@ import { defineConfig } from 'tsup'; export default defineConfig({ - entry: ['src/main.ts', 'src/migrations/*'], + entry: ['src/main.ts', 'src/orm.config.ts', 'src/migrations/*'], outDir: 'dist', target: 'node18', format: 'esm', diff --git a/packages/web/.env b/packages/web/.env index 15f9205..5d96d28 100644 --- a/packages/web/.env +++ b/packages/web/.env @@ -1 +1 @@ -API_URL=http://localhost:8080 \ No newline at end of file +PUBLIC_ENV__FRONTEND_API_URL=http://localhost:8080 \ No newline at end of file diff --git a/packages/web/apollo.config.js b/packages/web/apollo.config.js deleted file mode 100644 index 6575419..0000000 --- a/packages/web/apollo.config.js +++ /dev/null @@ -1,17 +0,0 @@ -const path = require('path'); - -// https://github.com/apollographql/apollo-tooling/issues/821 -const isWorkspaceRoot = !__dirname.includes('packages'); -const relativeSchemaPath = isWorkspaceRoot ? 'packages/api/src/schema.gql' : '../api/src/schema.gql'; -const localSchemaFile = path.resolve(__dirname, relativeSchemaPath); - -module.exports = { - client: { - tagName: 'gql', - excludes: ['**/generated/**'], - service: { - name: 'api', - localSchemaFile: localSchemaFile, - }, - }, -}; diff --git a/packages/web/codegen.ts b/packages/web/codegen.ts new file mode 100644 index 0000000..8768366 --- /dev/null +++ b/packages/web/codegen.ts @@ -0,0 +1,26 @@ +import { CodegenConfig } from '@graphql-codegen/cli'; + +export default { + overwrite: true, + schema: '../api/src/schema.gql', + documents: ['src/**/*.tsx'], + generates: { + 'src/@generated/': { + preset: 'client', + config: { + useTypeImports: true, + }, + presetConfig: { + // the rest of this update? 🤌 nectar of the gods, thank you graphql codegen gods. + // but this piece of shit? why. *why*. + fragmentMasking: false, + }, + }, + 'src/@generated/introspection.json': { + plugins: ['introspection'], + }, + }, + hooks: { + afterAllFileWrite: ['prettier --write'], + }, +} satisfies CodegenConfig; diff --git a/packages/web/codegen.yml b/packages/web/codegen.yml deleted file mode 100644 index f31a7ed..0000000 --- a/packages/web/codegen.yml +++ /dev/null @@ -1,12 +0,0 @@ -overwrite: true -schema: '../api/src/schema.gql' -documents: 'src/**/*.graphql' -generates: - src/generated/graphql.tsx: - plugins: - - 'typescript' - - 'typescript-operations' - - 'typescript-react-apollo' -hooks: - afterAllFileWrite: - - prettier --write \ No newline at end of file diff --git a/packages/web/next-env.d.ts b/packages/web/next-env.d.ts deleted file mode 100644 index 4f11a03..0000000 --- a/packages/web/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/packages/web/next.config.js b/packages/web/next.config.js deleted file mode 100644 index fb98fd8..0000000 --- a/packages/web/next.config.js +++ /dev/null @@ -1,63 +0,0 @@ -const path = require('path'); - -module.exports = { - output: 'standalone', - experimental: { - outputFileTracingRoot: path.join(__dirname, '../../'), - }, - eslint: { - // todo: eslint is broken with typescript 5.2 and every file errors out, - // this is temporary to get it to build with eslint broken. - ignoreDuringBuilds: true, - }, - async redirects() { - return [ - { - // legacy compatibility, redirect old /file/:id/delete?key=x to /file/:id?deleteKey=x - // unfortunately ?key will still be included, there is apparently no way to rename the query param, - // only add a new param with the same value. - source: '/:type(f|v|i|file)/:fileId/delete', - has: [ - { - type: 'query', - key: 'key', - }, - ], - destination: '/:type/:fileId?deleteKey=:key', - permanent: false, - }, - ]; - }, - async rewrites() { - return [ - { - source: '/t/:thumbnailId', - destination: 'http://localhost:8080/thumbnail/:thumbnailId', - }, - { - source: '/(f|v|i)/:fileId.:extension', - destination: 'http://localhost:8080/file/:fileId', - }, - { - source: '/(p|paste)/:pasteId.:extension', - destination: 'http://localhost:8080/paste/:pasteId', - }, - { - source: '/(l|s|link)/:linkId', - destination: 'http://localhost:8080/link/:linkId', - }, - { - source: '/(f|v|i)/:fileId', - destination: '/file/:fileId', - }, - { - source: '/p/:pasteId', - destination: '/paste/:pasteId', - }, - { - source: '/api/:path*', - destination: 'http://localhost:8080/:path*', - }, - ]; - }, -}; diff --git a/packages/web/package.json b/packages/web/package.json index b0939c0..b3db00c 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -4,56 +4,66 @@ "license": "GPL-3.0", "repository": "https://github.com/sylv/micro.git", "author": "Ryan ", + "type": "module", "private": true, "engines": { "node": ">=20" }, "scripts": { - "build": "NODE_ENV=production next build", - "generate": "graphql-codegen --config codegen.yml", - "lint": "NODE_ENV=production next lint", - "watch": "NODE_ENV=development concurrently \"next dev\" \"pnpm generate --watch\"" + "build": "tsc --noEmit && rm -rf ./dist/* && vavite build && tsup && rm -rf ./dist/server", + "generate": "graphql-codegen --config codegen.ts", + "start": "node ./dist/index.js", + "watch": "concurrently \"vavite serve\" \"pnpm generate --watch --errors-only\"" }, - "dependencies": { - "@apollo/client": "^3.8.8", - "@headlessui/react": "^1.7.17", - "@ryanke/pandora": "^0.0.9", + "devDependencies": { + "@0no-co/graphqlsp": "^1.3.0", + "@apollo/client": "^3.8.9", + "@atlasbot/configs": "^10.5.15", + "@fastify/early-hints": "^1.0.1", + "@fastify/http-proxy": "^9.3.0", + "@graphql-codegen/cli": "^5.0.0", + "@graphql-codegen/client-preset": "^4.1.0", + "@graphql-codegen/introspection": "^4.0.0", + "@graphql-typed-document-node/core": "^3.2.0", + "@parcel/watcher": "^2.3.0", + "@preact/preset-vite": "^2.8.1", + "@radix-ui/react-dropdown-menu": "^2.0.6", "@tailwindcss/typography": "^0.5.10", + "@types/node": "^20.10.6", + "@types/react": "^18.2.47", + "@types/react-dom": "^18.2.18", "autoprefixer": "^10.4.16", "clsx": "^2.1.0", "concurrently": "^8.2.2", "copy-to-clipboard": "^3.3.3", "dayjs": "^1.11.10", - "deepmerge": "^4.3.1", + "fastify": "^4.25.2", "formik": "^2.4.5", "generate-avatar": "1.4.10", "graphql": "^16.8.1", "http-status-codes": "^2.3.0", - "lodash": "^4.17.21", - "next": "14.0.4", + "mime": "^4.0.1", + "nanoid": "^5.0.4", + "path-to-regexp": "^6.2.1", "postcss": "^8.4.33", + "preact": "^10.19.3", + "preact-render-to-string": "^6.3.1", + "prettier": "^3.1.1", "prism-react-renderer": "^2.3.1", "qrcode.react": "^3.1.0", - "react": "18.2.0", - "react-dom": "^18.1.0", - "react-feather": "^2.0.9", + "react": "npm:@preact/compat@^17.1.2", + "react-dom": "npm:@preact/compat@^17.1.2", + "react-helmet-async": "^2.0.4", + "react-icons": "^5.0.1", "react-markdown": "^9.0.1", + "readdirp": "^3.6.0", "remark-gfm": "^4.0.0", - "swr": "^2.2.4", "tailwindcss": "^3.4.1", + "tsup": "^8.0.1", + "typescript": "^5.3.3", + "vavite": "^4.0.1", + "vike": "^0.4.156", + "vite": "^5.0.11", "yup": "^1.3.3" - }, - "devDependencies": { - "@atlasbot/configs": "^10.5.15", - "@graphql-codegen/cli": "^5.0.0", - "@graphql-codegen/typescript": "4.0.1", - "@graphql-codegen/typescript-operations": "4.0.1", - "@graphql-codegen/typescript-react-apollo": "4.1.0", - "@parcel/watcher": "^2.3.0", - "@types/lodash": "^4.14.202", - "@types/node": "^20.10.6", - "@types/react": "^18.2.47", - "prettier": "^3.1.1", - "typescript": "^5.3.3" } } diff --git a/packages/web/postcss.config.js b/packages/web/postcss.config.cjs similarity index 100% rename from packages/web/postcss.config.js rename to packages/web/postcss.config.cjs diff --git a/packages/web/src/@generated/gql.ts b/packages/web/src/@generated/gql.ts new file mode 100644 index 0000000..13cbbd5 --- /dev/null +++ b/packages/web/src/@generated/gql.ts @@ -0,0 +1,209 @@ +/* eslint-disable */ +import * as types from './graphql'; +import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; + +/** + * Map of all GraphQL operations in the project. + * + * This map has several performance disadvantages: + * 1. It is not tree-shakeable, so it will include all operations in the project. + * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle. + * 3. It does not support dead code elimination, so it will add unused operations. + * + * Therefore it is highly recommended to use the babel or swc plugin for production. + */ +const documents = { + '\n mutation ResendVerificationEmail($data: ResendVerificationEmailDto) {\n resendVerificationEmail(data: $data)\n }\n': + types.ResendVerificationEmailDocument, + '\n fragment FileCard on File {\n id\n type\n displayName\n sizeFormatted\n thumbnail {\n width\n height\n }\n paths {\n thumbnail\n }\n urls {\n view\n }\n }\n': + types.FileCardFragmentDoc, + '\n fragment PasteCard on Paste {\n id\n title\n encrypted\n burn\n type\n createdAt\n expiresAt\n urls {\n view\n }\n }\n': + types.PasteCardFragmentDoc, + '\n query GetFiles($after: String) {\n user {\n files(first: 24, after: $after) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n id\n ...FileCard\n }\n }\n }\n }\n }\n': + types.GetFilesDocument, + '\n query GetPastes($after: String) {\n user {\n pastes(first: 24, after: $after) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n id\n ...PasteCard\n }\n }\n }\n }\n }\n': + types.GetPastesDocument, + '\n query Config {\n config {\n allowTypes\n inquiriesEmail\n requireEmails\n uploadLimit\n currentHost {\n normalised\n redirect\n }\n rootHost {\n normalised\n url\n }\n hosts {\n normalised\n }\n }\n }\n': + types.ConfigDocument, + '\n fragment RegularUser on User {\n id\n username\n email\n verifiedEmail\n }\n': + types.RegularUserFragmentDoc, + '\n query GetUser {\n user {\n ...RegularUser\n }\n }\n': types.GetUserDocument, + '\n mutation Login($username: String!, $password: String!, $otp: String) {\n login(username: $username, password: $password, otpCode: $otp) {\n ...RegularUser\n }\n }\n': + types.LoginDocument, + '\n mutation Logout {\n logout\n }\n': types.LogoutDocument, + '\n query GenerateOTP {\n generateOTP {\n recoveryCodes\n qrauthUrl\n secret\n }\n }\n': + types.GenerateOtpDocument, + '\n mutation ConfirmOTP($otpCode: String!) {\n confirmOTP(otpCode: $otpCode)\n }\n': types.ConfirmOtpDocument, + '\n mutation RefreshToken {\n refreshToken {\n ...RegularUser\n }\n }\n': types.RefreshTokenDocument, + '\n mutation DisableOTP($otpCode: String!) {\n disableOTP(otpCode: $otpCode)\n }\n': types.DisableOtpDocument, + '\n query UserQueryWithToken {\n user {\n ...RegularUser\n token\n otpEnabled\n }\n }\n': + types.UserQueryWithTokenDocument, + '\n query GetFile($fileId: ID!) {\n file(fileId: $fileId) {\n id\n type\n displayName\n size\n sizeFormatted\n textContent\n isOwner\n metadata {\n height\n width\n }\n paths {\n view\n thumbnail\n direct\n }\n urls {\n view\n }\n }\n }\n': + types.GetFileDocument, + '\n mutation DeleteFile($fileId: ID!, $deleteKey: String) {\n deleteFile(fileId: $fileId, key: $deleteKey)\n }\n': + types.DeleteFileDocument, + '\n query GetInvite($inviteId: ID!) {\n invite(inviteId: $inviteId) {\n id\n expiresAt\n }\n }\n': + types.GetInviteDocument, + '\n mutation CreateUser($user: CreateUserDto!) {\n createUser(data: $user) {\n id\n }\n }\n': + types.CreateUserDocument, + '\n mutation CreatePaste($input: CreatePasteDto!) {\n createPaste(partial: $input) {\n id\n urls {\n view\n }\n }\n }\n': + types.CreatePasteDocument, + '\n query GetPaste($pasteId: ID!) {\n paste(pasteId: $pasteId) {\n id\n title\n type\n extension\n content\n encrypted\n createdAt\n expiresAt\n burnt\n burn\n urls {\n view\n }\n }\n }\n': + types.GetPasteDocument, + '\n mutation Shorten($link: String!, $host: String) {\n createLink(destination: $link, host: $host) {\n id\n urls {\n view\n }\n }\n }\n': + types.ShortenDocument, +}; + +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + * + * + * @example + * ```ts + * const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`); + * ``` + * + * The query argument is unknown! + * Please regenerate the types. + */ +export function graphql(source: string): unknown; + +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation ResendVerificationEmail($data: ResendVerificationEmailDto) {\n resendVerificationEmail(data: $data)\n }\n', +): (typeof documents)['\n mutation ResendVerificationEmail($data: ResendVerificationEmailDto) {\n resendVerificationEmail(data: $data)\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n fragment FileCard on File {\n id\n type\n displayName\n sizeFormatted\n thumbnail {\n width\n height\n }\n paths {\n thumbnail\n }\n urls {\n view\n }\n }\n', +): (typeof documents)['\n fragment FileCard on File {\n id\n type\n displayName\n sizeFormatted\n thumbnail {\n width\n height\n }\n paths {\n thumbnail\n }\n urls {\n view\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n fragment PasteCard on Paste {\n id\n title\n encrypted\n burn\n type\n createdAt\n expiresAt\n urls {\n view\n }\n }\n', +): (typeof documents)['\n fragment PasteCard on Paste {\n id\n title\n encrypted\n burn\n type\n createdAt\n expiresAt\n urls {\n view\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query GetFiles($after: String) {\n user {\n files(first: 24, after: $after) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n id\n ...FileCard\n }\n }\n }\n }\n }\n', +): (typeof documents)['\n query GetFiles($after: String) {\n user {\n files(first: 24, after: $after) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n id\n ...FileCard\n }\n }\n }\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query GetPastes($after: String) {\n user {\n pastes(first: 24, after: $after) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n id\n ...PasteCard\n }\n }\n }\n }\n }\n', +): (typeof documents)['\n query GetPastes($after: String) {\n user {\n pastes(first: 24, after: $after) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n id\n ...PasteCard\n }\n }\n }\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query Config {\n config {\n allowTypes\n inquiriesEmail\n requireEmails\n uploadLimit\n currentHost {\n normalised\n redirect\n }\n rootHost {\n normalised\n url\n }\n hosts {\n normalised\n }\n }\n }\n', +): (typeof documents)['\n query Config {\n config {\n allowTypes\n inquiriesEmail\n requireEmails\n uploadLimit\n currentHost {\n normalised\n redirect\n }\n rootHost {\n normalised\n url\n }\n hosts {\n normalised\n }\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n fragment RegularUser on User {\n id\n username\n email\n verifiedEmail\n }\n', +): (typeof documents)['\n fragment RegularUser on User {\n id\n username\n email\n verifiedEmail\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query GetUser {\n user {\n ...RegularUser\n }\n }\n', +): (typeof documents)['\n query GetUser {\n user {\n ...RegularUser\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation Login($username: String!, $password: String!, $otp: String) {\n login(username: $username, password: $password, otpCode: $otp) {\n ...RegularUser\n }\n }\n', +): (typeof documents)['\n mutation Login($username: String!, $password: String!, $otp: String) {\n login(username: $username, password: $password, otpCode: $otp) {\n ...RegularUser\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation Logout {\n logout\n }\n', +): (typeof documents)['\n mutation Logout {\n logout\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query GenerateOTP {\n generateOTP {\n recoveryCodes\n qrauthUrl\n secret\n }\n }\n', +): (typeof documents)['\n query GenerateOTP {\n generateOTP {\n recoveryCodes\n qrauthUrl\n secret\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation ConfirmOTP($otpCode: String!) {\n confirmOTP(otpCode: $otpCode)\n }\n', +): (typeof documents)['\n mutation ConfirmOTP($otpCode: String!) {\n confirmOTP(otpCode: $otpCode)\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation RefreshToken {\n refreshToken {\n ...RegularUser\n }\n }\n', +): (typeof documents)['\n mutation RefreshToken {\n refreshToken {\n ...RegularUser\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation DisableOTP($otpCode: String!) {\n disableOTP(otpCode: $otpCode)\n }\n', +): (typeof documents)['\n mutation DisableOTP($otpCode: String!) {\n disableOTP(otpCode: $otpCode)\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query UserQueryWithToken {\n user {\n ...RegularUser\n token\n otpEnabled\n }\n }\n', +): (typeof documents)['\n query UserQueryWithToken {\n user {\n ...RegularUser\n token\n otpEnabled\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query GetFile($fileId: ID!) {\n file(fileId: $fileId) {\n id\n type\n displayName\n size\n sizeFormatted\n textContent\n isOwner\n metadata {\n height\n width\n }\n paths {\n view\n thumbnail\n direct\n }\n urls {\n view\n }\n }\n }\n', +): (typeof documents)['\n query GetFile($fileId: ID!) {\n file(fileId: $fileId) {\n id\n type\n displayName\n size\n sizeFormatted\n textContent\n isOwner\n metadata {\n height\n width\n }\n paths {\n view\n thumbnail\n direct\n }\n urls {\n view\n }\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation DeleteFile($fileId: ID!, $deleteKey: String) {\n deleteFile(fileId: $fileId, key: $deleteKey)\n }\n', +): (typeof documents)['\n mutation DeleteFile($fileId: ID!, $deleteKey: String) {\n deleteFile(fileId: $fileId, key: $deleteKey)\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query GetInvite($inviteId: ID!) {\n invite(inviteId: $inviteId) {\n id\n expiresAt\n }\n }\n', +): (typeof documents)['\n query GetInvite($inviteId: ID!) {\n invite(inviteId: $inviteId) {\n id\n expiresAt\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation CreateUser($user: CreateUserDto!) {\n createUser(data: $user) {\n id\n }\n }\n', +): (typeof documents)['\n mutation CreateUser($user: CreateUserDto!) {\n createUser(data: $user) {\n id\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation CreatePaste($input: CreatePasteDto!) {\n createPaste(partial: $input) {\n id\n urls {\n view\n }\n }\n }\n', +): (typeof documents)['\n mutation CreatePaste($input: CreatePasteDto!) {\n createPaste(partial: $input) {\n id\n urls {\n view\n }\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n query GetPaste($pasteId: ID!) {\n paste(pasteId: $pasteId) {\n id\n title\n type\n extension\n content\n encrypted\n createdAt\n expiresAt\n burnt\n burn\n urls {\n view\n }\n }\n }\n', +): (typeof documents)['\n query GetPaste($pasteId: ID!) {\n paste(pasteId: $pasteId) {\n id\n title\n type\n extension\n content\n encrypted\n createdAt\n expiresAt\n burnt\n burn\n urls {\n view\n }\n }\n }\n']; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql( + source: '\n mutation Shorten($link: String!, $host: String) {\n createLink(destination: $link, host: $host) {\n id\n urls {\n view\n }\n }\n }\n', +): (typeof documents)['\n mutation Shorten($link: String!, $host: String) {\n createLink(destination: $link, host: $host) {\n id\n urls {\n view\n }\n }\n }\n']; + +export function graphql(source: string) { + return (documents as any)[source] ?? {}; +} + +export type DocumentType> = + TDocumentNode extends DocumentNode ? TType : never; diff --git a/packages/web/src/@generated/graphql.ts b/packages/web/src/@generated/graphql.ts new file mode 100644 index 0000000..fad6e2e --- /dev/null +++ b/packages/web/src/@generated/graphql.ts @@ -0,0 +1,1608 @@ +/* eslint-disable */ +import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +export type MakeEmpty = { [_ in K]?: never }; +export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string }; + String: { input: string; output: string }; + Boolean: { input: boolean; output: boolean }; + Int: { input: number; output: number }; + Float: { input: number; output: number }; + /** A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format. */ + DateTime: { input: any; output: any }; +}; + +export type Config = { + __typename?: 'Config'; + allowTypes: Array; + /** The host the request is being made to. This host may not be in the hosts list if the user is not authorized to access it. */ + currentHost: ConfigHost; + /** A list of hosts the user can access. */ + hosts: Array; + inquiriesEmail: Scalars['String']['output']; + requireEmails: Scalars['Boolean']['output']; + rootHost: ConfigHost; + uploadLimit: Scalars['Float']['output']; +}; + +export type ConfigHost = { + __typename?: 'ConfigHost'; + normalised: Scalars['String']['output']; + redirect?: Maybe; + url: Scalars['String']['output']; +}; + +export type CreatePasteDto = { + burn: Scalars['Boolean']['input']; + content: Scalars['String']['input']; + encrypted: Scalars['Boolean']['input']; + expiresAt?: InputMaybe; + extension?: InputMaybe; + hostname?: InputMaybe; + paranoid: Scalars['Boolean']['input']; + title?: InputMaybe; +}; + +export type CreateUserDto = { + email?: InputMaybe; + invite: Scalars['String']['input']; + password: Scalars['String']['input']; + username: Scalars['String']['input']; +}; + +export type File = { + __typename?: 'File'; + createdAt: Scalars['DateTime']['output']; + displayName: Scalars['String']['output']; + hash: Scalars['String']['output']; + id: Scalars['ID']['output']; + isOwner: Scalars['Boolean']['output']; + metadata?: Maybe; + name?: Maybe; + paths: ResourceLocations; + size: Scalars['Float']['output']; + sizeFormatted: Scalars['String']['output']; + textContent?: Maybe; + thumbnail?: Maybe; + type: Scalars['String']['output']; + urls: ResourceLocations; +}; + +export type FileMetadata = { + __typename?: 'FileMetadata'; + height?: Maybe; + width?: Maybe; +}; + +export type FilePage = { + __typename?: 'FilePage'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type FilePageEdge = { + __typename?: 'FilePageEdge'; + cursor: Scalars['String']['output']; + node: File; +}; + +export type Invite = { + __typename?: 'Invite'; + consumed: Scalars['Boolean']['output']; + createdAt: Scalars['DateTime']['output']; + expired: Scalars['Boolean']['output']; + expiresAt?: Maybe; + id: Scalars['ID']['output']; + path: Scalars['String']['output']; + permissions?: Maybe; + skipVerification: Scalars['Boolean']['output']; + url: Scalars['String']['output']; +}; + +export type Link = { + __typename?: 'Link'; + clicks: Scalars['Float']['output']; + createdAt: Scalars['DateTime']['output']; + destination: Scalars['String']['output']; + id: Scalars['ID']['output']; + paths: ResourceLocations; + urls: ResourceLocations; +}; + +export type Mutation = { + __typename?: 'Mutation'; + confirmOTP: Scalars['Boolean']['output']; + createInvite: Invite; + createLink: Link; + createPaste: Paste; + createUser: User; + deleteFile: Scalars['Boolean']['output']; + disableOTP: Scalars['Boolean']['output']; + login: User; + logout: Scalars['Boolean']['output']; + refreshToken: User; + resendVerificationEmail: Scalars['Boolean']['output']; +}; + +export type MutationConfirmOtpArgs = { + otpCode: Scalars['String']['input']; +}; + +export type MutationCreateLinkArgs = { + destination: Scalars['String']['input']; + host?: InputMaybe; +}; + +export type MutationCreatePasteArgs = { + partial: CreatePasteDto; +}; + +export type MutationCreateUserArgs = { + data: CreateUserDto; +}; + +export type MutationDeleteFileArgs = { + fileId: Scalars['ID']['input']; + key?: InputMaybe; +}; + +export type MutationDisableOtpArgs = { + otpCode: Scalars['String']['input']; +}; + +export type MutationLoginArgs = { + otpCode?: InputMaybe; + password: Scalars['String']['input']; + username: Scalars['String']['input']; +}; + +export type MutationResendVerificationEmailArgs = { + data?: InputMaybe; +}; + +export type OtpEnabledDto = { + __typename?: 'OTPEnabledDto'; + qrauthUrl: Scalars['String']['output']; + recoveryCodes: Array; + secret: Scalars['String']['output']; +}; + +export type PageInfo = { + __typename?: 'PageInfo'; + endCursor?: Maybe; + hasNextPage: Scalars['Boolean']['output']; + hasPreviousPage: Scalars['Boolean']['output']; + startCursor?: Maybe; +}; + +export type Paste = { + __typename?: 'Paste'; + burn: Scalars['Boolean']['output']; + burnt?: Maybe; + content: Scalars['String']['output']; + createdAt: Scalars['DateTime']['output']; + encrypted: Scalars['Boolean']['output']; + expiresAt?: Maybe; + extension?: Maybe; + id: Scalars['ID']['output']; + paths: ResourceLocations; + title?: Maybe; + type: Scalars['String']['output']; + urls: ResourceLocations; +}; + +export type PastePage = { + __typename?: 'PastePage'; + edges: Array; + pageInfo: PageInfo; + totalCount: Scalars['Int']['output']; +}; + +export type PastePageEdge = { + __typename?: 'PastePageEdge'; + cursor: Scalars['String']['output']; + node: Paste; +}; + +export type Query = { + __typename?: 'Query'; + config: Config; + file: File; + generateOTP: OtpEnabledDto; + invite: Invite; + link: Link; + paste: Paste; + user: User; +}; + +export type QueryFileArgs = { + fileId: Scalars['ID']['input']; +}; + +export type QueryInviteArgs = { + inviteId: Scalars['ID']['input']; +}; + +export type QueryLinkArgs = { + linkId: Scalars['ID']['input']; +}; + +export type QueryPasteArgs = { + pasteId: Scalars['ID']['input']; +}; + +export type ResendVerificationEmailDto = { + email: Scalars['String']['input']; +}; + +export type ResourceLocations = { + __typename?: 'ResourceLocations'; + delete?: Maybe; + direct: Scalars['String']['output']; + thumbnail?: Maybe; + view: Scalars['String']['output']; +}; + +export type Thumbnail = { + __typename?: 'Thumbnail'; + createdAt: Scalars['DateTime']['output']; + duration: Scalars['Float']['output']; + height: Scalars['Float']['output']; + size: Scalars['Float']['output']; + type: Scalars['String']['output']; + width: Scalars['Float']['output']; +}; + +export type User = { + __typename?: 'User'; + aggregateFileSize: Scalars['Float']['output']; + email?: Maybe; + files: FilePage; + id: Scalars['ID']['output']; + otpEnabled: Scalars['Boolean']['output']; + pastes: PastePage; + permissions: Scalars['Float']['output']; + tags: Array; + token: Scalars['String']['output']; + username: Scalars['String']['output']; + verifiedEmail: Scalars['Boolean']['output']; +}; + +export type UserFilesArgs = { + after?: InputMaybe; + first?: InputMaybe; +}; + +export type UserPastesArgs = { + after?: InputMaybe; + first?: InputMaybe; +}; + +export type ResendVerificationEmailMutationVariables = Exact<{ + data?: InputMaybe; +}>; + +export type ResendVerificationEmailMutation = { __typename?: 'Mutation'; resendVerificationEmail: boolean }; + +export type FileCardFragment = { + __typename?: 'File'; + id: string; + type: string; + displayName: string; + sizeFormatted: string; + thumbnail?: { __typename?: 'Thumbnail'; width: number; height: number } | null; + paths: { __typename?: 'ResourceLocations'; thumbnail?: string | null }; + urls: { __typename?: 'ResourceLocations'; view: string }; +}; + +export type PasteCardFragment = { + __typename?: 'Paste'; + id: string; + title?: string | null; + encrypted: boolean; + burn: boolean; + type: string; + createdAt: any; + expiresAt?: any | null; + urls: { __typename?: 'ResourceLocations'; view: string }; +}; + +export type GetFilesQueryVariables = Exact<{ + after?: InputMaybe; +}>; + +export type GetFilesQuery = { + __typename?: 'Query'; + user: { + __typename?: 'User'; + files: { + __typename?: 'FilePage'; + pageInfo: { __typename?: 'PageInfo'; endCursor?: string | null; hasNextPage: boolean }; + edges: Array<{ + __typename?: 'FilePageEdge'; + node: { + __typename?: 'File'; + id: string; + type: string; + displayName: string; + sizeFormatted: string; + thumbnail?: { __typename?: 'Thumbnail'; width: number; height: number } | null; + paths: { __typename?: 'ResourceLocations'; thumbnail?: string | null }; + urls: { __typename?: 'ResourceLocations'; view: string }; + }; + }>; + }; + }; +}; + +export type GetPastesQueryVariables = Exact<{ + after?: InputMaybe; +}>; + +export type GetPastesQuery = { + __typename?: 'Query'; + user: { + __typename?: 'User'; + pastes: { + __typename?: 'PastePage'; + pageInfo: { __typename?: 'PageInfo'; endCursor?: string | null; hasNextPage: boolean }; + edges: Array<{ + __typename?: 'PastePageEdge'; + node: { + __typename?: 'Paste'; + id: string; + title?: string | null; + encrypted: boolean; + burn: boolean; + type: string; + createdAt: any; + expiresAt?: any | null; + urls: { __typename?: 'ResourceLocations'; view: string }; + }; + }>; + }; + }; +}; + +export type ConfigQueryVariables = Exact<{ [key: string]: never }>; + +export type ConfigQuery = { + __typename?: 'Query'; + config: { + __typename?: 'Config'; + allowTypes: Array; + inquiriesEmail: string; + requireEmails: boolean; + uploadLimit: number; + currentHost: { __typename?: 'ConfigHost'; normalised: string; redirect?: string | null }; + rootHost: { __typename?: 'ConfigHost'; normalised: string; url: string }; + hosts: Array<{ __typename?: 'ConfigHost'; normalised: string }>; + }; +}; + +export type RegularUserFragment = { + __typename?: 'User'; + id: string; + username: string; + email?: string | null; + verifiedEmail: boolean; +}; + +export type GetUserQueryVariables = Exact<{ [key: string]: never }>; + +export type GetUserQuery = { + __typename?: 'Query'; + user: { __typename?: 'User'; id: string; username: string; email?: string | null; verifiedEmail: boolean }; +}; + +export type LoginMutationVariables = Exact<{ + username: Scalars['String']['input']; + password: Scalars['String']['input']; + otp?: InputMaybe; +}>; + +export type LoginMutation = { + __typename?: 'Mutation'; + login: { __typename?: 'User'; id: string; username: string; email?: string | null; verifiedEmail: boolean }; +}; + +export type LogoutMutationVariables = Exact<{ [key: string]: never }>; + +export type LogoutMutation = { __typename?: 'Mutation'; logout: boolean }; + +export type GenerateOtpQueryVariables = Exact<{ [key: string]: never }>; + +export type GenerateOtpQuery = { + __typename?: 'Query'; + generateOTP: { __typename?: 'OTPEnabledDto'; recoveryCodes: Array; qrauthUrl: string; secret: string }; +}; + +export type ConfirmOtpMutationVariables = Exact<{ + otpCode: Scalars['String']['input']; +}>; + +export type ConfirmOtpMutation = { __typename?: 'Mutation'; confirmOTP: boolean }; + +export type RefreshTokenMutationVariables = Exact<{ [key: string]: never }>; + +export type RefreshTokenMutation = { + __typename?: 'Mutation'; + refreshToken: { __typename?: 'User'; id: string; username: string; email?: string | null; verifiedEmail: boolean }; +}; + +export type DisableOtpMutationVariables = Exact<{ + otpCode: Scalars['String']['input']; +}>; + +export type DisableOtpMutation = { __typename?: 'Mutation'; disableOTP: boolean }; + +export type UserQueryWithTokenQueryVariables = Exact<{ [key: string]: never }>; + +export type UserQueryWithTokenQuery = { + __typename?: 'Query'; + user: { + __typename?: 'User'; + token: string; + otpEnabled: boolean; + id: string; + username: string; + email?: string | null; + verifiedEmail: boolean; + }; +}; + +export type GetFileQueryVariables = Exact<{ + fileId: Scalars['ID']['input']; +}>; + +export type GetFileQuery = { + __typename?: 'Query'; + file: { + __typename?: 'File'; + id: string; + type: string; + displayName: string; + size: number; + sizeFormatted: string; + textContent?: string | null; + isOwner: boolean; + metadata?: { __typename?: 'FileMetadata'; height?: number | null; width?: number | null } | null; + paths: { __typename?: 'ResourceLocations'; view: string; thumbnail?: string | null; direct: string }; + urls: { __typename?: 'ResourceLocations'; view: string }; + }; +}; + +export type DeleteFileMutationVariables = Exact<{ + fileId: Scalars['ID']['input']; + deleteKey?: InputMaybe; +}>; + +export type DeleteFileMutation = { __typename?: 'Mutation'; deleteFile: boolean }; + +export type GetInviteQueryVariables = Exact<{ + inviteId: Scalars['ID']['input']; +}>; + +export type GetInviteQuery = { + __typename?: 'Query'; + invite: { __typename?: 'Invite'; id: string; expiresAt?: any | null }; +}; + +export type CreateUserMutationVariables = Exact<{ + user: CreateUserDto; +}>; + +export type CreateUserMutation = { __typename?: 'Mutation'; createUser: { __typename?: 'User'; id: string } }; + +export type CreatePasteMutationVariables = Exact<{ + input: CreatePasteDto; +}>; + +export type CreatePasteMutation = { + __typename?: 'Mutation'; + createPaste: { __typename?: 'Paste'; id: string; urls: { __typename?: 'ResourceLocations'; view: string } }; +}; + +export type GetPasteQueryVariables = Exact<{ + pasteId: Scalars['ID']['input']; +}>; + +export type GetPasteQuery = { + __typename?: 'Query'; + paste: { + __typename?: 'Paste'; + id: string; + title?: string | null; + type: string; + extension?: string | null; + content: string; + encrypted: boolean; + createdAt: any; + expiresAt?: any | null; + burnt?: boolean | null; + burn: boolean; + urls: { __typename?: 'ResourceLocations'; view: string }; + }; +}; + +export type ShortenMutationVariables = Exact<{ + link: Scalars['String']['input']; + host?: InputMaybe; +}>; + +export type ShortenMutation = { + __typename?: 'Mutation'; + createLink: { __typename?: 'Link'; id: string; urls: { __typename?: 'ResourceLocations'; view: string } }; +}; + +export const FileCardFragmentDoc = { + kind: 'Document', + definitions: [ + { + kind: 'FragmentDefinition', + name: { kind: 'Name', value: 'FileCard' }, + typeCondition: { kind: 'NamedType', name: { kind: 'Name', value: 'File' } }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'type' } }, + { kind: 'Field', name: { kind: 'Name', value: 'displayName' } }, + { kind: 'Field', name: { kind: 'Name', value: 'sizeFormatted' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'thumbnail' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'width' } }, + { kind: 'Field', name: { kind: 'Name', value: 'height' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'paths' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'thumbnail' } }], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'urls' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'view' } }], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const PasteCardFragmentDoc = { + kind: 'Document', + definitions: [ + { + kind: 'FragmentDefinition', + name: { kind: 'Name', value: 'PasteCard' }, + typeCondition: { kind: 'NamedType', name: { kind: 'Name', value: 'Paste' } }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'title' } }, + { kind: 'Field', name: { kind: 'Name', value: 'encrypted' } }, + { kind: 'Field', name: { kind: 'Name', value: 'burn' } }, + { kind: 'Field', name: { kind: 'Name', value: 'type' } }, + { kind: 'Field', name: { kind: 'Name', value: 'createdAt' } }, + { kind: 'Field', name: { kind: 'Name', value: 'expiresAt' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'urls' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'view' } }], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const RegularUserFragmentDoc = { + kind: 'Document', + definitions: [ + { + kind: 'FragmentDefinition', + name: { kind: 'Name', value: 'RegularUser' }, + typeCondition: { kind: 'NamedType', name: { kind: 'Name', value: 'User' } }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'username' } }, + { kind: 'Field', name: { kind: 'Name', value: 'email' } }, + { kind: 'Field', name: { kind: 'Name', value: 'verifiedEmail' } }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const ResendVerificationEmailDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'ResendVerificationEmail' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'data' } }, + type: { kind: 'NamedType', name: { kind: 'Name', value: 'ResendVerificationEmailDto' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'resendVerificationEmail' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'data' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'data' } }, + }, + ], + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const GetFilesDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'GetFiles' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'after' } }, + type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'user' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'files' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'first' }, + value: { kind: 'IntValue', value: '24' }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'after' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'after' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'pageInfo' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'endCursor' } }, + { kind: 'Field', name: { kind: 'Name', value: 'hasNextPage' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'edges' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'node' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'FragmentSpread', name: { kind: 'Name', value: 'FileCard' } }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + { + kind: 'FragmentDefinition', + name: { kind: 'Name', value: 'FileCard' }, + typeCondition: { kind: 'NamedType', name: { kind: 'Name', value: 'File' } }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'type' } }, + { kind: 'Field', name: { kind: 'Name', value: 'displayName' } }, + { kind: 'Field', name: { kind: 'Name', value: 'sizeFormatted' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'thumbnail' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'width' } }, + { kind: 'Field', name: { kind: 'Name', value: 'height' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'paths' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'thumbnail' } }], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'urls' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'view' } }], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const GetPastesDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'GetPastes' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'after' } }, + type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'user' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'pastes' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'first' }, + value: { kind: 'IntValue', value: '24' }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'after' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'after' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'pageInfo' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'endCursor' } }, + { kind: 'Field', name: { kind: 'Name', value: 'hasNextPage' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'edges' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'node' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'FragmentSpread', name: { kind: 'Name', value: 'PasteCard' } }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + ], + }, + }, + { + kind: 'FragmentDefinition', + name: { kind: 'Name', value: 'PasteCard' }, + typeCondition: { kind: 'NamedType', name: { kind: 'Name', value: 'Paste' } }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'title' } }, + { kind: 'Field', name: { kind: 'Name', value: 'encrypted' } }, + { kind: 'Field', name: { kind: 'Name', value: 'burn' } }, + { kind: 'Field', name: { kind: 'Name', value: 'type' } }, + { kind: 'Field', name: { kind: 'Name', value: 'createdAt' } }, + { kind: 'Field', name: { kind: 'Name', value: 'expiresAt' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'urls' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'view' } }], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const ConfigDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'Config' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'config' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'allowTypes' } }, + { kind: 'Field', name: { kind: 'Name', value: 'inquiriesEmail' } }, + { kind: 'Field', name: { kind: 'Name', value: 'requireEmails' } }, + { kind: 'Field', name: { kind: 'Name', value: 'uploadLimit' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'currentHost' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'normalised' } }, + { kind: 'Field', name: { kind: 'Name', value: 'redirect' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'rootHost' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'normalised' } }, + { kind: 'Field', name: { kind: 'Name', value: 'url' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'hosts' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'normalised' } }], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const GetUserDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'GetUser' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'user' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'FragmentSpread', name: { kind: 'Name', value: 'RegularUser' } }], + }, + }, + ], + }, + }, + { + kind: 'FragmentDefinition', + name: { kind: 'Name', value: 'RegularUser' }, + typeCondition: { kind: 'NamedType', name: { kind: 'Name', value: 'User' } }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'username' } }, + { kind: 'Field', name: { kind: 'Name', value: 'email' } }, + { kind: 'Field', name: { kind: 'Name', value: 'verifiedEmail' } }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const LoginDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'Login' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'username' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } } }, + }, + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'password' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } } }, + }, + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'otp' } }, + type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'login' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'username' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'username' } }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'password' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'password' } }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'otpCode' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'otp' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'FragmentSpread', name: { kind: 'Name', value: 'RegularUser' } }], + }, + }, + ], + }, + }, + { + kind: 'FragmentDefinition', + name: { kind: 'Name', value: 'RegularUser' }, + typeCondition: { kind: 'NamedType', name: { kind: 'Name', value: 'User' } }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'username' } }, + { kind: 'Field', name: { kind: 'Name', value: 'email' } }, + { kind: 'Field', name: { kind: 'Name', value: 'verifiedEmail' } }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const LogoutDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'Logout' }, + selectionSet: { kind: 'SelectionSet', selections: [{ kind: 'Field', name: { kind: 'Name', value: 'logout' } }] }, + }, + ], +} as unknown as DocumentNode; +export const GenerateOtpDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'GenerateOTP' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'generateOTP' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'recoveryCodes' } }, + { kind: 'Field', name: { kind: 'Name', value: 'qrauthUrl' } }, + { kind: 'Field', name: { kind: 'Name', value: 'secret' } }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const ConfirmOtpDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'ConfirmOTP' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'otpCode' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'confirmOTP' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'otpCode' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'otpCode' } }, + }, + ], + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const RefreshTokenDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'RefreshToken' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'refreshToken' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'FragmentSpread', name: { kind: 'Name', value: 'RegularUser' } }], + }, + }, + ], + }, + }, + { + kind: 'FragmentDefinition', + name: { kind: 'Name', value: 'RegularUser' }, + typeCondition: { kind: 'NamedType', name: { kind: 'Name', value: 'User' } }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'username' } }, + { kind: 'Field', name: { kind: 'Name', value: 'email' } }, + { kind: 'Field', name: { kind: 'Name', value: 'verifiedEmail' } }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const DisableOtpDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'DisableOTP' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'otpCode' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'disableOTP' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'otpCode' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'otpCode' } }, + }, + ], + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const UserQueryWithTokenDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'UserQueryWithToken' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'user' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'FragmentSpread', name: { kind: 'Name', value: 'RegularUser' } }, + { kind: 'Field', name: { kind: 'Name', value: 'token' } }, + { kind: 'Field', name: { kind: 'Name', value: 'otpEnabled' } }, + ], + }, + }, + ], + }, + }, + { + kind: 'FragmentDefinition', + name: { kind: 'Name', value: 'RegularUser' }, + typeCondition: { kind: 'NamedType', name: { kind: 'Name', value: 'User' } }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'username' } }, + { kind: 'Field', name: { kind: 'Name', value: 'email' } }, + { kind: 'Field', name: { kind: 'Name', value: 'verifiedEmail' } }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const GetFileDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'GetFile' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'fileId' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'ID' } } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'file' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'fileId' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'fileId' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'type' } }, + { kind: 'Field', name: { kind: 'Name', value: 'displayName' } }, + { kind: 'Field', name: { kind: 'Name', value: 'size' } }, + { kind: 'Field', name: { kind: 'Name', value: 'sizeFormatted' } }, + { kind: 'Field', name: { kind: 'Name', value: 'textContent' } }, + { kind: 'Field', name: { kind: 'Name', value: 'isOwner' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'metadata' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'height' } }, + { kind: 'Field', name: { kind: 'Name', value: 'width' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'paths' }, + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'view' } }, + { kind: 'Field', name: { kind: 'Name', value: 'thumbnail' } }, + { kind: 'Field', name: { kind: 'Name', value: 'direct' } }, + ], + }, + }, + { + kind: 'Field', + name: { kind: 'Name', value: 'urls' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'view' } }], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const DeleteFileDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'DeleteFile' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'fileId' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'ID' } } }, + }, + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'deleteKey' } }, + type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'deleteFile' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'fileId' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'fileId' } }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'key' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'deleteKey' } }, + }, + ], + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const GetInviteDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'GetInvite' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'inviteId' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'ID' } } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'invite' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'inviteId' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'inviteId' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'expiresAt' } }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const CreateUserDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'CreateUser' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'user' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'CreateUserDto' } } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'createUser' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'data' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'user' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'id' } }], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const CreatePasteDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'CreatePaste' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'input' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'CreatePasteDto' } } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'createPaste' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'partial' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'input' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'urls' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'view' } }], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const GetPasteDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: { kind: 'Name', value: 'GetPaste' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'pasteId' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'ID' } } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'paste' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'pasteId' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'pasteId' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { kind: 'Field', name: { kind: 'Name', value: 'title' } }, + { kind: 'Field', name: { kind: 'Name', value: 'type' } }, + { kind: 'Field', name: { kind: 'Name', value: 'extension' } }, + { kind: 'Field', name: { kind: 'Name', value: 'content' } }, + { kind: 'Field', name: { kind: 'Name', value: 'encrypted' } }, + { kind: 'Field', name: { kind: 'Name', value: 'createdAt' } }, + { kind: 'Field', name: { kind: 'Name', value: 'expiresAt' } }, + { kind: 'Field', name: { kind: 'Name', value: 'burnt' } }, + { kind: 'Field', name: { kind: 'Name', value: 'burn' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'urls' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'view' } }], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; +export const ShortenDocument = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: { kind: 'Name', value: 'Shorten' }, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'link' } }, + type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } } }, + }, + { + kind: 'VariableDefinition', + variable: { kind: 'Variable', name: { kind: 'Name', value: 'host' } }, + type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: { kind: 'Name', value: 'createLink' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'destination' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'link' } }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'host' }, + value: { kind: 'Variable', name: { kind: 'Name', value: 'host' } }, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'id' } }, + { + kind: 'Field', + name: { kind: 'Name', value: 'urls' }, + selectionSet: { + kind: 'SelectionSet', + selections: [{ kind: 'Field', name: { kind: 'Name', value: 'view' } }], + }, + }, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode; diff --git a/packages/web/src/@generated/index.ts b/packages/web/src/@generated/index.ts new file mode 100644 index 0000000..8a12aab --- /dev/null +++ b/packages/web/src/@generated/index.ts @@ -0,0 +1 @@ +export * from './gql'; diff --git a/packages/web/src/@generated/introspection.json b/packages/web/src/@generated/introspection.json new file mode 100644 index 0000000..991c420 --- /dev/null +++ b/packages/web/src/@generated/introspection.json @@ -0,0 +1,3515 @@ +{ + "__schema": { + "queryType": { + "name": "Query" + }, + "mutationType": { + "name": "Mutation" + }, + "subscriptionType": null, + "types": [ + { + "kind": "SCALAR", + "name": "Boolean", + "description": "The `Boolean` scalar type represents `true` or `false`.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Config", + "description": null, + "fields": [ + { + "name": "allowTypes", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "currentHost", + "description": "The host the request is being made to. This host may not be in the hosts list if the user is not authorized to access it.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ConfigHost", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hosts", + "description": "A list of hosts the user can access.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ConfigHost", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inquiriesEmail", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "requireEmails", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "rootHost", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ConfigHost", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "uploadLimit", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ConfigHost", + "description": null, + "fields": [ + { + "name": "normalised", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "redirect", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "url", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CreatePasteDto", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "burn", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "content", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "encrypted", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "expiresAt", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "extension", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hostname", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "paranoid", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "title", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "CreateUserDto", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "email", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "invite", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "password", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "username", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "DateTime", + "description": "A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "File", + "description": null, + "fields": [ + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "displayName", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hash", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isOwner", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "metadata", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "FileMetadata", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "paths", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ResourceLocations", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "size", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sizeFormatted", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "textContent", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "thumbnail", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Thumbnail", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "urls", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ResourceLocations", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "FileMetadata", + "description": null, + "fields": [ + { + "name": "height", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "width", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "FilePage", + "description": null, + "fields": [ + { + "name": "edges", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "FilePageEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "FilePageEdge", + "description": null, + "fields": [ + { + "name": "cursor", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "File", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Float", + "description": "The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "ID", + "description": "The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "Int", + "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Invite", + "description": null, + "fields": [ + { + "name": "consumed", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "expired", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "expiresAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "path", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "permissions", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "skipVerification", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "url", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Link", + "description": null, + "fields": [ + { + "name": "clicks", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "destination", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "paths", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ResourceLocations", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "urls", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ResourceLocations", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Mutation", + "description": null, + "fields": [ + { + "name": "confirmOTP", + "description": null, + "args": [ + { + "name": "otpCode", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createInvite", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Invite", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createLink", + "description": null, + "args": [ + { + "name": "destination", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "host", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Link", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createPaste", + "description": null, + "args": [ + { + "name": "partial", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CreatePasteDto", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Paste", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createUser", + "description": null, + "args": [ + { + "name": "data", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "CreateUserDto", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deleteFile", + "description": null, + "args": [ + { + "name": "fileId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "key", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "disableOTP", + "description": null, + "args": [ + { + "name": "otpCode", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "login", + "description": null, + "args": [ + { + "name": "otpCode", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "password", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "username", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "logout", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "refreshToken", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "resendVerificationEmail", + "description": null, + "args": [ + { + "name": "data", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "ResendVerificationEmailDto", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "OTPEnabledDto", + "description": null, + "fields": [ + { + "name": "qrauthUrl", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "recoveryCodes", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "secret", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "PageInfo", + "description": null, + "fields": [ + { + "name": "endCursor", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hasNextPage", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "hasPreviousPage", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "startCursor", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Paste", + "description": null, + "fields": [ + { + "name": "burn", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "burnt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "content", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "encrypted", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "expiresAt", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "extension", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "paths", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ResourceLocations", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "title", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "urls", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ResourceLocations", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "PastePage", + "description": null, + "fields": [ + { + "name": "edges", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PastePageEdge", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pageInfo", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PageInfo", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "totalCount", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "PastePageEdge", + "description": null, + "fields": [ + { + "name": "cursor", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "node", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Paste", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Query", + "description": null, + "fields": [ + { + "name": "config", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Config", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "file", + "description": null, + "args": [ + { + "name": "fileId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "File", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "generateOTP", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "OTPEnabledDto", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "invite", + "description": null, + "args": [ + { + "name": "inviteId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Invite", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "link", + "description": null, + "args": [ + { + "name": "linkId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Link", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "paste", + "description": null, + "args": [ + { + "name": "pasteId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Paste", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "user", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "ResendVerificationEmailDto", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "email", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "ResourceLocations", + "description": null, + "fields": [ + { + "name": "delete", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "direct", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "thumbnail", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "view", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "String", + "description": "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "Thumbnail", + "description": null, + "fields": [ + { + "name": "createdAt", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "duration", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "height", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "size", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "width", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "User", + "description": null, + "fields": [ + { + "name": "aggregateFileSize", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "email", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "files", + "description": null, + "args": [ + { + "name": "after", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "FilePage", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "otpEnabled", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pastes", + "description": null, + "args": [ + { + "name": "after", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "PastePage", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "permissions", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Float", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tags", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "username", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "verifiedEmail", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Directive", + "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isRepeatable", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "locations", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "__DirectiveLocation", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "args", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "__DirectiveLocation", + "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "QUERY", + "description": "Location adjacent to a query operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "MUTATION", + "description": "Location adjacent to a mutation operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUBSCRIPTION", + "description": "Location adjacent to a subscription operation.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIELD", + "description": "Location adjacent to a field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FRAGMENT_DEFINITION", + "description": "Location adjacent to a fragment definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FRAGMENT_SPREAD", + "description": "Location adjacent to a fragment spread.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INLINE_FRAGMENT", + "description": "Location adjacent to an inline fragment.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "VARIABLE_DEFINITION", + "description": "Location adjacent to a variable definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SCHEMA", + "description": "Location adjacent to a schema definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SCALAR", + "description": "Location adjacent to a scalar definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OBJECT", + "description": "Location adjacent to an object type definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIELD_DEFINITION", + "description": "Location adjacent to a field definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ARGUMENT_DEFINITION", + "description": "Location adjacent to an argument definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INTERFACE", + "description": "Location adjacent to an interface definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UNION", + "description": "Location adjacent to a union definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM", + "description": "Location adjacent to an enum definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM_VALUE", + "description": "Location adjacent to an enum value definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_OBJECT", + "description": "Location adjacent to an input object type definition.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_FIELD_DEFINITION", + "description": "Location adjacent to an input object field definition.", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__EnumValue", + "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.", + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Field", + "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.", + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "args", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__InputValue", + "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.", + "fields": [ + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "type", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "defaultValue", + "description": "A GraphQL-formatted string representing the default value for this input value.", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isDeprecated", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "deprecationReason", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Schema", + "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", + "fields": [ + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "types", + "description": "A list of all types supported by this server.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "queryType", + "description": "The type that query operations will be rooted at.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mutationType", + "description": "If this server supports mutation, the type that mutation operations will be rooted at.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "subscriptionType", + "description": "If this server support subscription, the type that subscription operations will be rooted at.", + "args": [], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "directives", + "description": "A list of all directives supported by this server.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Directive", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "__Type", + "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.", + "fields": [ + { + "name": "kind", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "__TypeKind", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "specifiedByURL", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "fields", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Field", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "interfaces", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "possibleTypes", + "description": null, + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "enumValues", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__EnumValue", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "inputFields", + "description": null, + "args": [ + { + "name": "includeDeprecated", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "__InputValue", + "ofType": null + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ofType", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "__Type", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "__TypeKind", + "description": "An enum describing what kind of type a given `__Type` is.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "SCALAR", + "description": "Indicates this type is a scalar.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "OBJECT", + "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INTERFACE", + "description": "Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UNION", + "description": "Indicates this type is a union. `possibleTypes` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ENUM", + "description": "Indicates this type is an enum. `enumValues` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INPUT_OBJECT", + "description": "Indicates this type is an input object. `inputFields` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LIST", + "description": "Indicates this type is a list. `ofType` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NON_NULL", + "description": "Indicates this type is a non-null. `ofType` is a valid field.", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + } + ], + "directives": [ + { + "name": "deprecated", + "description": "Marks an element of a GraphQL schema as no longer supported.", + "isRepeatable": false, + "locations": ["ARGUMENT_DEFINITION", "ENUM_VALUE", "FIELD_DEFINITION", "INPUT_FIELD_DEFINITION"], + "args": [ + { + "name": "reason", + "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": "\"No longer supported\"", + "isDeprecated": false, + "deprecationReason": null + } + ] + }, + { + "name": "include", + "description": "Directs the executor to include this field or fragment only when the `if` argument is true.", + "isRepeatable": false, + "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], + "args": [ + { + "name": "if", + "description": "Included when true.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ] + }, + { + "name": "skip", + "description": "Directs the executor to skip this field or fragment when the `if` argument is true.", + "isRepeatable": false, + "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], + "args": [ + { + "name": "if", + "description": "Skipped when true.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ] + }, + { + "name": "specifiedBy", + "description": "Exposes a URL that specifies the behavior of this scalar.", + "isRepeatable": false, + "locations": ["SCALAR"], + "args": [ + { + "name": "url", + "description": "The URL that specifies the behavior of this scalar.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ] + } + ] + } +} diff --git a/packages/web/src/apollo.ts b/packages/web/src/apollo.ts deleted file mode 100644 index 5faa233..0000000 --- a/packages/web/src/apollo.ts +++ /dev/null @@ -1,110 +0,0 @@ -import type { NormalizedCacheObject } from '@apollo/client'; -import { ApolloClient, from, HttpLink, InMemoryCache } from '@apollo/client'; -import { onError } from '@apollo/client/link/error'; -import { relayStylePagination } from '@apollo/client/utilities'; -import merge from 'deepmerge'; -import isEqual from 'lodash/isEqual'; -import type { GetServerSidePropsContext } from 'next'; -import { useMemo } from 'react'; -import { apiUri, isServer } from './helpers/http.helper'; - -export const APOLLO_STATE_PROP_NAME = '__APOLLO_STATE__'; - -let globalClient: ApolloClient | undefined; - -const errorLink = onError(({ graphQLErrors, networkError }) => { - if (graphQLErrors) { - for (const { message, locations, path } of graphQLErrors) { - console.log(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`); - } - } - if (networkError) { - console.log(`[Network error]: ${networkError.message}`); - } -}); - -function createApolloClient(context?: GetServerSidePropsContext) { - const httpLink = new HttpLink({ - uri: apiUri + '/graphql', - credentials: 'same-origin', - fetch: (url, init) => { - if (!context) return fetch(url, init); - return fetch(url, { - ...init, - headers: { - ...init?.headers, - cookie: context.req.headers.cookie as string, - }, - }); - }, - }); - - return new ApolloClient({ - ssrMode: typeof window === 'undefined', - link: from([errorLink, httpLink]), - cache: new InMemoryCache({ - typePolicies: { - User: { - keyFields: [], - fields: { - files: relayStylePagination(), - pastes: relayStylePagination(), - }, - }, - Config: { - keyFields: [], - }, - }, - }), - }); -} - -export function initializeApollo(options?: { initialState?: any; context?: GetServerSidePropsContext }) { - const client = globalClient ?? createApolloClient(options?.context); - - if (options?.initialState) { - const existingCache = client.extract(); - - // Merge the initialState from getStaticProps/getServerSideProps in the existing cache - const data = merge(existingCache, options.initialState, { - // combine arrays using object equality (like in sets) - arrayMerge: (destinationArray, sourceArray) => [ - ...sourceArray, - ...destinationArray.filter((d) => sourceArray.every((s) => !isEqual(d, s))), - ], - }); - - client.cache.restore(data); - } - - // ensure we never use the same client server-side - // so we're not leaking sessions between requests - if (isServer) return client; - if (!globalClient) { - globalClient = client; - } - - return client; -} - -export function addStateToPageProps(client: ApolloClient, pageProps: any) { - if (pageProps?.props) { - pageProps.props[APOLLO_STATE_PROP_NAME] = client.cache.extract(); - } - - return pageProps; -} - -export function useApollo(pageProps: any) { - const state = pageProps[APOLLO_STATE_PROP_NAME]; - return useMemo(() => { - return initializeApollo({ initialState: state }); - }, [state]); -} - -// here in case future me adds persistent caching and it has to be handled or something -export const resetClient = () => { - // client.resetStore() does not seem to work, so instead of fighting with apollo over it not clearing hook data, - // we just reload the entire page which ensures any cache it has is nuked from orbit. - window.location.href = '/'; -}; diff --git a/packages/web/src/app.tsx b/packages/web/src/app.tsx new file mode 100644 index 0000000..0c2ee79 --- /dev/null +++ b/packages/web/src/app.tsx @@ -0,0 +1,24 @@ +import React, { FC, Fragment } from 'react'; +import { Header } from './components/header/header'; +import { Title } from './components/title'; +import './styles/globals.css'; +import { ToastProvider } from './components/toast'; +import { Helmet } from 'react-helmet-async'; + +interface AppProps { + children: React.ReactNode; +} + +export const App: FC = ({ children }) => ( + + Home + + + + + +
+
{children}
+ + +); diff --git a/packages/web/src/components/avatar.tsx b/packages/web/src/components/avatar.tsx index f62916d..ec8e3b4 100644 --- a/packages/web/src/components/avatar.tsx +++ b/packages/web/src/components/avatar.tsx @@ -2,7 +2,7 @@ import clsx from 'clsx'; import * as avatar from 'generate-avatar'; import type { FC } from 'react'; -import { useEffect, useMemo, useRef } from 'react'; +import { useMemo, useRef } from 'react'; export interface AvatarProps { userId: string; @@ -13,15 +13,9 @@ export const Avatar: FC = (props) => { const classes = clsx('overflow-hidden rounded-full select-none', props.className); const containerRef = useRef(null); const svg = useMemo(() => { - return avatar.generateFromString(props.userId); + const result = avatar.generateFromString(props.userId); + return result.replace(/(width|height)="(\d+)"/g, '$1="100%"'); }, [props.userId]); - useEffect(() => { - if (containerRef.current) { - containerRef.current.firstElementChild?.setAttribute('height', 'inherit'); - containerRef.current.firstElementChild?.setAttribute('width', 'inherit'); - } - }, [containerRef]); - return
; }; diff --git a/packages/web/src/components/breadcrumbs.tsx b/packages/web/src/components/breadcrumbs.tsx new file mode 100644 index 0000000..b446e7d --- /dev/null +++ b/packages/web/src/components/breadcrumbs.tsx @@ -0,0 +1,18 @@ +import clsx from 'clsx'; +import React, { forwardRef } from 'react'; +import { FiArrowLeft } from 'react-icons/fi'; + +export interface BreadcrumbsProps { + href: string; + children: string; + className?: string; +} + +export const Breadcrumbs = forwardRef(({ href, children, className }, ref) => { + const classes = clsx('text-sm text-gray-500 flex items-center gap-1 hover:underline', className); + return ( + + {children} + + ); +}); diff --git a/packages/web/src/components/button.tsx b/packages/web/src/components/button.tsx new file mode 100644 index 0000000..bf524e5 --- /dev/null +++ b/packages/web/src/components/button.tsx @@ -0,0 +1,62 @@ +/* eslint-disable react/button-has-type */ +import clsx from 'clsx'; +import type { FC, HTMLAttributes } from 'react'; +import React, { forwardRef } from 'react'; +import { Spinner } from './spinner'; + +export interface ButtonProps extends Omit, 'prefix' | 'style'> { + href?: string; + disabled?: boolean; + style?: ButtonStyle; + loading?: boolean; + type?: 'submit' | 'reset' | 'button'; + as?: FC | 'button' | 'a'; +} + +export enum ButtonStyle { + Primary = 'bg-purple-500 hover:bg-purple-400', + Secondary = 'bg-dark-600 hover:bg-dark-900', + Disabled = 'bg-dark-300 hover:bg-dark-400 cursor-not-allowed', +} + +export const Button = forwardRef( + ( + { + as: As = 'button', + disabled, + className, + type, + children, + loading, + style = ButtonStyle.Primary, + onClick, + onKeyDown, + ...rest + }, + ref, + ) => { + if (disabled) style = ButtonStyle.Disabled; + const onClickWrap = disabled || loading ? undefined : onClick; + const onKeyDownWrap = disabled || loading ? undefined : onKeyDown; + const classes = clsx( + 'flex items-center justify-center gap-2 px-3 py-2 text-sm font-medium transition rounded truncate max-h-[2.65em]', + className, + style, + ); + + return ( + + {children} {loading && } + + ); + }, +); diff --git a/packages/web/src/components/card.tsx b/packages/web/src/components/card.tsx new file mode 100644 index 0000000..ac0b978 --- /dev/null +++ b/packages/web/src/components/card.tsx @@ -0,0 +1,11 @@ +import clsx from 'clsx'; +import type { FC, HTMLAttributes } from 'react'; + +export const Card: FC> = ({ className, children, ...rest }) => { + const classes = clsx(className, 'p-4 bg-dark-200 rounded'); + return ( +
+ {children} +
+ ); +}; diff --git a/packages/web/src/components/container.tsx b/packages/web/src/components/container.tsx new file mode 100644 index 0000000..fac0343 --- /dev/null +++ b/packages/web/src/components/container.tsx @@ -0,0 +1,31 @@ +import clsx from 'clsx'; +import type { FC, ReactNode } from 'react'; +import React from 'react'; + +export interface ContainerProps { + centerX?: boolean; + centerY?: boolean; + center?: boolean; + small?: boolean; + className?: string; + children: ReactNode; +} + +export const Container: FC = ({ + center, + centerX = center, + centerY = center, + className, + small, + children, +}) => { + const classes = clsx(className, 'px-4 mx-auto', { + 'sm:max-w-screen-sm md:max-w-screen-md lg:max-w-screen-lg xl:max-w-screen-xl': !small, + 'flex justify-center flex-col': centerX || centerY, + 'absolute top-16 bottom-0 right-0 left-0': centerY, + 'items-center': centerX, + 'max-w-xs': small, + }); + + return
{children}
; +}; diff --git a/packages/web/src/components/dropdown.tsx b/packages/web/src/components/dropdown.tsx new file mode 100644 index 0000000..6aff55f --- /dev/null +++ b/packages/web/src/components/dropdown.tsx @@ -0,0 +1,51 @@ +import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; +import clsx from 'clsx'; +import type { FC, ReactNode } from 'react'; +import { Link } from './link'; + +export interface DropdownProps { + trigger: ReactNode; + children: ReactNode; + className?: string; +} + +export const Dropdown: FC = ({ trigger, children, className }) => { + const itemsClasses = clsx( + 'absolute right-0 mt-2 overflow-y-auto rounded-md shadow-2xl bg-dark-300 focus:outline-none max-h-56 min-w-[10em]', + className, + ); + + return ( + + {trigger} + {children} + + ); +}; + +export interface DropdownTabProps { + href?: string; + className?: string; + children: ReactNode; + onClick?: () => void; +} + +export const DropdownTab: FC = ({ href, className, children, onClick }) => { + const As = href ? Link : onClick ? 'button' : 'div'; + const base = clsx( + 'block w-full text-left px-3 py-2 my-1 text-gray-400 transition ease-in-out border-none cursor-pointer hover:bg-dark-800', + className, + ); + + return ( + + + {children} + + + ); +}; + +export const DropdownDivider: FC = () => { + return
; +}; diff --git a/packages/web/src/components/dropdown/dropdown-divider.tsx b/packages/web/src/components/dropdown/dropdown-divider.tsx deleted file mode 100644 index b0988c2..0000000 --- a/packages/web/src/components/dropdown/dropdown-divider.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import type { FC } from 'react'; - -export const DropdownDivider: FC = () => { - return
; -}; diff --git a/packages/web/src/components/dropdown/dropdown-tab.tsx b/packages/web/src/components/dropdown/dropdown-tab.tsx deleted file mode 100644 index 386c62f..0000000 --- a/packages/web/src/components/dropdown/dropdown-tab.tsx +++ /dev/null @@ -1,29 +0,0 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ -import { Menu } from '@headlessui/react'; -import clsx from 'clsx'; -import type { FC, ReactNode } from 'react'; -import { Fragment } from 'react'; -import { Link } from '../link'; - -export interface DropdownTabProps { - href?: string; - className?: string; - children: ReactNode; - onClick?: () => void; -} - -export const DropdownTab: FC = ({ href, className, children, onClick }) => { - const props = href ? { as: Link, href: href } : { as: Fragment }; - const base = clsx('px-3 py-2 my-1 text-gray-400 transition ease-in-out border-none cursor-pointer', className); - - return ( - - {({ active }) => ( -
- {children} -
- )} -
- ); -}; diff --git a/packages/web/src/components/dropdown/dropdown.tsx b/packages/web/src/components/dropdown/dropdown.tsx deleted file mode 100644 index cbaa41c..0000000 --- a/packages/web/src/components/dropdown/dropdown.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Menu, Transition } from '@headlessui/react'; -import clsx from 'clsx'; -import type { FC, ReactNode } from 'react'; -import React, { Fragment } from 'react'; - -export interface DropdownProps { - trigger: ReactNode; - children: ReactNode; - className?: string; -} - -export const Dropdown: FC = ({ trigger, children, className }) => { - const itemsClasses = clsx( - 'absolute right-0 mt-2 overflow-y-auto rounded-md shadow-2xl bg-dark-300 focus:outline-none max-h-56 min-w-[10em]', - className - ); - - return ( - - {({ open }) => ( - - {trigger} - - - {children} - - - - )} - - ); -}; diff --git a/packages/web/src/components/embed/embed-container.tsx b/packages/web/src/components/embed/embed-container.tsx index ba24455..d5542a3 100644 --- a/packages/web/src/components/embed/embed-container.tsx +++ b/packages/web/src/components/embed/embed-container.tsx @@ -1,17 +1,17 @@ -import Head from 'next/head'; import type { FC, ReactNode } from 'react'; import { Fragment } from 'react'; import type { Embeddable } from './embeddable'; +import { Helmet } from 'react-helmet-async'; export const EmbedContainer: FC<{ data: Embeddable; children: ReactNode }> = ({ data, children }) => { return ( - + - + {children} ); diff --git a/packages/web/src/components/embed/embeddable.ts b/packages/web/src/components/embed/embeddable.ts index e6b232c..7e97740 100644 --- a/packages/web/src/components/embed/embeddable.ts +++ b/packages/web/src/components/embed/embeddable.ts @@ -4,7 +4,7 @@ export interface Embeddable { displayName?: string; height?: number | null; width?: number | null; - content?: { data?: string | null; error?: any }; + textContent?: string | null; paths: { direct: string; view?: string; diff --git a/packages/web/src/components/embed/variants/embed-image.tsx b/packages/web/src/components/embed/variants/embed-image.tsx index 88b8a6f..29060d0 100644 --- a/packages/web/src/components/embed/variants/embed-image.tsx +++ b/packages/web/src/components/embed/variants/embed-image.tsx @@ -1,6 +1,6 @@ import clsx from 'clsx'; -import Head from 'next/head'; import { Fragment } from 'react'; +import { Helmet } from 'react-helmet-async'; import { BASE_EMBED_CLASSES, MAX_HEIGHT } from '../embed'; import type { Embeddable } from '../embeddable'; @@ -9,15 +9,15 @@ export const EmbedImage = ({ data }: { data: Embeddable }) => { const containerClasses = clsx( 'flex items-center justify-center relative overflow-hidden', BASE_EMBED_CLASSES, - MAX_HEIGHT + MAX_HEIGHT, ); return ( - + - +
{ - const swrContent = useSWR(data.content ? null : data.paths.direct, { fetcher: textFetcher }); - const content = data.content ?? swrContent; const classes = clsx('p-4', BASE_EMBED_CLASSES); - if (content.error) { - return ; + if (!data.textContent) { + throw new Error('EmbedText requires textContent'); } - if (!content.data) { - return ; - } - - return {content.data}; + return {data.textContent}; }; const MAX_MARKDOWN_SIZE = 1_000_000; // 1mb EmbedMarkdown.embeddable = (data: Embeddable) => { if (data.size > MAX_MARKDOWN_SIZE) return false; + if (!data.textContent) return false; if (data.type === 'text/markdown') return true; if (data.type === 'text/plain' && data.displayName?.endsWith('md')) return true; return false; diff --git a/packages/web/src/components/embed/variants/embed-text.tsx b/packages/web/src/components/embed/variants/embed-text.tsx index 5166237..2d3a180 100644 --- a/packages/web/src/components/embed/variants/embed-text.tsx +++ b/packages/web/src/components/embed/variants/embed-text.tsx @@ -1,46 +1,34 @@ import type { Language } from 'prism-react-renderer'; import { useEffect, useState } from 'react'; -import useSWR from 'swr'; import { getFileLanguage } from '../../../helpers/get-file-language.helper'; -import { PageLoader } from '../../page-loader'; import { SyntaxHighlighter } from '../../syntax-highlighter/syntax-highlighter'; import { BASE_EMBED_CLASSES } from '../embed'; import type { Embeddable } from '../embeddable'; -import { textFetcher } from '../text-fetcher'; -import { EmbedDefault } from './embed-default'; const DEFAULT_LANGUAGE = getFileLanguage('diff')!; const MAX_SIZE = 1_000_000; // 1mb export const EmbedText = ({ data }: { data: Embeddable }) => { const [language, setLanguage] = useState(getFileLanguage(data.displayName) ?? DEFAULT_LANGUAGE); - const swrContent = useSWR(data.content ? null : data.paths.direct, { fetcher: textFetcher }); - const content = data.content ?? swrContent; useEffect(() => { // re-calculate language on fileName change setLanguage(getFileLanguage(data.displayName) ?? DEFAULT_LANGUAGE); }, [data.displayName]); - if (content.error) { - return ; - } - - if (!content.data) { - return ; + if (!data.textContent) { + throw new Error('EmbedText requires textContent'); } return ( - {content.data} + {data.textContent} ); }; EmbedText.embeddable = (data: Embeddable) => { - if (data.type.startsWith('text/')) return true; - if (data.type === 'application/json') return true; - if (getFileLanguage(data.displayName)) return true; if (data.size > MAX_SIZE) return false; + if (data.textContent) return true; return false; }; diff --git a/packages/web/src/pages/_error.tsx b/packages/web/src/components/error.tsx similarity index 80% rename from packages/web/src/pages/_error.tsx rename to packages/web/src/components/error.tsx index 2fd049c..21a2ed5 100644 --- a/packages/web/src/pages/_error.tsx +++ b/packages/web/src/components/error.tsx @@ -1,8 +1,9 @@ -import { Container } from '@ryanke/pandora'; -import { Link } from '../components/link'; -import { Title } from '../components/title'; +import { FC } from 'react'; import { getErrorMessage } from '../helpers/get-error-message.helper'; import { usePaths } from '../hooks/usePaths'; +import { Container } from './container'; +import { Link } from './link'; +import { Title } from './title'; export enum Lenny { Concerned = 'ಠ_ಠ', @@ -12,11 +13,12 @@ export enum Lenny { Wut = 'ლ,ᔑ•ﺪ͟͠•ᔐ.ლ', Happy = '(◉͜ʖ◉)', Shrug = '¯\\_(⊙_ʖ⊙)_/¯', + Angry = "(ง'̀-'́)ง", } export type ErrorProps = ({ error: unknown } | { message: string }) & { lenny?: Lenny }; -export default function Error(props: ErrorProps) { +export const Error: FC = (props) => { const message = 'message' in props ? props.message : getErrorMessage(props.error) || 'An unknown error occurred.'; const paths = usePaths(); const lenny = props.lenny ?? Lenny.Wut; @@ -31,4 +33,4 @@ export default function Error(props: ErrorProps) { ); -} +}; diff --git a/packages/web/src/components/header/header-user.tsx b/packages/web/src/components/header/header-user.tsx index b43f8fa..e58ba86 100644 --- a/packages/web/src/components/header/header-user.tsx +++ b/packages/web/src/components/header/header-user.tsx @@ -2,11 +2,9 @@ import type { FC } from 'react'; import { Fragment } from 'react'; import { usePaths } from '../../hooks/usePaths'; import { useUser } from '../../hooks/useUser'; -import { Dropdown } from '../dropdown/dropdown'; -import { DropdownDivider } from '../dropdown/dropdown-divider'; -import { DropdownTab } from '../dropdown/dropdown-tab'; import { Link } from '../link'; import { UserPill } from '../user-pill'; +import { Dropdown, DropdownDivider, DropdownTab } from '../dropdown'; export interface HeaderUserProps { username: string; diff --git a/packages/web/src/components/header/header.graphql b/packages/web/src/components/header/header.graphql deleted file mode 100644 index ed64719..0000000 --- a/packages/web/src/components/header/header.graphql +++ /dev/null @@ -1,3 +0,0 @@ -mutation ResendVerificationEmail($data: ResendVerificationEmailDto) { - resendVerificationEmail(data: $data) -} diff --git a/packages/web/src/components/header/header.tsx b/packages/web/src/components/header/header.tsx index 672fdb1..598d236 100644 --- a/packages/web/src/components/header/header.tsx +++ b/packages/web/src/components/header/header.tsx @@ -1,14 +1,25 @@ -import { Button, ButtonStyle, Container, useAsync, useOnClickOutside, useToasts } from '@ryanke/pandora'; import clsx from 'clsx'; import { Fragment, memo, useRef, useState } from 'react'; -import { Crop } from 'react-feather'; -import { useResendVerificationEmailMutation } from '../../generated/graphql'; +import { FiCrop } from 'react-icons/fi'; +import { useAsync } from '../../hooks/useAsync'; import { useConfig } from '../../hooks/useConfig'; +import { useOnClickOutside } from '../../hooks/useOnClickOutside'; import { usePaths } from '../../hooks/usePaths'; import { useUser } from '../../hooks/useUser'; +import { Button, ButtonStyle } from '../button'; +import { Container } from '../container'; import { Input } from '../input/input'; import { Link } from '../link'; +import { useToasts } from '../toast'; import { HeaderUser } from './header-user'; +import { graphql } from '../../@generated'; +import { useMutation } from '@apollo/client'; + +const ResendVerificationEmail = graphql(` + mutation ResendVerificationEmail($data: ResendVerificationEmailDto) { + resendVerificationEmail(data: $data) + } +`); export const Header = memo(() => { const user = useUser(); @@ -21,7 +32,7 @@ export const Header = memo(() => { const [resent, setResent] = useState(false); const classes = clsx( 'relative z-20 flex items-center justify-between h-16 my-auto transition', - paths.loading && 'pointer-events-none invisible' + paths.loading && 'pointer-events-none invisible', ); useOnClickOutside(emailInputRef, () => { @@ -29,7 +40,7 @@ export const Header = memo(() => { setShowEmailInput(false); }); - const [resendMutation] = useResendVerificationEmailMutation(); + const [resendMutation] = useMutation(ResendVerificationEmail); const [resendVerification, sendingVerification] = useAsync(async () => { if (resent || !user.data) return; if (!user.data.email && !email) { @@ -107,7 +118,7 @@ export const Header = memo(() => {
); - } + }, ); diff --git a/packages/web/src/warning.tsx b/packages/web/src/components/warning.tsx similarity index 78% rename from packages/web/src/warning.tsx rename to packages/web/src/components/warning.tsx index ea798dd..2303d8e 100644 --- a/packages/web/src/warning.tsx +++ b/packages/web/src/components/warning.tsx @@ -1,15 +1,15 @@ import clsx from 'clsx'; import { type FC, type ReactNode } from 'react'; -import { Info } from 'react-feather'; +import { FiInfo } from 'react-icons/fi'; export const Warning: FC<{ children: ReactNode; className?: string }> = ({ children, className }) => { const classes = clsx( 'bg-purple-400 bg-opacity-40 border border-purple-400 px-2 py-1 rounded text-sm flex items-center gap-2', - className + className, ); return (
- + {children}
); diff --git a/packages/web/src/containers/config-generator/config-generator.tsx b/packages/web/src/containers/config-generator/config-generator.tsx index 7c6af8b..cc6bba8 100644 --- a/packages/web/src/containers/config-generator/config-generator.tsx +++ b/packages/web/src/containers/config-generator/config-generator.tsx @@ -1,17 +1,21 @@ -import { Container, Spinner } from '@ryanke/pandora'; import clsx from 'clsx'; -import { Fragment, useState } from 'react'; -import { Download } from 'react-feather'; +import { FC, Fragment, useState } from 'react'; +import { FiDownload } from 'react-icons/fi'; +import { RegularUserFragment } from '../../@generated/graphql'; +import { Container } from '../../components/container'; import { Section } from '../../components/section'; +import { Spinner } from '../../components/spinner'; import { Toggle } from '../../components/toggle'; import { downloadFile } from '../../helpers/download.helper'; import { generateConfig } from '../../helpers/generate-config.helper'; import { useConfig } from '../../hooks/useConfig'; -import { useUser } from '../../hooks/useUser'; import { CustomisationOption } from './customisation-option'; -export const ConfigGenerator = () => { - const user = useUser(); +export interface ConfigGeneratorProps { + user: RegularUserFragment & { token: string }; +} + +export const ConfigGenerator: FC = ({ user }) => { const [selectedHosts, setSelectedHosts] = useState([]); const [embedded, setEmbedded] = useState(true); const [pasteShortcut, setPasteShortcut] = useState(true); @@ -19,15 +23,15 @@ export const ConfigGenerator = () => { const downloadable = !!selectedHosts[0]; const download = () => { - if (!downloadable || !user.data) return; + if (!downloadable) return; const { name, content } = generateConfig({ direct: !embedded, hosts: selectedHosts, shortcut: pasteShortcut, - token: user.data.token, + token: user.token, }); - const cleanName = name.split('{{username}}').join(user.data.username); + const cleanName = name.split('{{username}}').join(user.username); downloadFile(cleanName, content); }; @@ -96,7 +100,7 @@ export const ConfigGenerator = () => { const classes = clsx( 'rounded px-2 py-1 truncate transition border border-transparent', isSelected && 'bg-purple-600 text-white', - !isSelected && 'text-gray-400 bg-dark-100 hover:bg-dark-200 hover:text-white' + !isSelected && 'text-gray-400 bg-dark-100 hover:bg-dark-200 hover:text-white', ); return ( @@ -112,7 +116,7 @@ export const ConfigGenerator = () => { } }} > - {user.data ? host.normalised.replace('{{username}}', user.data.username) : host.normalised} + {host.normalised.replace('{{username}}', user.username)} ); })} @@ -126,10 +130,10 @@ export const ConfigGenerator = () => { onClick={download} className={clsx( 'mt-8 ml-auto flex items-center gap-1', - downloadable ? 'text-purple-400 hover:underline' : 'text-gray-700 cursor-not-allowed' + downloadable ? 'text-purple-400 hover:underline' : 'text-gray-700 cursor-not-allowed', )} > - download config + download config diff --git a/packages/web/src/containers/file-list/cards/card.graphql b/packages/web/src/containers/file-list/cards/card.graphql deleted file mode 100644 index babb092..0000000 --- a/packages/web/src/containers/file-list/cards/card.graphql +++ /dev/null @@ -1,29 +0,0 @@ -fragment PasteCard on Paste { - id - title - encrypted - burn - type - createdAt - expiresAt - urls { - view - } -} - -fragment FileCard on File { - id - type - displayName - sizeFormatted - thumbnail { - width - height - } - paths { - thumbnail - } - urls { - view - } -} diff --git a/packages/web/src/containers/file-list/cards/file-card.tsx b/packages/web/src/containers/file-list/cards/file-card.tsx index 2aeb6ae..9665701 100644 --- a/packages/web/src/containers/file-list/cards/file-card.tsx +++ b/packages/web/src/containers/file-list/cards/file-card.tsx @@ -1,15 +1,35 @@ import { memo, useEffect, useMemo, useState } from 'react'; -import { FileMinus, Trash } from 'react-feather'; +import { FiFileMinus, FiTrash } from 'react-icons/fi'; +import { graphql } from '../../../@generated'; +import { FileCardFragment } from '../../../@generated/graphql'; import { Link } from '../../../components/link'; -import type { FileCardFragment } from '../../../generated/graphql'; import { useConfig } from '../../../hooks/useConfig'; import { MissingPreview } from '../missing-preview'; +export const FileCardFrag = graphql(` + fragment FileCard on File { + id + type + displayName + sizeFormatted + thumbnail { + width + height + } + paths { + thumbnail + } + urls { + view + } + } +`); + export interface FileCardProps { file: FileCardFragment; } -export const FileCard = memo(({ file }) => { +export const FileCard = memo<{ file: FileCardFragment }>(({ file }) => { const [loadFailed, setLoadFailed] = useState(false); const config = useConfig(); const url = useMemo(() => { @@ -47,12 +67,12 @@ export const FileCard = memo(({ file }) => { }} /> )} - {loadFailed && } - {!file.paths.thumbnail && } + {loadFailed && } + {!file.paths.thumbnail && }
{file.displayName} - {file.sizeFormatted} + {file.sizeFormatted}
diff --git a/packages/web/src/containers/file-list/cards/paste-card.tsx b/packages/web/src/containers/file-list/cards/paste-card.tsx index f506a99..0abd14a 100644 --- a/packages/web/src/containers/file-list/cards/paste-card.tsx +++ b/packages/web/src/containers/file-list/cards/paste-card.tsx @@ -1,10 +1,26 @@ import clsx from 'clsx'; import { memo } from 'react'; +import { graphql } from '../../../@generated'; +import { PasteCardFragment } from '../../../@generated/graphql'; import { Link } from '../../../components/link'; import { Time } from '../../../components/time'; -import type { PasteCardFragment } from '../../../generated/graphql'; import { useUser } from '../../../hooks/useUser'; +export const PasteCardFrag = graphql(` + fragment PasteCard on Paste { + id + title + encrypted + burn + type + createdAt + expiresAt + urls { + view + } + } +`); + export interface PasteCardProps { paste: PasteCardFragment; } diff --git a/packages/web/src/containers/file-list/file-list.graphql b/packages/web/src/containers/file-list/file-list.graphql deleted file mode 100644 index bb66d32..0000000 --- a/packages/web/src/containers/file-list/file-list.graphql +++ /dev/null @@ -1,31 +0,0 @@ -query GetFiles($first: Float, $after: String) { - user { - files(first: $first, after: $after) { - pageInfo { - endCursor - hasNextPage - } - edges { - node { - ...FileCard - } - } - } - } -} - -query GetPastes($first: Float, $after: String) { - user { - pastes(first: $first, after: $after) { - pageInfo { - endCursor - hasNextPage - } - edges { - node { - ...PasteCard - } - } - } - } -} diff --git a/packages/web/src/containers/file-list/file-list.tsx b/packages/web/src/containers/file-list/file-list.tsx index 688233e..bbb0608 100644 --- a/packages/web/src/containers/file-list/file-list.tsx +++ b/packages/web/src/containers/file-list/file-list.tsx @@ -1,23 +1,63 @@ -import { Breadcrumbs, Card } from '@ryanke/pandora'; +import { useQuery } from '@apollo/client'; import type { FC } from 'react'; import { Fragment } from 'react'; +import { graphql } from '../../@generated'; +import { Breadcrumbs } from '../../components/breadcrumbs'; +import { Card } from '../../components/card'; +import { Error } from '../../components/error'; import { PageLoader } from '../../components/page-loader'; import { Toggle } from '../../components/toggle'; -import { useGetFilesQuery, useGetPastesQuery } from '../../generated/graphql'; import { useQueryState } from '../../hooks/useQueryState'; -import ErrorPage from '../../pages/_error'; import { FileCard } from './cards/file-card'; import { PasteCard } from './cards/paste-card'; const PER_PAGE = 24; +const GetFilesQuery = graphql(` + query GetFiles($after: String) { + user { + files(first: 24, after: $after) { + pageInfo { + endCursor + hasNextPage + } + edges { + node { + id + ...FileCard + } + } + } + } + } +`); + +const GetPastesQuery = graphql(` + query GetPastes($after: String) { + user { + pastes(first: 24, after: $after) { + pageInfo { + endCursor + hasNextPage + } + edges { + node { + id + ...PasteCard + } + } + } + } + } +`); + export const FileList: FC = () => { const [filter, setFilter] = useQueryState('filter', 'files'); - const files = useGetFilesQuery({ skip: filter !== 'files', variables: { first: PER_PAGE } }); - const pastes = useGetPastesQuery({ skip: filter !== 'pastes', variables: { first: PER_PAGE } }); + const files = useQuery(GetFilesQuery, { skip: filter !== 'files' }); + const pastes = useQuery(GetPastesQuery, { skip: filter !== 'pastes' }); const source = filter === 'files' ? files : pastes; if (source.error) { - return ; + return ; } const currentPageInfo = filter === 'files' ? files.data?.user.files : pastes.data?.user.pastes; diff --git a/packages/web/src/containers/file-list/missing-preview.tsx b/packages/web/src/containers/file-list/missing-preview.tsx index 8e7411b..49ca38a 100644 --- a/packages/web/src/containers/file-list/missing-preview.tsx +++ b/packages/web/src/containers/file-list/missing-preview.tsx @@ -1,8 +1,8 @@ import { memo } from 'react'; -import type { Icon } from 'react-feather'; +import { IconType } from 'react-icons/lib'; interface MissingPreviewProps { - icon: Icon; + icon: IconType; text: string; type: string; } @@ -12,7 +12,7 @@ export const MissingPreview = memo(({ icon: Icon, type, tex
{text} - {type} + {type}
); }); diff --git a/packages/web/src/containers/login-form.tsx b/packages/web/src/containers/login-form.tsx index 4b2ad0e..d507326 100644 --- a/packages/web/src/containers/login-form.tsx +++ b/packages/web/src/containers/login-form.tsx @@ -1,14 +1,14 @@ -import { useAsync } from '@ryanke/pandora'; import clsx from 'clsx'; import { Form, Formik } from 'formik'; -import { useRouter } from 'next/router'; import type { FC } from 'react'; import { Fragment, useCallback, useEffect, useState } from 'react'; -import { OtpInput } from 'src/components/input/otp'; -import type { LoginMutationVariables } from 'src/generated/graphql'; import * as Yup from 'yup'; +import { LoginMutationVariables } from '../@generated/graphql'; import { Input } from '../components/input/input'; +import { OtpInput } from '../components/input/otp'; import { Submit } from '../components/input/submit'; +import { navigate } from '../helpers/routing'; +import { useAsync } from '../hooks/useAsync'; import { useUser } from '../hooks/useUser'; const schema = Yup.object().shape({ @@ -18,31 +18,38 @@ const schema = Yup.object().shape({ export const LoginForm: FC = () => { const user = useUser(); - const router = useRouter(); const [loginInfo, setLoginInfo] = useState(null); const [invalidOTP, setInvalidOTP] = useState(false); + const [error, setError] = useState(null); const redirect = useCallback(() => { const url = new URL(window.location.href); const to = url.searchParams.get('to') ?? '/dashboard'; - router.replace(to); - }, [router]); + navigate(to); + }, []); useEffect(() => { if (user.data) { // redirect if the user is already signed in redirect(); } - }, [user, router, redirect]); + }, [user, redirect]); const [login, loggingIn] = useAsync(async (values: LoginMutationVariables) => { try { + setLoginInfo(values); setInvalidOTP(false); await user.login(values); + console.log('ball'); + setError(null); redirect(); } catch (error: any) { + console.log(error); if (user.otpRequired && error.message.toLowerCase().includes('invalid otp')) { setInvalidOTP(true); return; + } else if (error.message.toLowerCase().includes('unauthorized')) { + setError('Invalid username or password'); + return; } throw error; @@ -59,7 +66,9 @@ export const LoginForm: FC = () => { login({ ...loginInfo, otp }); }} /> - + {invalidOTP ? 'Invalid OTP code' : 'Enter the OTP code from your authenticator app'} @@ -72,9 +81,7 @@ export const LoginForm: FC = () => { initialValues={{ username: '', password: '' }} validationSchema={schema} onSubmit={async (values) => { - setLoginInfo(values); - await user.login(values); - redirect(); + await login(values); }} >
@@ -86,9 +93,10 @@ export const LoginForm: FC = () => { autoComplete="current-password" className="mt-2" /> - + Sign In + {error && {error}} diff --git a/packages/web/src/containers/signup-form.tsx b/packages/web/src/containers/signup-form.tsx index da8d1d9..570a786 100644 --- a/packages/web/src/containers/signup-form.tsx +++ b/packages/web/src/containers/signup-form.tsx @@ -45,7 +45,7 @@ export const SignupForm: FC = ({ onSubmit }) => { {config.data?.requireEmails && } - + Sign Up diff --git a/packages/web/src/generated/graphql.tsx b/packages/web/src/generated/graphql.tsx deleted file mode 100644 index 8caf8d6..0000000 --- a/packages/web/src/generated/graphql.tsx +++ /dev/null @@ -1,1355 +0,0 @@ -import { gql } from '@apollo/client'; -import * as Apollo from '@apollo/client'; - -export type Maybe = T | null; -export type InputMaybe = Maybe; -export type Exact = { [K in keyof T]: T[K] }; -export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; -export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; -export type MakeEmpty = { [_ in K]?: never }; -export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; -const defaultOptions = {} as const; -/** All built-in and custom scalars, mapped to their actual values */ -export type Scalars = { - ID: { input: string; output: string }; - String: { input: string; output: string }; - Boolean: { input: boolean; output: boolean }; - Int: { input: number; output: number }; - Float: { input: number; output: number }; - /** A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format. */ - DateTime: { input: any; output: any }; -}; - -export type Config = { - __typename?: 'Config'; - allowTypes: Array; - /** The host the request is being made to. This host may not be in the hosts list if the user is not authorized to access it. */ - currentHost: ConfigHost; - /** A list of hosts the user can access. */ - hosts: Array; - inquiriesEmail: Scalars['String']['output']; - requireEmails: Scalars['Boolean']['output']; - rootHost: ConfigHost; - uploadLimit: Scalars['Float']['output']; -}; - -export type ConfigHost = { - __typename?: 'ConfigHost'; - normalised: Scalars['String']['output']; - redirect?: Maybe; - url: Scalars['String']['output']; -}; - -export type CreatePasteDto = { - burn: Scalars['Boolean']['input']; - content: Scalars['String']['input']; - encrypted: Scalars['Boolean']['input']; - expiresAt?: InputMaybe; - extension?: InputMaybe; - hostname?: InputMaybe; - paranoid: Scalars['Boolean']['input']; - title?: InputMaybe; -}; - -export type CreateUserDto = { - email?: InputMaybe; - invite: Scalars['String']['input']; - password: Scalars['String']['input']; - username: Scalars['String']['input']; -}; - -export type File = { - __typename?: 'File'; - createdAt: Scalars['DateTime']['output']; - displayName: Scalars['String']['output']; - hash: Scalars['String']['output']; - id: Scalars['ID']['output']; - isOwner: Scalars['Boolean']['output']; - metadata?: Maybe; - name?: Maybe; - paths: ResourceLocations; - size: Scalars['Float']['output']; - sizeFormatted: Scalars['String']['output']; - thumbnail?: Maybe; - type: Scalars['String']['output']; - urls: ResourceLocations; -}; - -export type FileMetadata = { - __typename?: 'FileMetadata'; - height?: Maybe; - width?: Maybe; -}; - -export type FilePage = { - __typename?: 'FilePage'; - edges: Array; - pageInfo: PageInfo; - totalCount: Scalars['Int']['output']; -}; - -export type FilePageEdge = { - __typename?: 'FilePageEdge'; - cursor: Scalars['String']['output']; - node: File; -}; - -export type Invite = { - __typename?: 'Invite'; - consumed: Scalars['Boolean']['output']; - createdAt: Scalars['DateTime']['output']; - expired: Scalars['Boolean']['output']; - expiresAt?: Maybe; - id: Scalars['ID']['output']; - path: Scalars['String']['output']; - permissions?: Maybe; - skipVerification: Scalars['Boolean']['output']; - url: Scalars['String']['output']; -}; - -export type Link = { - __typename?: 'Link'; - clicks: Scalars['Float']['output']; - createdAt: Scalars['DateTime']['output']; - destination: Scalars['String']['output']; - id: Scalars['ID']['output']; - paths: ResourceLocations; - urls: ResourceLocations; -}; - -export type Mutation = { - __typename?: 'Mutation'; - confirmOTP: Scalars['Boolean']['output']; - createInvite: Invite; - createLink: Link; - createPaste: Paste; - createUser: User; - deleteFile: Scalars['Boolean']['output']; - disableOTP: Scalars['Boolean']['output']; - generateOTP: OtpEnabledDto; - login: User; - logout: Scalars['Boolean']['output']; - refreshToken: User; - resendVerificationEmail: Scalars['Boolean']['output']; -}; - -export type MutationConfirmOtpArgs = { - otpCode: Scalars['String']['input']; -}; - -export type MutationCreateLinkArgs = { - destination: Scalars['String']['input']; - host?: InputMaybe; -}; - -export type MutationCreatePasteArgs = { - partial: CreatePasteDto; -}; - -export type MutationCreateUserArgs = { - data: CreateUserDto; -}; - -export type MutationDeleteFileArgs = { - fileId: Scalars['ID']['input']; - key?: InputMaybe; -}; - -export type MutationDisableOtpArgs = { - otpCode: Scalars['String']['input']; -}; - -export type MutationLoginArgs = { - otpCode?: InputMaybe; - password: Scalars['String']['input']; - username: Scalars['String']['input']; -}; - -export type MutationResendVerificationEmailArgs = { - data?: InputMaybe; -}; - -export type OtpEnabledDto = { - __typename?: 'OTPEnabledDto'; - qrauthUrl: Scalars['String']['output']; - recoveryCodes: Array; - secret: Scalars['String']['output']; -}; - -export type PageInfo = { - __typename?: 'PageInfo'; - endCursor?: Maybe; - hasNextPage: Scalars['Boolean']['output']; - hasPreviousPage: Scalars['Boolean']['output']; - startCursor?: Maybe; -}; - -export type Paste = { - __typename?: 'Paste'; - burn: Scalars['Boolean']['output']; - burnt?: Maybe; - content: Scalars['String']['output']; - createdAt: Scalars['DateTime']['output']; - encrypted: Scalars['Boolean']['output']; - expiresAt?: Maybe; - extension?: Maybe; - id: Scalars['ID']['output']; - paths: ResourceLocations; - title?: Maybe; - type: Scalars['String']['output']; - urls: ResourceLocations; -}; - -export type PastePage = { - __typename?: 'PastePage'; - edges: Array; - pageInfo: PageInfo; - totalCount: Scalars['Int']['output']; -}; - -export type PastePageEdge = { - __typename?: 'PastePageEdge'; - cursor: Scalars['String']['output']; - node: Paste; -}; - -export type Query = { - __typename?: 'Query'; - config: Config; - file: File; - invite: Invite; - link: Link; - paste: Paste; - user: User; -}; - -export type QueryFileArgs = { - fileId: Scalars['ID']['input']; -}; - -export type QueryInviteArgs = { - inviteId: Scalars['ID']['input']; -}; - -export type QueryLinkArgs = { - linkId: Scalars['ID']['input']; -}; - -export type QueryPasteArgs = { - pasteId: Scalars['ID']['input']; -}; - -export type ResendVerificationEmailDto = { - email: Scalars['String']['input']; -}; - -export type ResourceLocations = { - __typename?: 'ResourceLocations'; - delete?: Maybe; - direct: Scalars['String']['output']; - thumbnail?: Maybe; - view: Scalars['String']['output']; -}; - -export type Thumbnail = { - __typename?: 'Thumbnail'; - createdAt: Scalars['DateTime']['output']; - duration: Scalars['Float']['output']; - height: Scalars['Float']['output']; - size: Scalars['Float']['output']; - type: Scalars['String']['output']; - width: Scalars['Float']['output']; -}; - -export type User = { - __typename?: 'User'; - aggregateFileSize: Scalars['Float']['output']; - email?: Maybe; - files: FilePage; - id: Scalars['ID']['output']; - otpEnabled: Scalars['Boolean']['output']; - pastes: PastePage; - permissions: Scalars['Float']['output']; - tags: Array; - token: Scalars['String']['output']; - username: Scalars['String']['output']; - verifiedEmail: Scalars['Boolean']['output']; -}; - -export type UserFilesArgs = { - after?: InputMaybe; - first?: InputMaybe; -}; - -export type UserPastesArgs = { - after?: InputMaybe; - first?: InputMaybe; -}; - -export type ResendVerificationEmailMutationVariables = Exact<{ - data?: InputMaybe; -}>; - -export type ResendVerificationEmailMutation = { __typename?: 'Mutation'; resendVerificationEmail: boolean }; - -export type PasteCardFragment = { - __typename?: 'Paste'; - id: string; - title?: string | null; - encrypted: boolean; - burn: boolean; - type: string; - createdAt: any; - expiresAt?: any | null; - urls: { __typename?: 'ResourceLocations'; view: string }; -}; - -export type FileCardFragment = { - __typename?: 'File'; - id: string; - type: string; - displayName: string; - sizeFormatted: string; - thumbnail?: { __typename?: 'Thumbnail'; width: number; height: number } | null; - paths: { __typename?: 'ResourceLocations'; thumbnail?: string | null }; - urls: { __typename?: 'ResourceLocations'; view: string }; -}; - -export type GetFilesQueryVariables = Exact<{ - first?: InputMaybe; - after?: InputMaybe; -}>; - -export type GetFilesQuery = { - __typename?: 'Query'; - user: { - __typename?: 'User'; - files: { - __typename?: 'FilePage'; - pageInfo: { __typename?: 'PageInfo'; endCursor?: string | null; hasNextPage: boolean }; - edges: Array<{ - __typename?: 'FilePageEdge'; - node: { - __typename?: 'File'; - id: string; - type: string; - displayName: string; - sizeFormatted: string; - thumbnail?: { __typename?: 'Thumbnail'; width: number; height: number } | null; - paths: { __typename?: 'ResourceLocations'; thumbnail?: string | null }; - urls: { __typename?: 'ResourceLocations'; view: string }; - }; - }>; - }; - }; -}; - -export type GetPastesQueryVariables = Exact<{ - first?: InputMaybe; - after?: InputMaybe; -}>; - -export type GetPastesQuery = { - __typename?: 'Query'; - user: { - __typename?: 'User'; - pastes: { - __typename?: 'PastePage'; - pageInfo: { __typename?: 'PageInfo'; endCursor?: string | null; hasNextPage: boolean }; - edges: Array<{ - __typename?: 'PastePageEdge'; - node: { - __typename?: 'Paste'; - id: string; - title?: string | null; - encrypted: boolean; - burn: boolean; - type: string; - createdAt: any; - expiresAt?: any | null; - urls: { __typename?: 'ResourceLocations'; view: string }; - }; - }>; - }; - }; -}; - -export type ConfigQueryVariables = Exact<{ [key: string]: never }>; - -export type ConfigQuery = { - __typename?: 'Query'; - config: { - __typename?: 'Config'; - allowTypes: Array; - inquiriesEmail: string; - requireEmails: boolean; - uploadLimit: number; - currentHost: { __typename?: 'ConfigHost'; normalised: string; redirect?: string | null }; - rootHost: { __typename?: 'ConfigHost'; normalised: string; url: string }; - hosts: Array<{ __typename?: 'ConfigHost'; normalised: string }>; - }; -}; - -export type GetUserQueryVariables = Exact<{ [key: string]: never }>; - -export type GetUserQuery = { - __typename?: 'Query'; - user: { - __typename?: 'User'; - otpEnabled: boolean; - id: string; - username: string; - email?: string | null; - verifiedEmail: boolean; - token: string; - }; -}; - -export type RegularUserFragment = { - __typename?: 'User'; - id: string; - username: string; - email?: string | null; - verifiedEmail: boolean; - token: string; -}; - -export type LoginMutationVariables = Exact<{ - username: Scalars['String']['input']; - password: Scalars['String']['input']; - otp?: InputMaybe; -}>; - -export type LoginMutation = { - __typename?: 'Mutation'; - login: { - __typename?: 'User'; - id: string; - username: string; - email?: string | null; - verifiedEmail: boolean; - token: string; - }; -}; - -export type LogoutMutationVariables = Exact<{ [key: string]: never }>; - -export type LogoutMutation = { __typename?: 'Mutation'; logout: boolean }; - -export type GenerateOtpMutationVariables = Exact<{ [key: string]: never }>; - -export type GenerateOtpMutation = { - __typename?: 'Mutation'; - generateOTP: { __typename?: 'OTPEnabledDto'; recoveryCodes: Array; qrauthUrl: string; secret: string }; -}; - -export type ConfirmOtpMutationVariables = Exact<{ - otpCode: Scalars['String']['input']; -}>; - -export type ConfirmOtpMutation = { __typename?: 'Mutation'; confirmOTP: boolean }; - -export type DisableOtpMutationVariables = Exact<{ - otpCode: Scalars['String']['input']; -}>; - -export type DisableOtpMutation = { __typename?: 'Mutation'; disableOTP: boolean }; - -export type RefreshTokenMutationVariables = Exact<{ [key: string]: never }>; - -export type RefreshTokenMutation = { - __typename?: 'Mutation'; - refreshToken: { - __typename?: 'User'; - id: string; - username: string; - email?: string | null; - verifiedEmail: boolean; - token: string; - }; -}; - -export type GetFileQueryVariables = Exact<{ - fileId: Scalars['ID']['input']; -}>; - -export type GetFileQuery = { - __typename?: 'Query'; - file: { - __typename?: 'File'; - id: string; - type: string; - displayName: string; - size: number; - sizeFormatted: string; - isOwner: boolean; - metadata?: { __typename?: 'FileMetadata'; height?: number | null; width?: number | null } | null; - paths: { __typename?: 'ResourceLocations'; view: string; thumbnail?: string | null; direct: string }; - urls: { __typename?: 'ResourceLocations'; view: string }; - }; -}; - -export type DeleteFileMutationVariables = Exact<{ - fileId: Scalars['ID']['input']; - deleteKey?: InputMaybe; -}>; - -export type DeleteFileMutation = { __typename?: 'Mutation'; deleteFile: boolean }; - -export type GetInviteQueryVariables = Exact<{ - inviteId: Scalars['ID']['input']; -}>; - -export type GetInviteQuery = { - __typename?: 'Query'; - invite: { __typename?: 'Invite'; id: string; expiresAt?: any | null }; -}; - -export type CreateUserMutationVariables = Exact<{ - user: CreateUserDto; -}>; - -export type CreateUserMutation = { __typename?: 'Mutation'; createUser: { __typename?: 'User'; id: string } }; - -export type CreatePasteMutationVariables = Exact<{ - input: CreatePasteDto; -}>; - -export type CreatePasteMutation = { - __typename?: 'Mutation'; - createPaste: { __typename?: 'Paste'; id: string; urls: { __typename?: 'ResourceLocations'; view: string } }; -}; - -export type GetPasteQueryVariables = Exact<{ - pasteId: Scalars['ID']['input']; -}>; - -export type GetPasteQuery = { - __typename?: 'Query'; - paste: { - __typename?: 'Paste'; - id: string; - title?: string | null; - type: string; - extension?: string | null; - content: string; - encrypted: boolean; - createdAt: any; - expiresAt?: any | null; - burnt?: boolean | null; - burn: boolean; - urls: { __typename?: 'ResourceLocations'; view: string }; - }; -}; - -export type ShortenMutationVariables = Exact<{ - link: Scalars['String']['input']; - host?: InputMaybe; -}>; - -export type ShortenMutation = { - __typename?: 'Mutation'; - createLink: { __typename?: 'Link'; id: string; urls: { __typename?: 'ResourceLocations'; view: string } }; -}; - -export const PasteCardFragmentDoc = gql` - fragment PasteCard on Paste { - id - title - encrypted - burn - type - createdAt - expiresAt - urls { - view - } - } -`; -export const FileCardFragmentDoc = gql` - fragment FileCard on File { - id - type - displayName - sizeFormatted - thumbnail { - width - height - } - paths { - thumbnail - } - urls { - view - } - } -`; -export const RegularUserFragmentDoc = gql` - fragment RegularUser on User { - id - username - email - verifiedEmail - token - } -`; -export const ResendVerificationEmailDocument = gql` - mutation ResendVerificationEmail($data: ResendVerificationEmailDto) { - resendVerificationEmail(data: $data) - } -`; -export type ResendVerificationEmailMutationFn = Apollo.MutationFunction< - ResendVerificationEmailMutation, - ResendVerificationEmailMutationVariables ->; - -/** - * __useResendVerificationEmailMutation__ - * - * To run a mutation, you first call `useResendVerificationEmailMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useResendVerificationEmailMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [resendVerificationEmailMutation, { data, loading, error }] = useResendVerificationEmailMutation({ - * variables: { - * data: // value for 'data' - * }, - * }); - */ -export function useResendVerificationEmailMutation( - baseOptions?: Apollo.MutationHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation( - ResendVerificationEmailDocument, - options, - ); -} -export type ResendVerificationEmailMutationHookResult = ReturnType; -export type ResendVerificationEmailMutationResult = Apollo.MutationResult; -export type ResendVerificationEmailMutationOptions = Apollo.BaseMutationOptions< - ResendVerificationEmailMutation, - ResendVerificationEmailMutationVariables ->; -export const GetFilesDocument = gql` - query GetFiles($first: Float, $after: String) { - user { - files(first: $first, after: $after) { - pageInfo { - endCursor - hasNextPage - } - edges { - node { - ...FileCard - } - } - } - } - } - ${FileCardFragmentDoc} -`; - -/** - * __useGetFilesQuery__ - * - * To run a query within a React component, call `useGetFilesQuery` and pass it any options that fit your needs. - * When your component renders, `useGetFilesQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetFilesQuery({ - * variables: { - * first: // value for 'first' - * after: // value for 'after' - * }, - * }); - */ -export function useGetFilesQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery(GetFilesDocument, options); -} -export function useGetFilesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery(GetFilesDocument, options); -} -export function useGetFilesSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery(GetFilesDocument, options); -} -export type GetFilesQueryHookResult = ReturnType; -export type GetFilesLazyQueryHookResult = ReturnType; -export type GetFilesSuspenseQueryHookResult = ReturnType; -export type GetFilesQueryResult = Apollo.QueryResult; -export const GetPastesDocument = gql` - query GetPastes($first: Float, $after: String) { - user { - pastes(first: $first, after: $after) { - pageInfo { - endCursor - hasNextPage - } - edges { - node { - ...PasteCard - } - } - } - } - } - ${PasteCardFragmentDoc} -`; - -/** - * __useGetPastesQuery__ - * - * To run a query within a React component, call `useGetPastesQuery` and pass it any options that fit your needs. - * When your component renders, `useGetPastesQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetPastesQuery({ - * variables: { - * first: // value for 'first' - * after: // value for 'after' - * }, - * }); - */ -export function useGetPastesQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery(GetPastesDocument, options); -} -export function useGetPastesLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery(GetPastesDocument, options); -} -export function useGetPastesSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery(GetPastesDocument, options); -} -export type GetPastesQueryHookResult = ReturnType; -export type GetPastesLazyQueryHookResult = ReturnType; -export type GetPastesSuspenseQueryHookResult = ReturnType; -export type GetPastesQueryResult = Apollo.QueryResult; -export const ConfigDocument = gql` - query Config { - config { - allowTypes - inquiriesEmail - requireEmails - uploadLimit - currentHost { - normalised - redirect - } - rootHost { - normalised - url - } - hosts { - normalised - } - } - } -`; - -/** - * __useConfigQuery__ - * - * To run a query within a React component, call `useConfigQuery` and pass it any options that fit your needs. - * When your component renders, `useConfigQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useConfigQuery({ - * variables: { - * }, - * }); - */ -export function useConfigQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery(ConfigDocument, options); -} -export function useConfigLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery(ConfigDocument, options); -} -export function useConfigSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery(ConfigDocument, options); -} -export type ConfigQueryHookResult = ReturnType; -export type ConfigLazyQueryHookResult = ReturnType; -export type ConfigSuspenseQueryHookResult = ReturnType; -export type ConfigQueryResult = Apollo.QueryResult; -export const GetUserDocument = gql` - query GetUser { - user { - ...RegularUser - otpEnabled - } - } - ${RegularUserFragmentDoc} -`; - -/** - * __useGetUserQuery__ - * - * To run a query within a React component, call `useGetUserQuery` and pass it any options that fit your needs. - * When your component renders, `useGetUserQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetUserQuery({ - * variables: { - * }, - * }); - */ -export function useGetUserQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery(GetUserDocument, options); -} -export function useGetUserLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery(GetUserDocument, options); -} -export function useGetUserSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery(GetUserDocument, options); -} -export type GetUserQueryHookResult = ReturnType; -export type GetUserLazyQueryHookResult = ReturnType; -export type GetUserSuspenseQueryHookResult = ReturnType; -export type GetUserQueryResult = Apollo.QueryResult; -export const LoginDocument = gql` - mutation Login($username: String!, $password: String!, $otp: String) { - login(username: $username, password: $password, otpCode: $otp) { - ...RegularUser - } - } - ${RegularUserFragmentDoc} -`; -export type LoginMutationFn = Apollo.MutationFunction; - -/** - * __useLoginMutation__ - * - * To run a mutation, you first call `useLoginMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useLoginMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [loginMutation, { data, loading, error }] = useLoginMutation({ - * variables: { - * username: // value for 'username' - * password: // value for 'password' - * otp: // value for 'otp' - * }, - * }); - */ -export function useLoginMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(LoginDocument, options); -} -export type LoginMutationHookResult = ReturnType; -export type LoginMutationResult = Apollo.MutationResult; -export type LoginMutationOptions = Apollo.BaseMutationOptions; -export const LogoutDocument = gql` - mutation Logout { - logout - } -`; -export type LogoutMutationFn = Apollo.MutationFunction; - -/** - * __useLogoutMutation__ - * - * To run a mutation, you first call `useLogoutMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useLogoutMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [logoutMutation, { data, loading, error }] = useLogoutMutation({ - * variables: { - * }, - * }); - */ -export function useLogoutMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(LogoutDocument, options); -} -export type LogoutMutationHookResult = ReturnType; -export type LogoutMutationResult = Apollo.MutationResult; -export type LogoutMutationOptions = Apollo.BaseMutationOptions; -export const GenerateOtpDocument = gql` - mutation GenerateOTP { - generateOTP { - recoveryCodes - qrauthUrl - secret - } - } -`; -export type GenerateOtpMutationFn = Apollo.MutationFunction; - -/** - * __useGenerateOtpMutation__ - * - * To run a mutation, you first call `useGenerateOtpMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useGenerateOtpMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [generateOtpMutation, { data, loading, error }] = useGenerateOtpMutation({ - * variables: { - * }, - * }); - */ -export function useGenerateOtpMutation( - baseOptions?: Apollo.MutationHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(GenerateOtpDocument, options); -} -export type GenerateOtpMutationHookResult = ReturnType; -export type GenerateOtpMutationResult = Apollo.MutationResult; -export type GenerateOtpMutationOptions = Apollo.BaseMutationOptions; -export const ConfirmOtpDocument = gql` - mutation ConfirmOTP($otpCode: String!) { - confirmOTP(otpCode: $otpCode) - } -`; -export type ConfirmOtpMutationFn = Apollo.MutationFunction; - -/** - * __useConfirmOtpMutation__ - * - * To run a mutation, you first call `useConfirmOtpMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useConfirmOtpMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [confirmOtpMutation, { data, loading, error }] = useConfirmOtpMutation({ - * variables: { - * otpCode: // value for 'otpCode' - * }, - * }); - */ -export function useConfirmOtpMutation( - baseOptions?: Apollo.MutationHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(ConfirmOtpDocument, options); -} -export type ConfirmOtpMutationHookResult = ReturnType; -export type ConfirmOtpMutationResult = Apollo.MutationResult; -export type ConfirmOtpMutationOptions = Apollo.BaseMutationOptions; -export const DisableOtpDocument = gql` - mutation DisableOTP($otpCode: String!) { - disableOTP(otpCode: $otpCode) - } -`; -export type DisableOtpMutationFn = Apollo.MutationFunction; - -/** - * __useDisableOtpMutation__ - * - * To run a mutation, you first call `useDisableOtpMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDisableOtpMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [disableOtpMutation, { data, loading, error }] = useDisableOtpMutation({ - * variables: { - * otpCode: // value for 'otpCode' - * }, - * }); - */ -export function useDisableOtpMutation( - baseOptions?: Apollo.MutationHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(DisableOtpDocument, options); -} -export type DisableOtpMutationHookResult = ReturnType; -export type DisableOtpMutationResult = Apollo.MutationResult; -export type DisableOtpMutationOptions = Apollo.BaseMutationOptions; -export const RefreshTokenDocument = gql` - mutation RefreshToken { - refreshToken { - ...RegularUser - } - } - ${RegularUserFragmentDoc} -`; -export type RefreshTokenMutationFn = Apollo.MutationFunction; - -/** - * __useRefreshTokenMutation__ - * - * To run a mutation, you first call `useRefreshTokenMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useRefreshTokenMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [refreshTokenMutation, { data, loading, error }] = useRefreshTokenMutation({ - * variables: { - * }, - * }); - */ -export function useRefreshTokenMutation( - baseOptions?: Apollo.MutationHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(RefreshTokenDocument, options); -} -export type RefreshTokenMutationHookResult = ReturnType; -export type RefreshTokenMutationResult = Apollo.MutationResult; -export type RefreshTokenMutationOptions = Apollo.BaseMutationOptions< - RefreshTokenMutation, - RefreshTokenMutationVariables ->; -export const GetFileDocument = gql` - query GetFile($fileId: ID!) { - file(fileId: $fileId) { - id - type - displayName - size - sizeFormatted - isOwner - metadata { - height - width - } - paths { - view - thumbnail - direct - } - urls { - view - } - } - } -`; - -/** - * __useGetFileQuery__ - * - * To run a query within a React component, call `useGetFileQuery` and pass it any options that fit your needs. - * When your component renders, `useGetFileQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetFileQuery({ - * variables: { - * fileId: // value for 'fileId' - * }, - * }); - */ -export function useGetFileQuery(baseOptions: Apollo.QueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery(GetFileDocument, options); -} -export function useGetFileLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery(GetFileDocument, options); -} -export function useGetFileSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery(GetFileDocument, options); -} -export type GetFileQueryHookResult = ReturnType; -export type GetFileLazyQueryHookResult = ReturnType; -export type GetFileSuspenseQueryHookResult = ReturnType; -export type GetFileQueryResult = Apollo.QueryResult; -export const DeleteFileDocument = gql` - mutation DeleteFile($fileId: ID!, $deleteKey: String) { - deleteFile(fileId: $fileId, key: $deleteKey) - } -`; -export type DeleteFileMutationFn = Apollo.MutationFunction; - -/** - * __useDeleteFileMutation__ - * - * To run a mutation, you first call `useDeleteFileMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDeleteFileMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [deleteFileMutation, { data, loading, error }] = useDeleteFileMutation({ - * variables: { - * fileId: // value for 'fileId' - * deleteKey: // value for 'deleteKey' - * }, - * }); - */ -export function useDeleteFileMutation( - baseOptions?: Apollo.MutationHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(DeleteFileDocument, options); -} -export type DeleteFileMutationHookResult = ReturnType; -export type DeleteFileMutationResult = Apollo.MutationResult; -export type DeleteFileMutationOptions = Apollo.BaseMutationOptions; -export const GetInviteDocument = gql` - query GetInvite($inviteId: ID!) { - invite(inviteId: $inviteId) { - id - expiresAt - } - } -`; - -/** - * __useGetInviteQuery__ - * - * To run a query within a React component, call `useGetInviteQuery` and pass it any options that fit your needs. - * When your component renders, `useGetInviteQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetInviteQuery({ - * variables: { - * inviteId: // value for 'inviteId' - * }, - * }); - */ -export function useGetInviteQuery(baseOptions: Apollo.QueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery(GetInviteDocument, options); -} -export function useGetInviteLazyQuery( - baseOptions?: Apollo.LazyQueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery(GetInviteDocument, options); -} -export function useGetInviteSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery(GetInviteDocument, options); -} -export type GetInviteQueryHookResult = ReturnType; -export type GetInviteLazyQueryHookResult = ReturnType; -export type GetInviteSuspenseQueryHookResult = ReturnType; -export type GetInviteQueryResult = Apollo.QueryResult; -export const CreateUserDocument = gql` - mutation CreateUser($user: CreateUserDto!) { - createUser(data: $user) { - id - } - } -`; -export type CreateUserMutationFn = Apollo.MutationFunction; - -/** - * __useCreateUserMutation__ - * - * To run a mutation, you first call `useCreateUserMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateUserMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createUserMutation, { data, loading, error }] = useCreateUserMutation({ - * variables: { - * user: // value for 'user' - * }, - * }); - */ -export function useCreateUserMutation( - baseOptions?: Apollo.MutationHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(CreateUserDocument, options); -} -export type CreateUserMutationHookResult = ReturnType; -export type CreateUserMutationResult = Apollo.MutationResult; -export type CreateUserMutationOptions = Apollo.BaseMutationOptions; -export const CreatePasteDocument = gql` - mutation CreatePaste($input: CreatePasteDto!) { - createPaste(partial: $input) { - id - urls { - view - } - } - } -`; -export type CreatePasteMutationFn = Apollo.MutationFunction; - -/** - * __useCreatePasteMutation__ - * - * To run a mutation, you first call `useCreatePasteMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreatePasteMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createPasteMutation, { data, loading, error }] = useCreatePasteMutation({ - * variables: { - * input: // value for 'input' - * }, - * }); - */ -export function useCreatePasteMutation( - baseOptions?: Apollo.MutationHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(CreatePasteDocument, options); -} -export type CreatePasteMutationHookResult = ReturnType; -export type CreatePasteMutationResult = Apollo.MutationResult; -export type CreatePasteMutationOptions = Apollo.BaseMutationOptions; -export const GetPasteDocument = gql` - query GetPaste($pasteId: ID!) { - paste(pasteId: $pasteId) { - id - title - type - extension - content - encrypted - createdAt - expiresAt - burnt - burn - urls { - view - } - } - } -`; - -/** - * __useGetPasteQuery__ - * - * To run a query within a React component, call `useGetPasteQuery` and pass it any options that fit your needs. - * When your component renders, `useGetPasteQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetPasteQuery({ - * variables: { - * pasteId: // value for 'pasteId' - * }, - * }); - */ -export function useGetPasteQuery(baseOptions: Apollo.QueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useQuery(GetPasteDocument, options); -} -export function useGetPasteLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useLazyQuery(GetPasteDocument, options); -} -export function useGetPasteSuspenseQuery( - baseOptions?: Apollo.SuspenseQueryHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useSuspenseQuery(GetPasteDocument, options); -} -export type GetPasteQueryHookResult = ReturnType; -export type GetPasteLazyQueryHookResult = ReturnType; -export type GetPasteSuspenseQueryHookResult = ReturnType; -export type GetPasteQueryResult = Apollo.QueryResult; -export const ShortenDocument = gql` - mutation Shorten($link: String!, $host: String) { - createLink(destination: $link, host: $host) { - id - urls { - view - } - } - } -`; -export type ShortenMutationFn = Apollo.MutationFunction; - -/** - * __useShortenMutation__ - * - * To run a mutation, you first call `useShortenMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useShortenMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [shortenMutation, { data, loading, error }] = useShortenMutation({ - * variables: { - * link: // value for 'link' - * host: // value for 'host' - * }, - * }); - */ -export function useShortenMutation( - baseOptions?: Apollo.MutationHookOptions, -) { - const options = { ...defaultOptions, ...baseOptions }; - return Apollo.useMutation(ShortenDocument, options); -} -export type ShortenMutationHookResult = ReturnType; -export type ShortenMutationResult = Apollo.MutationResult; -export type ShortenMutationOptions = Apollo.BaseMutationOptions; diff --git a/packages/web/src/helpers/get-error-message.helper.ts b/packages/web/src/helpers/get-error-message.helper.ts index e6eaad3..2ecd8aa 100644 --- a/packages/web/src/helpers/get-error-message.helper.ts +++ b/packages/web/src/helpers/get-error-message.helper.ts @@ -1,10 +1,10 @@ -import { ApolloError } from '@apollo/client'; +import { GraphQLError } from 'graphql'; import { HTTPError } from './http.helper'; import { isObject } from './is-object.helper'; export function getErrorMessage(error: unknown): string | undefined { if (typeof error === 'string') return error; - if (error instanceof ApolloError) { + if (error instanceof GraphQLError) { return error.message; } diff --git a/packages/web/src/helpers/http.helper.ts b/packages/web/src/helpers/http.helper.ts index 4b57970..bde2c8a 100644 --- a/packages/web/src/helpers/http.helper.ts +++ b/packages/web/src/helpers/http.helper.ts @@ -3,7 +3,10 @@ import { getReasonPhrase } from 'http-status-codes'; export class HTTPError extends Error { readonly status: number; readonly text: string; - constructor(readonly response: Response, readonly body: any) { + constructor( + readonly response: Response, + readonly body: any, + ) { const message = body?.message ?? response.statusText; const messageText = Array.isArray(message) ? message.join(', ') : message; const responseText = getReasonPhrase(response.status); @@ -15,7 +18,7 @@ export class HTTPError extends Error { } export const isServer = typeof window === 'undefined'; -export const apiUri = isServer ? process.env.API_URL : `/api`; +export const apiUri = isServer ? process.env.FRONTEND_API_URL : `/api`; export async function http(pathOrUrl: string, options?: RequestInit): Promise { const hasProtocol = pathOrUrl.startsWith('http'); diff --git a/packages/web/src/helpers/routing.ts b/packages/web/src/helpers/routing.ts new file mode 100644 index 0000000..188f74e --- /dev/null +++ b/packages/web/src/helpers/routing.ts @@ -0,0 +1,12 @@ +export const navigate = (url: string, options?: { overwriteLastHistoryEntry: boolean }) => { + window.location.href = url; +}; + +export const reload = () => { + window.location.reload(); +}; + +export const prefetch = (url: string) => { + // todo: no-op from client routing days, + // left because it might be useful in the future. +}; diff --git a/packages/web/src/hooks/useAsync.ts b/packages/web/src/hooks/useAsync.ts new file mode 100644 index 0000000..b178461 --- /dev/null +++ b/packages/web/src/hooks/useAsync.ts @@ -0,0 +1,28 @@ +import { useState } from "react"; + +export function useAsync(handler: (...params: X) => Promise) { + const [promise, setPromise] = useState | null>(null); + const [error, setError] = useState(null); + const [result, setResult] = useState(null); + const running = !!promise; + const run = async (...params: X) => { + if (promise) { + return promise; + } + + try { + const promise = handler(...params); + setPromise(promise); + setError(null); + const result = await promise; + setResult(result); + } catch (error: any) { + setError(error); + throw error; + } finally { + setPromise(null); + } + }; + + return [run, running, error, result] as const; +} diff --git a/packages/web/src/hooks/useConfig.graphql b/packages/web/src/hooks/useConfig.graphql deleted file mode 100644 index 4cceed0..0000000 --- a/packages/web/src/hooks/useConfig.graphql +++ /dev/null @@ -1,19 +0,0 @@ -query Config { - config { - allowTypes - inquiriesEmail - requireEmails - uploadLimit - currentHost { - normalised - redirect - } - rootHost { - normalised - url - } - hosts { - normalised - } - } -} diff --git a/packages/web/src/hooks/useConfig.tsx b/packages/web/src/hooks/useConfig.tsx index 4fdf3ce..0925718 100644 --- a/packages/web/src/hooks/useConfig.tsx +++ b/packages/web/src/hooks/useConfig.tsx @@ -1,7 +1,30 @@ -import { useConfigQuery } from '../generated/graphql'; +import { useQuery } from '@apollo/client'; +import { graphql } from '../@generated'; + +const ConfigQuery = graphql(` + query Config { + config { + allowTypes + inquiriesEmail + requireEmails + uploadLimit + currentHost { + normalised + redirect + } + rootHost { + normalised + url + } + hosts { + normalised + } + } + } +`); export const useConfig = () => { - const config = useConfigQuery(); + const config = useQuery(ConfigQuery); return { ...config, data: config.data?.config, diff --git a/packages/web/src/hooks/useOnClickOutside.tsx b/packages/web/src/hooks/useOnClickOutside.tsx new file mode 100644 index 0000000..ef0756e --- /dev/null +++ b/packages/web/src/hooks/useOnClickOutside.tsx @@ -0,0 +1,24 @@ +import { useEffect } from "react"; + +export function useOnClickOutside(ref: React.MutableRefObject, handler: () => void) { + useEffect(() => { + const onClick = (event: Event) => { + if (!ref.current || ref.current.contains(event.target)) return; + handler(); + }; + + const onKeyPress = (event: KeyboardEvent) => { + if (event.key !== "Escape") return; + handler(); + }; + + document.addEventListener("mousedown", onClick); + document.addEventListener("touchstart", onClick); + document.addEventListener("keydown", onKeyPress); + return () => { + document.removeEventListener("mousedown", onClick); + document.removeEventListener("touchstart", onClick); + document.removeEventListener("keydown", onKeyPress); + }; + }, [ref, handler]); +} diff --git a/packages/web/src/hooks/useQueryState.ts b/packages/web/src/hooks/useQueryState.ts index fe4e395..6c01afa 100644 --- a/packages/web/src/hooks/useQueryState.ts +++ b/packages/web/src/hooks/useQueryState.ts @@ -1,16 +1,30 @@ import { useEffect, useState } from 'react'; +import { usePageContext } from '../renderer/usePageContext'; export const useQueryState = (key: string, initialState?: S, parser?: (input: string) => S) => { - const [value, setValue] = useState(initialState as any); - - useEffect(() => { - const search = new URLSearchParams(window.location.search); - const value = search.get(key); - if (value) { - const result = parser ? parser(value) : (value as any); - setValue(result); + const pageContext = usePageContext(); + const [value, setValue] = useState(() => { + if (typeof window === 'undefined') { + // during SSR, we can grab query params from the page context + const value = pageContext.urlParsed.search[key]; + if (value) { + const result = parser ? parser(value) : (value as any); + return result; + } } - }, []); + + if (typeof window !== 'undefined' && window.location.search) { + // during + const search = new URLSearchParams(window.location.search); + const value = search.get(key); + if (value) { + const result = parser ? parser(value) : (value as any); + return result; + } + } + + return initialState; + }); useEffect(() => { const route = new URL(window.location.href); diff --git a/packages/web/src/hooks/useUser.graphql b/packages/web/src/hooks/useUser.graphql deleted file mode 100644 index 2f396f6..0000000 --- a/packages/web/src/hooks/useUser.graphql +++ /dev/null @@ -1,40 +0,0 @@ -query GetUser { - user { - ...RegularUser - otpEnabled - } -} - -fragment RegularUser on User { - id - username - email - verifiedEmail - token -} - -mutation Login($username: String!, $password: String!, $otp: String) { - login(username: $username, password: $password, otpCode: $otp) { - ...RegularUser - } -} - -mutation Logout { - logout -} - -mutation GenerateOTP { - generateOTP { - recoveryCodes - qrauthUrl - secret - } -} - -mutation ConfirmOTP($otpCode: String!) { - confirmOTP(otpCode: $otpCode) -} - -mutation DisableOTP($otpCode: String!) { - disableOTP(otpCode: $otpCode) -} diff --git a/packages/web/src/hooks/useUser.tsx b/packages/web/src/hooks/useUser.tsx index c047ac4..4953d22 100644 --- a/packages/web/src/hooks/useUser.tsx +++ b/packages/web/src/hooks/useUser.tsx @@ -1,27 +1,49 @@ -import { useAsync } from '@ryanke/pandora'; -import Router, { useRouter } from 'next/router'; +import { TypedDocumentNode, useMutation, useQuery } from '@apollo/client'; import { useEffect, useState } from 'react'; -import { resetClient } from '../apollo'; -import type { LoginMutationVariables } from '../generated/graphql'; -import { useGetUserQuery, useLoginMutation, useLogoutMutation } from '../generated/graphql'; +import { graphql } from '../@generated'; +import type { GetUserQuery, LoginMutationVariables, RegularUserFragment } from '../@generated/graphql'; +import { navigate, reload } from '../helpers/routing'; +import { useAsync } from './useAsync'; -export const useUser = (redirect = false) => { - const user = useGetUserQuery(); - const router = useRouter(); - const [loginMutation] = useLoginMutation(); - const [logoutMutation] = useLogoutMutation(); +const RegularUserFragment = graphql(` + fragment RegularUser on User { + id + username + email + verifiedEmail + } +`); + +const UserQuery = graphql(` + query GetUser { + user { + ...RegularUser + } + } +`); + +const LoginMutation = graphql(` + mutation Login($username: String!, $password: String!, $otp: String) { + login(username: $username, password: $password, otpCode: $otp) { + ...RegularUser + } + } +`); + +const LogoutMutation = graphql(` + mutation Logout { + logout + } +`); + +export const useLoginUser = () => { const [otp, setOtp] = useState(false); - + const [loginMutation] = useMutation(LoginMutation); const [login] = useAsync(async (variables: LoginMutationVariables) => { try { - await loginMutation({ - variables: variables, - }); - - await user.refetch(); - Router.push('/dashboard'); + await loginMutation({ variables }); + navigate('/dashboard'); } catch (error: any) { - console.log({ error }); if (error.message.toLowerCase().includes('otp')) { setOtp(true); } @@ -30,22 +52,46 @@ export const useUser = (redirect = false) => { } }); + return { + login, + otpRequired: otp, + }; +}; + +export const useLogoutUser = () => { + const [logoutMutation] = useMutation(LogoutMutation); const [logout] = useAsync(async () => { - await logoutMutation(); - resetClient(); + await logoutMutation({}); + reload(); }); + return { logout }; +}; + +export const useUserRedirect = ( + data: RegularUserFragment | null | undefined, + loading: boolean, + redirect: boolean | undefined, +) => { useEffect(() => { - if (!user.data && !user.loading && redirect) { - router.push(`/login?to=${router.asPath}`); + if (!data && !loading && redirect) { + navigate(`/login?to=${window.location.href}`); } - }, [router, redirect, user.data, user.loading]); + }, [redirect, data, loading]); +}; + +export const useUser = >(redirect?: boolean, query?: T) => { + const { login, otpRequired } = useLoginUser(); + const { logout } = useLogoutUser(); + const { data, loading, error } = useQuery((query || UserQuery) as T); + + useUserRedirect(data?.user, loading, redirect); return { - data: user.data?.user, - error: user.error, - loading: user.loading, - otpRequired: otp, + data: data?.user as RegularUserFragment | null | undefined, + loading: loading, + error: error, + otpRequired: otpRequired, login: login, logout: logout, } as const; diff --git a/packages/web/src/middleware.ts b/packages/web/src/middleware.ts deleted file mode 100644 index 76f251d..0000000 --- a/packages/web/src/middleware.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { NextRequest } from 'next/server'; -import { NextResponse } from 'next/server'; - -// /i = image -// /v = video -const REDIRECT_URL_REGEX = /\/(i|v)\/(?[\dA-z]+)($|\?|#)/iu; -const REDIRECT_CONTENT_UAS = [ - 'Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)', // Discord - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11.6; rv:92.0) Gecko/20100101 Firefox/92.0', // Discord - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Firefox/38.0', // Discord - 'wget/', - 'curl/', -]; - -export function redirectAcceptHeader(acceptHeader: string | null) { - if (!acceptHeader) return false; - if (acceptHeader.includes('image/*')) return true; - if (acceptHeader.includes('video/*')) return true; - return false; -} - -export async function middleware(request: NextRequest) { - // match /i and /v urls and redirect them to the content url - // this is how pasting an embedded image link in discord still embeds the image - // /i and /v routes are necessary so we dont have to lookup the type of the file, because we still - // want to return html for other files so we can give opengraph tags about the files that discord wont embed directly. - const redirectUrlMatch = REDIRECT_URL_REGEX.exec(request.url); - if (redirectUrlMatch) { - const fileId = redirectUrlMatch.groups!.id; - const accept = request.headers.get('accept'); - const userAgent = request.headers.get('user-agent'); - const isScrapingUA = userAgent && REDIRECT_CONTENT_UAS.some((ua) => userAgent.startsWith(ua)); - if (redirectAcceptHeader(accept) || isScrapingUA) { - return NextResponse.redirect(new URL(`/api/file/${fileId}`, request.url)); - } - } -} diff --git a/packages/web/src/pages/index.tsx b/packages/web/src/pages/+Page.tsx similarity index 89% rename from packages/web/src/pages/index.tsx rename to packages/web/src/pages/+Page.tsx index 7095fd6..88e92d0 100644 --- a/packages/web/src/pages/index.tsx +++ b/packages/web/src/pages/+Page.tsx @@ -1,7 +1,9 @@ -import { Spinner, Container } from '@ryanke/pandora'; +import { FC } from 'react'; +import { Container } from '../components/container'; import { useConfig } from '../hooks/useConfig'; +import { Spinner } from '../components/spinner'; -export default function Home() { +export const Page: FC = () => { const config = useConfig(); const hosts = config.data?.hosts ?? []; const loading = !config.data && !config.error; @@ -35,4 +37,4 @@ export default function Home() { ); -} +}; diff --git a/packages/web/src/pages/404.tsx b/packages/web/src/pages/404.tsx deleted file mode 100644 index 19018fe..0000000 --- a/packages/web/src/pages/404.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import ErrorPage, { Lenny } from './_error'; - -export default function NotFound() { - return ; -} diff --git a/packages/web/src/pages/500.tsx b/packages/web/src/pages/500.tsx deleted file mode 100644 index 3d977e3..0000000 --- a/packages/web/src/pages/500.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import ErrorPage, { Lenny } from './_error'; - -export default function InternalServerError() { - return ; -} diff --git a/packages/web/src/pages/_app.tsx b/packages/web/src/pages/_app.tsx deleted file mode 100644 index 869891d..0000000 --- a/packages/web/src/pages/_app.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { ApolloProvider } from '@apollo/client'; -import type { AppProps } from 'next/app'; -import Head from 'next/head'; -import { useApollo } from '../apollo'; -import { Header } from '../components/header/header'; -import { Title } from '../components/title'; -import { ToastProvider } from '@ryanke/pandora'; -import '../styles/globals.css'; - -export default function App({ Component, pageProps }: AppProps) { - const client = useApollo(pageProps); - - return ( - - Home - - - - - -
-
- -
- - - ); -} diff --git a/packages/web/src/pages/_error/+Page.tsx b/packages/web/src/pages/_error/+Page.tsx new file mode 100644 index 0000000..7d45405 --- /dev/null +++ b/packages/web/src/pages/_error/+Page.tsx @@ -0,0 +1,6 @@ +import { Error, Lenny } from '../../components/error'; + +// is404 doesn't appear to actually be set, so... +export default function ErrorPage({ is404 }: { is404: boolean }) { + return ; +} diff --git a/packages/web/src/pages/dashboard/index.tsx b/packages/web/src/pages/dashboard/+Page.tsx similarity index 52% rename from packages/web/src/pages/dashboard/index.tsx rename to packages/web/src/pages/dashboard/+Page.tsx index 23f1cdd..5144927 100644 --- a/packages/web/src/pages/dashboard/index.tsx +++ b/packages/web/src/pages/dashboard/+Page.tsx @@ -1,13 +1,16 @@ -import { Container } from '@ryanke/pandora'; +import { FC } from 'react'; +import { Container } from '../../components/container'; +import { Title } from '../../components/title'; import { FileList } from '../../containers/file-list/file-list'; import { useUser } from '../../hooks/useUser'; -export default function Dashboard() { +export const Page: FC = () => { useUser(true); return ( + Dashboard ); -} +}; diff --git a/packages/web/src/pages/dashboard/mfa.tsx b/packages/web/src/pages/dashboard/mfa/+Page.tsx similarity index 69% rename from packages/web/src/pages/dashboard/mfa.tsx rename to packages/web/src/pages/dashboard/mfa/+Page.tsx index 386d6a7..86b9ff8 100644 --- a/packages/web/src/pages/dashboard/mfa.tsx +++ b/packages/web/src/pages/dashboard/mfa/+Page.tsx @@ -1,45 +1,48 @@ -import { Button, ButtonStyle, Container, useAsync, useToasts } from '@ryanke/pandora'; +import { useMutation, useQuery } from '@apollo/client'; import clsx from 'clsx'; -import { useRouter } from 'next/router'; import { QRCodeSVG } from 'qrcode.react'; -import { Fragment, useCallback, useEffect, useMemo, useState } from 'react'; -import { ChevronLeft, ChevronRight, Copy, Download } from 'react-feather'; -import { OtpInput } from 'src/components/input/otp'; -import { PageLoader } from 'src/components/page-loader'; -import { Steps } from 'src/components/steps'; -import type { GenerateOtpMutation } from 'src/generated/graphql'; -import { useConfirmOtpMutation, useGenerateOtpMutation } from 'src/generated/graphql'; -import { useQueryState } from 'src/hooks/useQueryState'; +import { FC, Fragment, useCallback, useMemo } from 'react'; +import { FiChevronLeft, FiChevronRight, FiCopy, FiDownload } from 'react-icons/fi'; +import { graphql } from '../../../@generated'; +import { Button, ButtonStyle } from '../../../components/button'; +import { Container } from '../../../components/container'; +import { Error } from '../../../components/error'; +import { OtpInput } from '../../../components/input/otp'; +import { PageLoader } from '../../../components/page-loader'; +import { Steps } from '../../../components/steps'; +import { useToasts } from '../../../components/toast'; +import { navigate } from '../../../helpers/routing'; +import { useAsync } from '../../../hooks/useAsync'; +import { useQueryState } from '../../../hooks/useQueryState'; -export default function Generate() { - const [generate] = useGenerateOtpMutation(); - const [result, setResult] = useState(null); +const GenerateOtp = graphql(` + query GenerateOTP { + generateOTP { + recoveryCodes + qrauthUrl + secret + } + } +`); + +const ConfirmOTP = graphql(` + mutation ConfirmOTP($otpCode: String!) { + confirmOTP(otpCode: $otpCode) + } +`); + +export const Page: FC = () => { + const result = useQuery(GenerateOtp); const createToast = useToasts(); - const router = useRouter(); const [currentStep, setCurrentStep] = useQueryState('step', 0, Number); - const [confirmOtp] = useConfirmOtpMutation(); - - useEffect(() => { - generate() - .then(({ data }) => { - if (!data) return; - setResult(data); - }) - .catch((error) => { - createToast({ - text: error.message, - error: true, - }); - router.push('/dashboard'); - }); - }, []); + const [confirmOtp] = useMutation(ConfirmOTP); const copyable = useMemo(() => { - if (!result) return; - const prefix = `Use these in place of OTP codes in emergency situations on ${window.location.host}. \nEach code will only work once. If you are close to running out, you should generate new codes.\n\n`; - const body = result.generateOTP.recoveryCodes.join('\n'); + if (!result.data) return; + const prefix = `Use these in place of OTP codes in emergency situations. \nEach code will only work once. If you are close to running out, you should generate new codes.\n\n`; + const body = result.data.generateOTP.recoveryCodes.join('\n'); return prefix + body; - }, [result]); + }, [result.data]); const download = useCallback(() => { if (!copyable) return; @@ -63,7 +66,7 @@ export default function Generate() { try { await confirmOtp({ variables: { otpCode } }); createToast({ text: 'Successfully enabled 2FA!' }); - router.replace('/dashboard'); + navigate('/dashboard', { overwriteLastHistoryEntry: true }); } catch (error: any) { if (error.message) { createToast({ @@ -74,9 +77,8 @@ export default function Generate() { } }); - if (!result) { - return ; - } + if (result.loading) return ; + if (!result.data) return ; return ( @@ -86,7 +88,7 @@ export default function Generate() { {currentStep === 0 && (
- {result.generateOTP.recoveryCodes.join('\n')} + {result.data.generateOTP.recoveryCodes.join('\n')}

Store your backup codes

@@ -96,11 +98,11 @@ export default function Generate() {

@@ -110,7 +112,7 @@ export default function Generate() { {currentStep === 1 && (
- +

Scan the QR code

@@ -121,7 +123,7 @@ export default function Generate() {

If you can't scan the QR code, you can enter the code{' '} - {result.generateOTP.secret} manually. + {result.data.generateOTP.secret} manually.

@@ -151,17 +153,17 @@ export default function Generate() { currentStep === 0 && 'opacity-0 pointer-events-none', )} > - Back + Back
); -} +}; diff --git a/packages/web/src/pages/dashboard/preferences.graphql b/packages/web/src/pages/dashboard/preferences.graphql deleted file mode 100644 index 2f28763..0000000 --- a/packages/web/src/pages/dashboard/preferences.graphql +++ /dev/null @@ -1,5 +0,0 @@ -mutation RefreshToken { - refreshToken { - ...RegularUser - } -} diff --git a/packages/web/src/pages/dashboard/preferences.tsx b/packages/web/src/pages/dashboard/preferences/+Page.tsx similarity index 51% rename from packages/web/src/pages/dashboard/preferences.tsx rename to packages/web/src/pages/dashboard/preferences/+Page.tsx index c82227d..b166d86 100644 --- a/packages/web/src/pages/dashboard/preferences.tsx +++ b/packages/web/src/pages/dashboard/preferences/+Page.tsx @@ -1,28 +1,60 @@ -import { Breadcrumbs, Button, Container, useAsync } from '@ryanke/pandora'; -import { useRouter } from 'next/router'; -import { OtpInput } from 'src/components/input/otp'; -import { Input } from '../../components/input/input'; -import { PageLoader } from '../../components/page-loader'; -import { Title } from '../../components/title'; -import { ConfigGenerator } from '../../containers/config-generator/config-generator'; -import { GetUserDocument, useDisableOtpMutation, useRefreshTokenMutation } from '../../generated/graphql'; -import { useConfig } from '../../hooks/useConfig'; -import { useUser } from '../../hooks/useUser'; +import { useMutation, useQuery } from '@apollo/client'; +import { FC } from 'react'; +import { graphql } from '../../../@generated'; +import { GetUserDocument } from '../../../@generated/graphql'; +import { Breadcrumbs } from '../../../components/breadcrumbs'; +import { Button } from '../../../components/button'; +import { Container } from '../../../components/container'; +import { Input } from '../../../components/input/input'; +import { OtpInput } from '../../../components/input/otp'; +import { PageLoader } from '../../../components/page-loader'; +import { Title } from '../../../components/title'; +import { ConfigGenerator } from '../../../containers/config-generator/config-generator'; +import { navigate } from '../../../helpers/routing'; +import { useAsync } from '../../../hooks/useAsync'; +import { useConfig } from '../../../hooks/useConfig'; +import { useLogoutUser, useUserRedirect } from '../../../hooks/useUser'; -export default function Preferences() { - const user = useUser(true); +const RefreshToken = graphql(` + mutation RefreshToken { + refreshToken { + ...RegularUser + } + } +`); + +const DisableOtp = graphql(` + mutation DisableOTP($otpCode: String!) { + disableOTP(otpCode: $otpCode) + } +`); + +const UserQueryWithToken = graphql(` + query UserQueryWithToken { + user { + ...RegularUser + token + otpEnabled + } + } +`); + +export const Page: FC = () => { + const { logout } = useLogoutUser(); + const user = useQuery(UserQueryWithToken); const config = useConfig(); - const router = useRouter(); - const [refreshMutation] = useRefreshTokenMutation(); + const [refreshMutation] = useMutation(RefreshToken); const [refresh, refreshing] = useAsync(async () => { // eslint-disable-next-line no-alert const confirmation = confirm('Are you sure? This will invalidate all existing configs and sessions and will sign you out of the dashboard.') // prettier-ignore if (!confirmation) return; await refreshMutation(); - await user.logout(); + await logout(); }); - const [disableOTP, disableOTPMut] = useDisableOtpMutation({ + useUserRedirect(user.data?.user, user.loading, true); + + const [disableOTP, disableOTPMut] = useMutation(DisableOtp, { refetchQueries: [{ query: GetUserDocument }], }); @@ -50,7 +82,7 @@ export default function Preferences() {
{ event.target.select(); }} @@ -58,18 +90,18 @@ export default function Preferences() {
- +
2-factor Authentication

- 2-factor authentication is currently {user.data.otpEnabled ? 'enabled' : 'disabled'}.{' '} - {user.data.otpEnabled ? `Enter an authenticator code to disable it.` : 'Click to setup.'} + 2-factor authentication is currently {user.data.user.otpEnabled ? 'enabled' : 'disabled'}.{' '} + {user.data.user.otpEnabled ? `Enter an authenticator code to disable it.` : 'Click to setup.'}

- {user.data.otpEnabled && ( + {user.data.user.otpEnabled && ( { @@ -79,8 +111,8 @@ export default function Preferences() { }} /> )} - {!user.data.otpEnabled && ( - )} @@ -88,4 +120,4 @@ export default function Preferences() {
); -} +}; diff --git a/packages/web/src/pages/file/[fileId].tsx b/packages/web/src/pages/file/@fileId/+Page.tsx similarity index 62% rename from packages/web/src/pages/file/[fileId].tsx rename to packages/web/src/pages/file/@fileId/+Page.tsx index a543a6c..ddb680d 100644 --- a/packages/web/src/pages/file/[fileId].tsx +++ b/packages/web/src/pages/file/@fileId/+Page.tsx @@ -1,19 +1,54 @@ -import { Container, Spinner, useAsync, useToasts } from '@ryanke/pandora'; +import { useMutation, useQuery } from '@apollo/client'; import clsx from 'clsx'; import copyToClipboard from 'copy-to-clipboard'; -import type { GetServerSidePropsContext } from 'next'; -import { useRouter } from 'next/router'; import type { FC, ReactNode } from 'react'; import { useState } from 'react'; -import { Download, Share, Trash } from 'react-feather'; -import { addStateToPageProps, initializeApollo } from '../../apollo'; -import { Embed } from '../../components/embed/embed'; -import { PageLoader } from '../../components/page-loader'; -import { Title } from '../../components/title'; -import { ConfigDocument, GetFileDocument, useDeleteFileMutation, useGetFileQuery } from '../../generated/graphql'; -import { downloadUrl } from '../../helpers/download.helper'; -import { useQueryState } from '../../hooks/useQueryState'; -import ErrorPage from '../_error'; +import { FiDownload, FiShare, FiTrash } from 'react-icons/fi'; +import { graphql } from '../../../@generated'; +import { Container } from '../../../components/container'; +import { Embed } from '../../../components/embed/embed'; +import { Error } from '../../../components/error'; +import { PageLoader } from '../../../components/page-loader'; +import { Spinner } from '../../../components/spinner'; +import { Title } from '../../../components/title'; +import { useToasts } from '../../../components/toast'; +import { downloadUrl } from '../../../helpers/download.helper'; +import { navigate } from '../../../helpers/routing'; +import { useAsync } from '../../../hooks/useAsync'; +import { useQueryState } from '../../../hooks/useQueryState'; +import { PageProps } from '../../../renderer/types'; + +const GetFile = graphql(` + query GetFile($fileId: ID!) { + file(fileId: $fileId) { + id + type + displayName + size + sizeFormatted + textContent + isOwner + metadata { + height + width + } + paths { + view + thumbnail + direct + } + urls { + view + } + } + } +`); + +const DeleteFile = graphql(` + mutation DeleteFile($fileId: ID!, $deleteKey: String) { + deleteFile(fileId: $fileId, key: $deleteKey) + } +`); const FileOption: FC<{ children: ReactNode; className?: string; onClick: () => void }> = ({ children, @@ -32,20 +67,19 @@ const FileOption: FC<{ children: ReactNode; className?: string; onClick: () => v ); }; -export default function File() { - const router = useRouter(); - const fileId = router.query.fileId; +export const Page: FC = ({ routeParams }) => { + const fileId = routeParams.fileId; const [deleteKey] = useQueryState('deleteKey'); const [confirm, setConfirm] = useState(false); const createToast = useToasts(); - const file = useGetFileQuery({ + const file = useQuery(GetFile, { skip: !fileId, variables: { fileId: fileId as string, }, }); - const [deleteMutation] = useDeleteFileMutation(); + const [deleteMutation] = useMutation(DeleteFile); const copyLink = () => { copyToClipboard(file.data?.file.urls.view ?? window.location.href); createToast({ @@ -73,11 +107,11 @@ export default function File() { }); createToast({ text: `Deleted "${file.data.file.displayName}"` }); - router.replace('/dashboard'); + navigate('/dashboard', { overwriteLastHistoryEntry: true }); }); if (file.error) { - return ; + return ; } if (!file.data) { @@ -103,20 +137,21 @@ export default function File() { displayName: file.data.file.displayName, height: file.data.file.metadata?.height, width: file.data.file.metadata?.width, + textContent: file.data.file.textContent, }} />
- Copy link + Copy link - Download + Download {canDelete && ( - + {deletingFile ? : confirm ? 'Are you sure?' : 'Delete'} )} @@ -125,23 +160,4 @@ export default function File() {
); -} - -export async function getServerSideProps(context: GetServerSidePropsContext) { - const client = initializeApollo({ context }); - await Promise.all([ - await client.query({ - query: ConfigDocument, - }), - await client.query({ - query: GetFileDocument, - variables: { - fileId: context.query.fileId, - }, - }), - ]); - - return addStateToPageProps(client, { - props: {}, - }); -} +}; diff --git a/packages/web/src/pages/file/@fileId/+route.ts b/packages/web/src/pages/file/@fileId/+route.ts new file mode 100644 index 0000000..2050492 --- /dev/null +++ b/packages/web/src/pages/file/@fileId/+route.ts @@ -0,0 +1,13 @@ +import { PageContext, RouteSync } from 'vike/types'; +import { resolveRoute } from 'vike/routing'; + +const PATTERN = /^\/(file|f|v|i)\//; + +export const route: RouteSync = (pageContext: PageContext) => { + if (PATTERN.test(pageContext.urlPathname)) { + const replaced = pageContext.urlPathname.replace(PATTERN, '/file/'); + return resolveRoute('/file/@fileId', replaced); + } + + return false; +}; diff --git a/packages/web/src/pages/file/[fileId].graphql b/packages/web/src/pages/file/[fileId].graphql deleted file mode 100644 index 07b0c19..0000000 --- a/packages/web/src/pages/file/[fileId].graphql +++ /dev/null @@ -1,26 +0,0 @@ -query GetFile($fileId: ID!) { - file(fileId: $fileId) { - id - type - displayName - size - sizeFormatted - isOwner - metadata { - height - width - } - paths { - view - thumbnail - direct - } - urls { - view - } - } -} - -mutation DeleteFile($fileId: ID!, $deleteKey: String) { - deleteFile(fileId: $fileId, key: $deleteKey) -} diff --git a/packages/web/src/pages/invite/[inviteToken].tsx b/packages/web/src/pages/invite/@inviteToken/+Page.tsx similarity index 55% rename from packages/web/src/pages/invite/[inviteToken].tsx rename to packages/web/src/pages/invite/@inviteToken/+Page.tsx index 52d1c43..2ecde63 100644 --- a/packages/web/src/pages/invite/[inviteToken].tsx +++ b/packages/web/src/pages/invite/@inviteToken/+Page.tsx @@ -1,29 +1,49 @@ -import { Container, useAsync, useToasts } from '@ryanke/pandora'; -import Router, { useRouter } from 'next/router'; -import { useEffect } from 'react'; -import { PageLoader } from '../../components/page-loader'; -import { Time } from '../../components/time'; -import { Title } from '../../components/title'; -import type { SignupData } from '../../containers/signup-form'; -import { SignupForm } from '../../containers/signup-form'; -import { useCreateUserMutation, useGetInviteQuery } from '../../generated/graphql'; -import { getErrorMessage } from '../../helpers/get-error-message.helper'; -import { useConfig } from '../../hooks/useConfig'; -import ErrorPage from '../_error'; +import { useMutation, useQuery } from '@apollo/client'; +import { FC, useEffect } from 'react'; +import { graphql } from '../../../@generated'; +import { Container } from '../../../components/container'; +import { Error } from '../../../components/error'; +import { PageLoader } from '../../../components/page-loader'; +import { Time } from '../../../components/time'; +import { Title } from '../../../components/title'; +import { useToasts } from '../../../components/toast'; +import type { SignupData } from '../../../containers/signup-form'; +import { SignupForm } from '../../../containers/signup-form'; +import { getErrorMessage } from '../../../helpers/get-error-message.helper'; +import { navigate, prefetch } from '../../../helpers/routing'; +import { useAsync } from '../../../hooks/useAsync'; +import { useConfig } from '../../../hooks/useConfig'; +import { PageProps } from '../../../renderer/types'; -export default function Invite() { +const GetInvite = graphql(` + query GetInvite($inviteId: ID!) { + invite(inviteId: $inviteId) { + id + expiresAt + } + } +`); + +const CreateUser = graphql(` + mutation CreateUser($user: CreateUserDto!) { + createUser(data: $user) { + id + } + } +`); + +export const Page: FC = ({ routeParams }) => { const config = useConfig(); - const router = useRouter(); const createToast = useToasts(); - const inviteToken = router.query.inviteToken as string | undefined; - const invite = useGetInviteQuery({ skip: !inviteToken, variables: { inviteId: inviteToken! } }); + const inviteToken = routeParams.inviteToken; + const invite = useQuery(GetInvite, { skip: !inviteToken, variables: { inviteId: inviteToken! } }); const expiresAt = invite.data?.invite.expiresAt; useEffect(() => { - Router.prefetch('/login'); + prefetch('/login'); }, []); - const [createUserMutation] = useCreateUserMutation(); + const [createUserMutation] = useMutation(CreateUser); const [onSubmit] = useAsync(async (data: SignupData) => { try { if (!inviteToken) return; @@ -36,7 +56,7 @@ export default function Invite() { }, }); - Router.push('/login'); + navigate('/login'); createToast({ text: 'Account created successfully. Please sign in.' }); } catch (error) { const message = getErrorMessage(error); @@ -47,7 +67,7 @@ export default function Invite() { }); if (invite.error || config.error) { - return ; + return ; } if (!invite.data || !config.data) { @@ -82,4 +102,4 @@ export default function Invite() {
); -} +}; diff --git a/packages/web/src/pages/invite/[inviteToken].graphql b/packages/web/src/pages/invite/[inviteToken].graphql deleted file mode 100644 index 1c19be6..0000000 --- a/packages/web/src/pages/invite/[inviteToken].graphql +++ /dev/null @@ -1,12 +0,0 @@ -query GetInvite($inviteId: ID!) { - invite(inviteId: $inviteId) { - id - expiresAt - } -} - -mutation CreateUser($user: CreateUserDto!) { - createUser(data: $user) { - id - } -} diff --git a/packages/web/src/pages/login.tsx b/packages/web/src/pages/login/+Page.tsx similarity index 65% rename from packages/web/src/pages/login.tsx rename to packages/web/src/pages/login/+Page.tsx index 8e2be6a..e9c4ee2 100644 --- a/packages/web/src/pages/login.tsx +++ b/packages/web/src/pages/login/+Page.tsx @@ -1,9 +1,10 @@ -import { Container, useToasts } from '@ryanke/pandora'; -import { useEffect } from 'react'; -import { Title } from '../components/title'; -import { LoginForm } from '../containers/login-form'; +import { FC, useEffect } from 'react'; +import { Title } from '../../components/title'; +import { LoginForm } from '../../containers/login-form'; +import { Container } from '../../components/container'; +import { useToasts } from '../../components/toast'; -export default function Login() { +export const Page: FC = () => { const createToast = useToasts(); useEffect(() => { @@ -25,4 +26,4 @@ export default function Login() { ); -} +}; diff --git a/packages/web/src/pages/paste/index.tsx b/packages/web/src/pages/paste/+Page.tsx similarity index 92% rename from packages/web/src/pages/paste/index.tsx rename to packages/web/src/pages/paste/+Page.tsx index e182b14..20e7e74 100644 --- a/packages/web/src/pages/paste/index.tsx +++ b/packages/web/src/pages/paste/+Page.tsx @@ -1,17 +1,20 @@ -import { Button, Container } from '@ryanke/pandora'; +import { useMutation } from '@apollo/client'; import { Form, Formik } from 'formik'; +import { FC } from 'react'; import * as Yup from 'yup'; +import { graphql } from '../../@generated'; +import type { CreatePasteDto } from '../../@generated/graphql'; +import { Button } from '../../components/button'; +import { Container } from '../../components/container'; +import { Error } from '../../components/error'; import { Checkbox } from '../../components/input/checkbox'; import { Input } from '../../components/input/input'; import { Select } from '../../components/input/select'; import { TextArea } from '../../components/input/textarea'; import { Title } from '../../components/title'; -import type { CreatePasteDto } from '../../generated/graphql'; -import { useCreatePasteMutation } from '../../generated/graphql'; import { encryptContent } from '../../helpers/encrypt.helper'; import { useConfig } from '../../hooks/useConfig'; import { useUser } from '../../hooks/useUser'; -import ErrorPage from '../_error'; const EXPIRY_OPTIONS = [ { name: '15 minutes', value: 15 }, @@ -81,12 +84,23 @@ const schema = Yup.object().shape({ expiryMinutes: Yup.number().required(), }); -export default function Paste() { +const CreatePaste = graphql(` + mutation CreatePaste($input: CreatePasteDto!) { + createPaste(partial: $input) { + id + urls { + view + } + } + } +`); + +export const Page: FC = () => { const user = useUser(); const config = useConfig(); - const [pasteMutation] = useCreatePasteMutation(); + const [pasteMutation] = useMutation(CreatePaste); if (user.error) { - return ; + return ; } return ( @@ -200,4 +214,4 @@ export default function Paste() { ); -} +}; diff --git a/packages/web/src/pages/paste/[pasteId].tsx b/packages/web/src/pages/paste/@pasteId/+Page.tsx similarity index 65% rename from packages/web/src/pages/paste/[pasteId].tsx rename to packages/web/src/pages/paste/@pasteId/+Page.tsx index 7a58672..6e4a2ba 100644 --- a/packages/web/src/pages/paste/[pasteId].tsx +++ b/packages/web/src/pages/paste/@pasteId/+Page.tsx @@ -1,31 +1,54 @@ -import { Button, Container } from '@ryanke/pandora'; -import type { GetServerSidePropsContext } from 'next'; -import { useRouter } from 'next/router'; -import { useEffect, useState } from 'react'; -import { BookOpen, Clock, Trash } from 'react-feather'; -import { addStateToPageProps, initializeApollo } from '../../apollo'; -import { Embed } from '../../components/embed/embed'; -import { PageLoader } from '../../components/page-loader'; -import { Time } from '../../components/time'; -import { ConfigDocument, GetPasteDocument, useGetPasteQuery } from '../../generated/graphql'; -import { decryptContent } from '../../helpers/encrypt.helper'; -import { hashToObject } from '../../helpers/hash-to-object'; -import { useUser } from '../../hooks/useUser'; -import { Warning } from '../../warning'; -import ErrorPage, { Lenny } from '../_error'; +import { useQuery } from '@apollo/client'; +import { FC, useEffect, useState } from 'react'; +import { FiBookOpen, FiClock, FiTrash } from 'react-icons/fi'; +import { graphql } from '../../../@generated'; +import { Button } from '../../../components/button'; +import { Container } from '../../../components/container'; +import { Embed } from '../../../components/embed/embed'; +import { Error, Lenny } from '../../../components/error'; +import { PageLoader } from '../../../components/page-loader'; +import { Time } from '../../../components/time'; +import { Warning } from '../../../components/warning'; +import { decryptContent } from '../../../helpers/encrypt.helper'; +import { hashToObject } from '../../../helpers/hash-to-object'; +import { navigate } from '../../../helpers/routing'; +import { useUser } from '../../../hooks/useUser'; +import { PageProps } from '../../../renderer/types'; -export default function ViewPaste() { +const PasteQuery = graphql(` + query GetPaste($pasteId: ID!) { + paste(pasteId: $pasteId) { + id + title + type + extension + content + encrypted + createdAt + expiresAt + burnt + burn + urls { + view + } + } + } +`); + +export const Page: FC = ({ routeParams }) => { const user = useUser(); - const router = useRouter(); const [burnUnless, setBurnUnless] = useState(); const [confirmedBurn, setConfirmedBurn] = useState(false); const [content, setContent] = useState(null); const [error, setError] = useState(null); const [missingKey, setMissingKey] = useState(false); - const pasteId = router.query.pasteId as string | undefined; - const paste = useGetPasteQuery({ - skip: - !pasteId || (!confirmedBurn && (burnUnless === undefined || (burnUnless ? burnUnless !== user.data?.id : false))), + const pasteId = routeParams.pasteId; + + const skipQuery = + !pasteId || (!confirmedBurn && (burnUnless === undefined || (burnUnless ? burnUnless !== user.data?.id : false))); + + const paste = useQuery(PasteQuery, { + skip: skipQuery, variables: { pasteId: pasteId!, }, @@ -41,8 +64,8 @@ export default function ViewPaste() { setBurnUnless(burnUnless); url.searchParams.delete('burn_unless'); - window.history.replaceState(window.history.state, '', url.href); - }, [router]); + navigate(url.href, { overwriteLastHistoryEntry: true }); + }, []); useEffect(() => { // handle decrypting encrypted pastes @@ -77,7 +100,7 @@ export default function ViewPaste() { }, [content, paste.data]); if (paste.error || error) { - return ; + return ; } if (!confirmedBurn && burnUnless && (!user.data || burnUnless !== user.data.id)) { @@ -96,7 +119,7 @@ export default function ViewPaste() { if (missingKey) { return ( - @@ -126,7 +149,7 @@ export default function ViewPaste() { type: 'text/plain', size: paste.data.paste.content.length, displayName: paste.data.paste.title ?? `${paste.data.paste.id}.${paste.data.paste.extension}`, - content: { data: content, error: error }, + textContent: paste.data.paste.content, paths: { view: `/paste/${pasteId}`, direct: `/paste/${pasteId}.txt`, @@ -135,17 +158,17 @@ export default function ViewPaste() { />

- {content?.length ?? 0} characters + {content?.length ?? 0} characters - {' '} + {' '} Created {paste.data.paste.expiresAt && !confirmedBurn && ( - {' '} + {' '} Expires @@ -154,23 +177,4 @@ export default function ViewPaste() {

); -} - -export async function getServerSideProps(context: GetServerSidePropsContext) { - const client = initializeApollo({ context }); - await Promise.all([ - await client.query({ - query: ConfigDocument, - }), - await client.query({ - query: GetPasteDocument, - variables: { - pasteId: context.query.pasteId, - }, - }), - ]); - - return addStateToPageProps(client, { - props: {}, - }); -} +}; diff --git a/packages/web/src/pages/paste/paste.graphql b/packages/web/src/pages/paste/paste.graphql deleted file mode 100644 index 24e8b57..0000000 --- a/packages/web/src/pages/paste/paste.graphql +++ /dev/null @@ -1,26 +0,0 @@ -mutation CreatePaste($input: CreatePasteDto!) { - createPaste(partial: $input) { - id - urls { - view - } - } -} - -query GetPaste($pasteId: ID!) { - paste(pasteId: $pasteId) { - id - title - type - extension - content - encrypted - createdAt - expiresAt - burnt - burn - urls { - view - } - } -} diff --git a/packages/web/src/pages/shorten.graphql b/packages/web/src/pages/shorten.graphql deleted file mode 100644 index b58be66..0000000 --- a/packages/web/src/pages/shorten.graphql +++ /dev/null @@ -1,8 +0,0 @@ -mutation Shorten($link: String!, $host: String) { - createLink(destination: $link, host: $host) { - id - urls { - view - } - } -} diff --git a/packages/web/src/pages/shorten.tsx b/packages/web/src/pages/shorten/+Page.tsx similarity index 72% rename from packages/web/src/pages/shorten.tsx rename to packages/web/src/pages/shorten/+Page.tsx index c5a43ce..d0d6e40 100644 --- a/packages/web/src/pages/shorten.tsx +++ b/packages/web/src/pages/shorten/+Page.tsx @@ -1,12 +1,15 @@ -import { Button, Container } from '@ryanke/pandora'; +import { useMutation } from '@apollo/client'; import { Form, Formik } from 'formik'; -import { useState } from 'react'; +import { FC, useState } from 'react'; import * as Yup from 'yup'; -import { Input } from '../components/input/input'; -import { Select } from '../components/input/select'; -import { useShortenMutation } from '../generated/graphql'; -import { useConfig } from '../hooks/useConfig'; -import { useUser } from '../hooks/useUser'; +import { graphql } from '../../@generated'; +import { Button } from '../../components/button'; +import { Container } from '../../components/container'; +import { Input } from '../../components/input/input'; +import { Select } from '../../components/input/select'; +import { Title } from '../../components/title'; +import { useConfig } from '../../hooks/useConfig'; +import { useUser } from '../../hooks/useUser'; const schema = Yup.object().shape({ host: Yup.string().optional(), @@ -15,8 +18,19 @@ const schema = Yup.object().shape({ .required(), }); -export default function Shorten() { - const [shortenMutation] = useShortenMutation(); +const Shorten = graphql(` + mutation Shorten($link: String!, $host: String) { + createLink(destination: $link, host: $host) { + id + urls { + view + } + } + } +`); + +export const Page: FC = () => { + const [shortenMutation] = useMutation(Shorten); const [result, setResult] = useState(null); const config = useConfig(); @@ -24,6 +38,7 @@ export default function Shorten() { return ( + Shorten URL

Shorten URL

{!result &&

Enter a link below and get a short URL

} {result &&

Your shortened link is below.

} @@ -76,4 +91,4 @@ export default function Shorten() { )}
); -} +}; diff --git a/packages/web/src/pages/upload.tsx b/packages/web/src/pages/upload/+Page.tsx similarity index 75% rename from packages/web/src/pages/upload.tsx rename to packages/web/src/pages/upload/+Page.tsx index ea8cd61..c5e8a01 100644 --- a/packages/web/src/pages/upload.tsx +++ b/packages/web/src/pages/upload/+Page.tsx @@ -1,16 +1,20 @@ -import { Button, Card, Container, Spinner, useToasts } from '@ryanke/pandora'; -import { useRouter } from 'next/router'; -import type { ChangeEventHandler, DragEventHandler } from 'react'; -import { useRef, useState } from 'react'; -import { Upload as UploadIcon } from 'react-feather'; -import { Select } from '../components/input/select'; -import { PageLoader } from '../components/page-loader'; -import { Title } from '../components/title'; -import { getErrorMessage } from '../helpers/get-error-message.helper'; -import { http } from '../helpers/http.helper'; -import { replaceUsername } from '../helpers/replace-username.helper'; -import { useConfig } from '../hooks/useConfig'; -import { useUser } from '../hooks/useUser'; +import type { ChangeEventHandler, DragEventHandler, FC } from 'react'; +import { useEffect, useRef, useState } from 'react'; +import { FiUpload } from 'react-icons/fi'; +import { Button } from '../../components/button'; +import { Card } from '../../components/card'; +import { Container } from '../../components/container'; +import { Select } from '../../components/input/select'; +import { PageLoader } from '../../components/page-loader'; +import { Spinner } from '../../components/spinner'; +import { Title } from '../../components/title'; +import { useToasts } from '../../components/toast'; +import { getErrorMessage } from '../../helpers/get-error-message.helper'; +import { http } from '../../helpers/http.helper'; +import { replaceUsername } from '../../helpers/replace-username.helper'; +import { navigate } from '../../helpers/routing'; +import { useConfig } from '../../hooks/useConfig'; +import { useUser } from '../../hooks/useUser'; interface CreateFileResponse { id: string; @@ -20,9 +24,8 @@ interface CreateFileResponse { }; } -export default function Upload() { +export const Page: FC = () => { const user = useUser(true); - const router = useRouter(); const inputRef = useRef(null); const [uploading, setUploading] = useState(false); const [file, setFile] = useState(null); @@ -51,6 +54,20 @@ export default function Upload() { } }; + useEffect(() => { + const onPaste = (event: ClipboardEvent) => { + const file = event.clipboardData?.files?.[0]; + if (file) { + setFile(file); + } + }; + + document.addEventListener('paste', onPaste); + return () => { + document.removeEventListener('paste', onPaste); + }; + }, []); + const onFileChange: ChangeEventHandler = (event) => { event.stopPropagation(); event.preventDefault(); @@ -78,7 +95,7 @@ export default function Upload() { const route = `/file/${body.id}`; const isSameHost = body.hostname === config.data.currentHost.normalised; if (isSameHost) { - router.push(route); + navigate(route); } location.href = body.urls.view; @@ -161,7 +178,7 @@ export default function Upload() {

{hover ? ( - Release to upload + Release to upload ) : ( Drag and drop a file to upload @@ -169,8 +186,10 @@ export default function Upload() {

Or click here to select a file. +
+ Or Ctrl + V to paste a file.

); -} +}; diff --git a/packages/web/src/renderer/+config.h.ts b/packages/web/src/renderer/+config.h.ts new file mode 100644 index 0000000..942c480 --- /dev/null +++ b/packages/web/src/renderer/+config.h.ts @@ -0,0 +1,5 @@ +import { Config } from 'vike/types'; + +export default { + passToClient: ['state', 'routeParams'], +} satisfies Config; diff --git a/packages/web/src/renderer/+onRenderClient.tsx b/packages/web/src/renderer/+onRenderClient.tsx new file mode 100644 index 0000000..26d2583 --- /dev/null +++ b/packages/web/src/renderer/+onRenderClient.tsx @@ -0,0 +1,32 @@ +import { ApolloClient, ApolloProvider, HttpLink, InMemoryCache } from '@apollo/client'; +import { hydrateRoot } from 'react-dom/client'; +import { OnRenderClientAsync } from 'vike/types'; +import { App } from '../app'; +import { typePolicies } from './policy'; +import { PageContextProvider } from './usePageContext'; +import { HelmetProvider } from 'react-helmet-async'; + +export const onRenderClient: OnRenderClientAsync = async (pageContext) => { + const { Page } = pageContext; + const client = new ApolloClient({ + link: new HttpLink({ uri: '/api/graphql' }), + cache: new InMemoryCache({ typePolicies }), + }); + + if (pageContext.state) { + client.cache.restore(pageContext.state); + } + + hydrateRoot( + document.getElementById('root')!, + + + + + + + + + , + ); +}; diff --git a/packages/web/src/renderer/+onRenderHtml.tsx b/packages/web/src/renderer/+onRenderHtml.tsx new file mode 100644 index 0000000..629a7e7 --- /dev/null +++ b/packages/web/src/renderer/+onRenderHtml.tsx @@ -0,0 +1,65 @@ +import { ApolloClient, ApolloProvider, HttpLink, InMemoryCache } from '@apollo/client'; +import { renderToStringWithData } from '@apollo/client/react/ssr'; +import { HelmetProvider, HelmetServerState } from 'react-helmet-async'; +import { dangerouslySkipEscape, escapeInject } from 'vike/server'; +import type { OnRenderHtmlAsync } from 'vike/types'; +import { App } from '../app'; +import { typePolicies } from './policy'; +import { PageProps } from './types'; +import { PageContextProvider } from './usePageContext'; + +const GRAPHQL_URL = (import.meta.env.PUBLIC_ENV__FRONTEND_API_URL || import.meta.env.FRONTEND_API_URL) + '/graphql'; + +export const onRenderHtml: OnRenderHtmlAsync = async (pageContext): ReturnType => { + const { Page } = pageContext; + const pageProps: PageProps = { routeParams: pageContext.routeParams }; + + const headers = pageContext.cookies ? { Cookie: pageContext.cookies } : undefined; + const client = new ApolloClient({ + ssrMode: true, + cache: new InMemoryCache({ typePolicies }), + link: new HttpLink({ + uri: GRAPHQL_URL, + credentials: 'same-origin', + headers: headers, + }), + }); + + const helmetContext: { helmet?: HelmetServerState } = {}; + const tree = ( + + + + + + + + + + ); + + const pageHtml = await renderToStringWithData(tree); + const helmet = helmetContext.helmet!; + const documentHtml = escapeInject` + + + + + ${dangerouslySkipEscape(helmet.title.toString())} + ${dangerouslySkipEscape(helmet.priority.toString())} + ${dangerouslySkipEscape(helmet.meta.toString())} + ${dangerouslySkipEscape(helmet.link.toString())} + ${dangerouslySkipEscape(helmet.script.toString())} + + +
${dangerouslySkipEscape(pageHtml)}
+ + `; + + return { + documentHtml: documentHtml, + pageContext: { + state: client.cache.extract(), + }, + }; +}; diff --git a/packages/web/src/renderer/policy.ts b/packages/web/src/renderer/policy.ts new file mode 100644 index 0000000..a5a9983 --- /dev/null +++ b/packages/web/src/renderer/policy.ts @@ -0,0 +1,13 @@ +import { TypePolicies } from '@apollo/client'; +import { relayStylePagination } from '@apollo/client/utilities'; + +export const typePolicies: TypePolicies = { + Config: { keyFields: [] }, + User: { + keyFields: [], + fields: { + files: relayStylePagination(), + pastes: relayStylePagination(), + }, + }, +}; diff --git a/packages/web/src/renderer/types.ts b/packages/web/src/renderer/types.ts new file mode 100644 index 0000000..662db9c --- /dev/null +++ b/packages/web/src/renderer/types.ts @@ -0,0 +1,21 @@ +import { NormalizedCacheObject } from '@apollo/client'; +import { FC } from 'react'; + +// https://vike.dev/pageContext#typescript +declare global { + namespace Vike { + interface PageContext { + Page: FC; + state?: NormalizedCacheObject; + pageHtml?: string; + cookies?: string; + } + } +} + +export type PageProps = { + routeParams: Record; +}; + +// Tell TypeScript this file isn't an ambient module +export {}; diff --git a/packages/web/src/renderer/usePageContext.tsx b/packages/web/src/renderer/usePageContext.tsx new file mode 100644 index 0000000..f91617e --- /dev/null +++ b/packages/web/src/renderer/usePageContext.tsx @@ -0,0 +1,19 @@ +import React, { useContext } from 'react'; +import type { PageContext } from 'vike/types'; + +const Context = React.createContext(undefined as unknown as PageContext); + +export function PageContextProvider({ + pageContext, + children, +}: { + pageContext: PageContext; + children: React.ReactNode; +}) { + return {children}; +} + +export function usePageContext() { + const pageContext = useContext(Context); + return pageContext; +} diff --git a/packages/web/src/server/index.ts b/packages/web/src/server/index.ts new file mode 100644 index 0000000..cae019b --- /dev/null +++ b/packages/web/src/server/index.ts @@ -0,0 +1,159 @@ +import FastifyEarlyHints from '@fastify/early-hints'; +import FastifyProxy from '@fastify/http-proxy'; +import Fastify, { FastifyInstance } from 'fastify'; +import { createReadStream } from 'fs'; +import { IncomingMessage, ServerResponse } from 'http'; +import mime from 'mime'; +import { dirname, resolve } from 'path'; +import { compile, match } from 'path-to-regexp'; +import rrdir from 'readdirp'; +import { renderPage } from 'vike/server'; +import { PageContext } from 'vike/types'; +import { REWRITES } from './rewrites'; +import { fileURLToPath } from 'url'; + +const fileDir = dirname(fileURLToPath(import.meta.url)); +const staticDir = process.env.STATIC_DIR?.replace('{{FILE_DIR}}', fileDir) || resolve('dist/client'); +const rewrites = REWRITES.map(({ source, destination }) => ({ + match: match(source), + toPath: compile(destination), +})); + +const redirectUrlRegex = /\/(i|v)\/(?[\dA-z]+)($|\?|#)/iu; +const redirectUserAgents = [ + 'Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)', // Discord + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11.6; rv:92.0) Gecko/20100101 Firefox/92.0', // Discord + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Firefox/38.0', // Discord + 'wget/', + 'curl/', +]; + +export function shouldRedirectBasedOnAccept(acceptHeader: string | null) { + if (!acceptHeader) return false; + if (acceptHeader.includes('image/*')) return true; + if (acceptHeader.includes('video/*')) return true; + return false; +} + +async function startServer() { + const instance = Fastify({ + rewriteUrl: (request) => { + if (!request.url) throw new Error('No url'); + const { pathname } = new URL(request.url, 'http://localhost'); + + // if discord tries to request the html of an image, redirect it straight to the image + // this means the image is embedded, not the opengraph data for the image. + // also supports some other user agents that do the same thing + const isPathToRedirect = redirectUrlRegex.exec(pathname); + if (isPathToRedirect) { + const userAgent = request.headers['user-agent']; + const accept = request.headers.accept; + const isUserAgentToRedirect = redirectUserAgents.some((ua) => userAgent?.startsWith(ua)); + const isAcceptToRedirect = accept && shouldRedirectBasedOnAccept(accept); + if (isUserAgentToRedirect || isAcceptToRedirect) { + const fileId = isPathToRedirect.groups?.id; + if (fileId) { + return `/api/file/${fileId}`; + } + } + } + + // redirect paths like /i/abc123 to /file/abc123 + // doing this with vike routing seems to break client side routing + for (const { match, toPath } of rewrites) { + const result = match(pathname); + if (result) { + return toPath(result.params); + } + } + + return request.url; + }, + }); + + instance.register(FastifyEarlyHints, { + warn: true, + }); + + instance.register(FastifyProxy, { + prefix: '/api', + upstream: process.env.BACKEND_API_URL || 'http://localhost:8080', + replyOptions: { + rewriteRequestHeaders: (originalReq, headers) => ({ + ...headers, + 'x-forwarded-host': originalReq.headers.host, + }), + }, + }); + + const files = new Set(); + const info = new Map(); + for await (const file of rrdir(staticDir, { type: 'files', alwaysStat: true })) { + const mimeType = mime.getType(file.fullPath) || 'application/octet-stream'; + + files.add(file.fullPath); + info.set(file.fullPath, { + type: mimeType, + size: file.stats!.size, + }); + } + + instance.get('*', async (request, reply) => { + // check if its for a file on disk, and send that instead + const pathname = new URL(request.url, 'http://localhost').pathname; + const file = resolve(staticDir, pathname.slice(1)); + if (files.has(file)) { + const extraInfo = info.get(file); + if (extraInfo) { + reply.header('Content-Type', extraInfo.type); + reply.header('Content-Length', extraInfo.size); + } + + const stream = createReadStream(file); + return reply.send(stream); + } + + let cookies; + if (request.headers.cookie && typeof request.headers.cookie === 'string') { + cookies = request.headers.cookie; + } + + const pageContextInit = { + urlOriginal: request.originalUrl, + cookies: cookies, + } satisfies Partial; + + const pageContext = await renderPage(pageContextInit); + if (pageContext.errorWhileRendering) { + // todo: do something with the error + } + + const { httpResponse } = pageContext; + if (!httpResponse) { + reply.status(500).send('Internal Server Error'); + } else { + const { body, statusCode, headers, earlyHints } = httpResponse; + reply.writeEarlyHints({ link: earlyHints.map((e) => e.earlyHintLink) }); + headers.forEach(([name, value]) => reply.header(name, value)); + reply.status(statusCode); + reply.send(body); + } + }); + + await instance.ready(); + fastify = instance; +} + +let fastify: FastifyInstance | undefined; +const fastifyHandlerPromise = startServer().catch((error) => { + console.error(error); + process.exit(1); +}); + +export default async function handler(request: IncomingMessage, reply: ServerResponse) { + if (!fastify) { + await fastifyHandlerPromise; + } + + fastify!.server.emit('request', request, reply); +} diff --git a/packages/web/src/server/rewrites.ts b/packages/web/src/server/rewrites.ts new file mode 100644 index 0000000..050f649 --- /dev/null +++ b/packages/web/src/server/rewrites.ts @@ -0,0 +1,26 @@ +export const REWRITES = [ + { + source: '/t/:thumbnailId', + destination: '/api/thumbnail/:thumbnailId', + }, + { + source: '/(f|v|i)/:fileId.:extension', + destination: '/api/file/:fileId', + }, + { + source: '/(p|paste)/:pasteId.:extension', + destination: '/api/paste/:pasteId', + }, + { + source: '/(l|s|link)/:linkId', + destination: '/api/link/:linkId', + }, + { + source: '/(f|v|i)/:fileId', + destination: '/file/:fileId', + }, + { + source: '/p/:pasteId', + destination: '/paste/:pasteId', + }, +]; diff --git a/packages/web/src/types.ts b/packages/web/src/types.ts deleted file mode 100644 index e3d4ce4..0000000 --- a/packages/web/src/types.ts +++ /dev/null @@ -1 +0,0 @@ -export type OneOf = { [key in Exclude]: null } & Pick; diff --git a/packages/web/tailwind.config.cjs b/packages/web/tailwind.config.cjs new file mode 100644 index 0000000..7efdc68 --- /dev/null +++ b/packages/web/tailwind.config.cjs @@ -0,0 +1,78 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./src/**/*.tsx'], + plugins: [ + require('@tailwindcss/typography'), + ({ addBase, addComponents, theme }) => { + addBase({ + h1: { fontSize: theme('fontSize.2xl') }, + h2: { fontSize: theme('fontSize.xl') }, + h3: { fontSize: theme('fontSize.lg') }, + kbd: { + color: theme('colors.primary'), + }, + body: { + color: 'white', + backgroundColor: '#141414', + 'overflow-y': 'overlay', + }, + '#__next': { + height: '100vh', + }, + '::selection': { + color: 'white', + backgroundColor: theme('colors.violet.600'), + }, + }); + + addComponents({ + '.dots': { + backgroundImage: 'radial-gradient(black 1px, transparent 0)', + backgroundSize: '40px 40px', + }, + }); + }, + ], + theme: { + extend: { + colors: { + primary: '#a78bfa', + gray: { + 100: '#f5f5f5', + 200: '#eeeeee', + 300: '#e0e0e0', + 400: '#bdbdbd', + 500: '#9e9e9e', + 600: '#757575', + 700: '#616161', + 800: '#424242', + 900: '#212121', + }, + dark: { + 100: '#121212', + 200: '#1d1d1d', + 300: '#212121', + 400: '#242424', + 500: '#272727', + 600: '#2c2c2c', + 700: '#2d2d2d', + 800: '#333333', + 900: '#353535', + 999: '#373737', + }, + blue: { + 50: '#AACEFF', + 100: '#95C2FF', + 200: '#6CABFF', + 300: '#4494FF', + 400: '#1B7CFF', + 500: '#0067F1', + 600: '#004FB9', + 700: '#003781', + 800: '#001F49', + 900: '#000711', + }, + }, + }, + }, +}; diff --git a/packages/web/tailwind.config.js b/packages/web/tailwind.config.js deleted file mode 100644 index ee28c95..0000000 --- a/packages/web/tailwind.config.js +++ /dev/null @@ -1,6 +0,0 @@ -const pandora = require('@ryanke/pandora/plugin'); - -module.exports = { - content: ['./src/**/*.tsx', pandora.content], - plugins: [require('@tailwindcss/typography'), pandora.plugin], -}; diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json index be69717..cc662e8 100644 --- a/packages/web/tsconfig.json +++ b/packages/web/tsconfig.json @@ -1,42 +1,20 @@ { - "include": [ - "./src/**/*", - "next-env.d.ts" - ], - "exclude": [ - "node_modules/*" - ], "compilerOptions": { - "target": "esnext", - "module": "esnext", - "jsx": "preserve", "strict": true, - "pretty": true, - "noImplicitAny": true, - "alwaysStrict": true, - "noImplicitThis": true, - "outDir": ".next", - "moduleResolution": "node", - "forceConsistentCasingInFileNames": true, - "esModuleInterop": true, - "noUnusedLocals": true, - "sourceMap": true, + "module": "ES2022", + "target": "ES2022", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "types": ["vite/client"], + "jsx": "react-jsx", "skipLibCheck": true, - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "lib": [ - "es2017", - "dom" - ], - "baseUrl": ".", - "typeRoots": [ - "node_modules/@types", - "./types" - ], - "noEmit": true, - "resolveJsonModule": true, - "isolatedModules": true, - "allowJs": true, - "incremental": true + "esModuleInterop": true, + "composite": true, + "plugins": [ + { + "name": "@0no-co/graphqlsp", + "schema": "../api/src/schema.gql" + } + ] } } diff --git a/packages/web/tsup.config.ts b/packages/web/tsup.config.ts new file mode 100644 index 0000000..c7d1984 --- /dev/null +++ b/packages/web/tsup.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig({ + entry: ['dist/server/index.mjs'], + outDir: 'dist', + target: 'node20', + format: 'esm', + sourcemap: false, + minify: true, + noExternal: [/(.*)/], + define: { + 'process.env.STATIC_DIR': "'{{FILE_DIR}}/client'", + 'process.env.NODE_ENV': "'production'", + }, + banner: { + js: "const require = (await import('node:module')).createRequire(import.meta.url);const __filename = (await import('node:url')).fileURLToPath(import.meta.url);const __dirname = (await import('node:path')).dirname(__filename);", + }, +}); diff --git a/packages/web/vite.config.ts b/packages/web/vite.config.ts new file mode 100644 index 0000000..ad51bd3 --- /dev/null +++ b/packages/web/vite.config.ts @@ -0,0 +1,30 @@ +import { preact } from '@preact/preset-vite'; +import { vavite } from 'vavite'; +import ssr from 'vike/plugin'; +import { defineConfig } from 'vite'; + +// todo: https://github.com/dotansimha/graphql-code-generator/issues/9774 +export default defineConfig({ + buildSteps: [ + { name: 'client' }, + { + name: 'server', + config: { + build: { ssr: true }, + }, + }, + ], + optimizeDeps: { + include: ['preact', 'preact/devtools', 'preact/debug', 'preact/jsx-dev-runtime', 'preact/hooks'], + }, + define: { 'process.env.NODE_ENV': '"production"' }, + ssr: { noExternal: ['@apollo/client', 'prism-react-renderer', 'qrcode.react', 'formik', 'react-helmet-async'] }, + plugins: [ + preact(), + ssr({ disableAutoFullBuild: true }), + vavite({ + handlerEntry: '/src/server/index.ts', + serveClientAssetsInDev: true, + }), + ], +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d88faed..f06545a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,16 +10,19 @@ importers: devDependencies: syncpack: specifier: ^12.3.0 - version: 12.3.0 + version: 12.3.0(typescript@5.3.3) turbo: specifier: 1.11.3 version: 1.11.3 + typescript: + specifier: ^5.3.3 + version: 5.3.3 packages/api: dependencies: '@fastify/cookie': specifier: ^9.2.0 - version: 9.2.0 + version: 9.3.1 '@fastify/helmet': specifier: ^11.1.1 version: 11.1.1 @@ -31,7 +34,7 @@ importers: version: 1.5.0 '@mercuriusjs/gateway': specifier: ^2.2.0 - version: 2.2.0 + version: 2.2.0(utf-8-validate@6.0.3) '@mikro-orm/core': specifier: ^5.9.7 version: 5.9.7(@mikro-orm/migrations@5.9.7)(@mikro-orm/postgresql@5.9.7) @@ -40,37 +43,37 @@ importers: version: 5.9.7(@mikro-orm/core@5.9.7)(pg@8.11.3) '@mikro-orm/nestjs': specifier: ^5.2.3 - version: 5.2.3(@mikro-orm/core@5.9.7)(@nestjs/common@10.3.0)(@nestjs/core@10.3.0) + version: 5.2.3(@mikro-orm/core@5.9.7)(@nestjs/common@10.3.1)(@nestjs/core@10.3.1) '@mikro-orm/postgresql': specifier: ^5.9.7 version: 5.9.7(@mikro-orm/core@5.9.7)(@mikro-orm/migrations@5.9.7) '@nestjs/common': specifier: ^10.3.0 - version: 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) + version: 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) '@nestjs/core': specifier: ^10.3.0 - version: 10.3.0(@nestjs/common@10.3.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) + version: 10.3.1(@nestjs/common@10.3.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) '@nestjs/graphql': specifier: ^12.0.11 - version: 12.0.11(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(graphql@16.8.1)(reflect-metadata@0.2.1) + version: 12.0.11(@nestjs/common@10.3.1)(@nestjs/core@10.3.1)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.8.1)(reflect-metadata@0.2.1)(utf-8-validate@6.0.3) '@nestjs/jwt': specifier: ^10.2.0 - version: 10.2.0(@nestjs/common@10.3.0) + version: 10.2.0(@nestjs/common@10.3.1) '@nestjs/mercurius': specifier: ^12.0.11 - version: 12.0.11(@mercuriusjs/gateway@2.2.0)(@nestjs/common@10.3.0)(@nestjs/graphql@12.0.11)(fastify@4.25.2)(graphql@16.8.1)(mercurius@13.3.3) + version: 12.0.11(@mercuriusjs/gateway@2.2.0)(@nestjs/common@10.3.1)(@nestjs/graphql@12.0.11)(fastify@4.25.2)(graphql@16.8.1)(mercurius@13.3.3) '@nestjs/passport': specifier: ^10.0.3 - version: 10.0.3(@nestjs/common@10.3.0)(passport@0.7.0) + version: 10.0.3(@nestjs/common@10.3.1)(passport@0.7.0) '@nestjs/platform-fastify': specifier: ^10.3.0 - version: 10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0) + version: 10.3.1(@nestjs/common@10.3.1)(@nestjs/core@10.3.1) '@nestjs/schedule': specifier: ^4.0.0 - version: 4.0.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(reflect-metadata@0.2.1) + version: 4.0.0(@nestjs/common@10.3.1)(@nestjs/core@10.3.1)(reflect-metadata@0.2.1) '@ryanke/venera': specifier: ^1.0.5 - version: 1.0.5 + version: 1.1.0 bcryptjs: specifier: ^2.4.3 version: 2.4.3 @@ -79,7 +82,7 @@ importers: version: 0.5.1 class-validator: specifier: ^0.14.0 - version: 0.14.0 + version: 0.14.1 fastify: specifier: ^4.25.2 version: 4.25.2 @@ -91,7 +94,7 @@ importers: version: 16.8.1 mercurius: specifier: ^13.3.3 - version: 13.3.3(graphql@16.8.1) + version: 13.3.3(graphql@16.8.1)(utf-8-validate@6.0.3) mime-types: specifier: ^2.1.35 version: 2.1.35 @@ -112,10 +115,13 @@ importers: version: 7.8.1 sharp: specifier: ^0.33.1 - version: 0.33.1 + version: 0.33.2 stream-size: specifier: ^0.0.6 version: 0.0.6 + utf-8-validate: + specifier: ^6.0.3 + version: 6.0.3 devDependencies: '@atlasbot/configs': specifier: ^10.5.15 @@ -125,7 +131,7 @@ importers: version: 5.9.7(@mikro-orm/migrations@5.9.7)(@mikro-orm/postgresql@5.9.7)(pg@8.11.3) '@swc/core': specifier: ^1.3.102 - version: 1.3.102 + version: 1.3.106 '@types/bcryptjs': specifier: ^2.4.6 version: 2.4.6 @@ -140,7 +146,7 @@ importers: version: 2.1.24 '@types/luxon': specifier: ^3.4.0 - version: 3.4.0 + version: 3.4.2 '@types/mime-types': specifier: ^2.1.4 version: 2.1.4 @@ -149,13 +155,16 @@ importers: version: 0.7.34 '@types/node': specifier: ^20.10.6 - version: 20.10.6 + version: 20.11.7 '@types/nodemailer': specifier: ^6.4.14 version: 6.4.14 '@types/passport-jwt': specifier: ^4.0.0 - version: 4.0.0 + version: 4.0.1 + '@types/utf-8-validate': + specifier: ^5.0.2 + version: 5.0.2 bytes: specifier: ^3.1.2 version: 3.1.2 @@ -200,16 +209,16 @@ importers: version: 0.2.1 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.3.102)(@types/node@20.10.6)(typescript@5.3.3) + version: 10.9.2(@swc/core@1.3.106)(@types/node@20.11.7)(typescript@5.3.3) tsup: specifier: ^8.0.1 - version: 8.0.1(@swc/core@1.3.102)(ts-node@10.9.2)(typescript@5.3.3) + version: 8.0.1(@swc/core@1.3.106)(ts-node@10.9.2)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 vitest: specifier: ^1.1.3 - version: 1.1.3(@types/node@20.10.6) + version: 1.2.1(@types/node@20.11.7) zod: specifier: ^3.22.4 version: 3.22.4 @@ -218,22 +227,58 @@ importers: version: 2.1.0(zod@3.22.4) packages/web: - dependencies: + devDependencies: + '@0no-co/graphqlsp': + specifier: ^1.3.0 + version: 1.3.0 '@apollo/client': - specifier: ^3.8.8 - version: 3.8.8(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0) - '@headlessui/react': - specifier: ^1.7.17 - version: 1.7.17(react-dom@18.2.0)(react@18.2.0) - '@ryanke/pandora': - specifier: ^0.0.9 - version: 0.0.9(react@18.2.0)(tailwindcss@3.4.1) + specifier: ^3.8.9 + version: 3.8.10(@preact/compat@17.1.2)(@preact/compat@17.1.2)(graphql@16.8.1) + '@atlasbot/configs': + specifier: ^10.5.15 + version: 10.5.15(typescript@5.3.3) + '@fastify/early-hints': + specifier: ^1.0.1 + version: 1.0.1 + '@fastify/http-proxy': + specifier: ^9.3.0 + version: 9.3.0 + '@graphql-codegen/cli': + specifier: ^5.0.0 + version: 5.0.0(@parcel/watcher@2.4.0)(@types/node@20.11.7)(graphql@16.8.1)(typescript@5.3.3) + '@graphql-codegen/client-preset': + specifier: ^4.1.0 + version: 4.1.0(graphql@16.8.1) + '@graphql-codegen/introspection': + specifier: ^4.0.0 + version: 4.0.0(graphql@16.8.1) + '@graphql-typed-document-node/core': + specifier: ^3.2.0 + version: 3.2.0(graphql@16.8.1) + '@parcel/watcher': + specifier: ^2.3.0 + version: 2.4.0 + '@preact/preset-vite': + specifier: ^2.8.1 + version: 2.8.1(@babel/core@7.23.9)(preact@10.19.3)(vite@5.0.12) + '@radix-ui/react-dropdown-menu': + specifier: ^2.0.6 + version: 2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.48) '@tailwindcss/typography': specifier: ^0.5.10 version: 0.5.10(tailwindcss@3.4.1) + '@types/node': + specifier: ^20.10.6 + version: 20.11.7 + '@types/react': + specifier: ^18.2.47 + version: 18.2.48 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.2.18 autoprefixer: specifier: ^10.4.16 - version: 10.4.16(postcss@8.4.33) + version: 10.4.17(postcss@8.4.33) clsx: specifier: ^2.1.0 version: 2.1.0 @@ -246,12 +291,12 @@ importers: dayjs: specifier: ^1.11.10 version: 1.11.10 - deepmerge: - specifier: ^4.3.1 - version: 4.3.1 + fastify: + specifier: ^4.25.2 + version: 4.25.2 formik: specifier: ^2.4.5 - version: 2.4.5(react@18.2.0) + version: 2.4.5 generate-avatar: specifier: 1.4.10 version: 1.4.10 @@ -261,82 +306,88 @@ importers: http-status-codes: specifier: ^2.3.0 version: 2.3.0 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - next: - specifier: 14.0.4 - version: 14.0.4(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0) + mime: + specifier: ^4.0.1 + version: 4.0.1 + nanoid: + specifier: ^5.0.4 + version: 5.0.4 + path-to-regexp: + specifier: ^6.2.1 + version: 6.2.1 postcss: specifier: ^8.4.33 version: 8.4.33 + preact: + specifier: ^10.19.3 + version: 10.19.3 + preact-render-to-string: + specifier: ^6.3.1 + version: 6.3.1(preact@10.19.3) + prettier: + specifier: ^3.1.1 + version: 3.2.4 prism-react-renderer: specifier: ^2.3.1 - version: 2.3.1(react@18.2.0) + version: 2.3.1 qrcode.react: specifier: ^3.1.0 - version: 3.1.0(react@18.2.0) + version: 3.1.0 react: - specifier: 18.2.0 - version: 18.2.0 + specifier: npm:@preact/compat@^17.1.2 + version: /@preact/compat@17.1.2(preact@10.19.3) react-dom: - specifier: ^18.1.0 - version: 18.2.0(react@18.2.0) - react-feather: - specifier: ^2.0.9 - version: 2.0.10(react@18.2.0) + specifier: npm:@preact/compat@^17.1.2 + version: /@preact/compat@17.1.2(preact@10.19.3) + react-helmet-async: + specifier: ^2.0.4 + version: 2.0.4 + react-icons: + specifier: ^5.0.1 + version: 5.0.1 react-markdown: specifier: ^9.0.1 - version: 9.0.1(@types/react@18.2.47)(react@18.2.0) + version: 9.0.1(@types/react@18.2.48) + readdirp: + specifier: ^3.6.0 + version: 3.6.0 remark-gfm: specifier: ^4.0.0 version: 4.0.0 - swr: - specifier: ^2.2.4 - version: 2.2.4(react@18.2.0) tailwindcss: specifier: ^3.4.1 version: 3.4.1 - yup: - specifier: ^1.3.3 - version: 1.3.3 - devDependencies: - '@atlasbot/configs': - specifier: ^10.5.15 - version: 10.5.15(typescript@5.3.3) - '@graphql-codegen/cli': - specifier: ^5.0.0 - version: 5.0.0(@parcel/watcher@2.3.0)(@types/node@20.10.6)(graphql@16.8.1) - '@graphql-codegen/typescript': - specifier: 4.0.1 - version: 4.0.1(graphql@16.8.1) - '@graphql-codegen/typescript-operations': - specifier: 4.0.1 - version: 4.0.1(graphql@16.8.1) - '@graphql-codegen/typescript-react-apollo': - specifier: 4.1.0 - version: 4.1.0(graphql-tag@2.12.6)(graphql@16.8.1) - '@parcel/watcher': - specifier: ^2.3.0 - version: 2.3.0 - '@types/lodash': - specifier: ^4.14.202 - version: 4.14.202 - '@types/node': - specifier: ^20.10.6 - version: 20.10.6 - '@types/react': - specifier: ^18.2.47 - version: 18.2.47 - prettier: - specifier: ^3.1.1 - version: 3.1.1 + tsup: + specifier: ^8.0.1 + version: 8.0.1(postcss@8.4.33)(typescript@5.3.3) typescript: specifier: ^5.3.3 version: 5.3.3 + vavite: + specifier: ^4.0.1 + version: 4.0.2(vite@5.0.12) + vike: + specifier: ^0.4.156 + version: 0.4.160(vite@5.0.12) + vite: + specifier: ^5.0.11 + version: 5.0.12(@types/node@20.11.7) + yup: + specifier: ^1.3.3 + version: 1.3.3 + + packages/web/dist/server: {} packages: + /@0no-co/graphqlsp@1.3.0: + resolution: {integrity: sha512-eL7ZAvAmncEgAIjVgGcyKsrpIOmJ4tQfWxTDVPKxiIgRdRA56K+qjW2HtGdxE/WlufnNpbwcizU9D2HddYg1Zg==} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: true + /@aashutoshrathi/word-wrap@1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} @@ -345,22 +396,23 @@ packages: /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - dev: false + dev: true /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 + dev: true - /@apollo/client@3.8.8(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-omjd9ryGDkadZrKW6l5ktUAdS4SNaFOccYQ4ZST0HLW83y8kQaSZOCTNlpkoBUK8cv6qP8+AxOKwLm2ho8qQ+Q==} + /@apollo/client@3.8.10(@preact/compat@17.1.2)(@preact/compat@17.1.2)(graphql@16.8.1): + resolution: {integrity: sha512-p/22RZ8ehHyvySnC20EHPPe0gdu8Xp6ZCiXOfdEe1ZORw5cUteD/TLc66tfKv8qu8NLIfbiWoa+6s70XnKvxqg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 graphql-ws: ^5.5.5 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: '*' + react-dom: '*' subscriptions-transport-ws: ^0.9.0 || ^0.11.0 peerDependenciesMeta: graphql-ws: @@ -380,14 +432,14 @@ packages: hoist-non-react-statics: 3.3.2 optimism: 0.18.0 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: /@preact/compat@17.1.2(preact@10.19.3) + react-dom: /@preact/compat@17.1.2(preact@10.19.3) response-iterator: 0.2.6 symbol-observable: 4.0.0 ts-invariant: 0.10.3 tslib: 2.6.2 zen-observable-ts: 1.2.5 - dev: false + dev: true /@ardatan/relay-compiler@12.0.0(graphql@16.8.1): resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} @@ -395,16 +447,16 @@ packages: peerDependencies: graphql: '*' dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/generator': 7.23.6 - '@babel/parser': 7.23.6 - '@babel/runtime': 7.23.7 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 - babel-preset-fbjs: 3.4.0(@babel/core@7.23.7) + '@babel/parser': 7.23.9 + '@babel/runtime': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + babel-preset-fbjs: 3.4.0(@babel/core@7.23.9) chalk: 4.1.2 fb-watchman: 2.0.2 - fbjs: 3.0.4 + fbjs: 3.0.5 glob: 7.2.3 graphql: 16.8.1 immutable: 3.7.6 @@ -432,12 +484,12 @@ packages: peerDependencies: typescript: '>=4.3.5 <5.4.0' dependencies: - '@next/eslint-plugin-next': 14.0.4 - '@typescript-eslint/eslint-plugin': 6.18.0(@typescript-eslint/parser@6.18.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3) + '@next/eslint-plugin-next': 14.1.0 + '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 eslint-plugin-es: 4.1.0(eslint@8.56.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.0)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) eslint-plugin-react: 7.33.2(eslint@8.56.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) @@ -456,25 +508,27 @@ packages: dependencies: '@babel/highlight': 7.23.4 chalk: 2.4.2 + dev: true /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} + dev: true - /@babel/core@7.23.7: - resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} + /@babel/core@7.23.9: + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 '@babel/generator': 7.23.6 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helpers': 7.23.7 - '@babel/parser': 7.23.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -482,21 +536,23 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true /@babel/generator@7.23.6: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 jsesc: 2.5.2 + dev: true - /@babel/helper-annotate-as-pure@7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: true /@babel/helper-compilation-targets@7.23.6: @@ -508,74 +564,79 @@ packages: browserslist: 4.22.2 lru-cache: 5.1.1 semver: 6.3.1 + dev: true - /@babel/helper-create-class-features-plugin@7.21.4(@babel/core@7.23.7): - resolution: {integrity: sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==} + /@babel/helper-create-class-features-plugin@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - transitivePeerDependencies: - - supports-color + semver: 6.3.1 dev: true /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 + dev: true - /@babel/helper-member-expression-to-functions@7.21.0: - resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 + dev: true - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + dev: true - /@babel/helper-optimise-call-expression@7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -583,60 +644,64 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-replace-supers@7.20.7: - resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: + '@babel/core': 7.23.9 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 - transitivePeerDependencies: - - supports-color + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 dev: true /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 + dev: true - /@babel/helper-skip-transparent-expression-wrappers@7.20.0: - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 + dev: true /@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/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} + dev: true - /@babel/helpers@7.23.7: - resolution: {integrity: sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==} + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color + dev: true /@babel/highlight@7.23.4: resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} @@ -645,29 +710,29 @@ packages: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 + dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.7): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.21.4(@babel/core@7.23.7) + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.7): + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. @@ -675,301 +740,309 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.23.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow@7.21.4(@babel/core@7.23.7): - resolution: {integrity: sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==} + /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.7): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.23.7): - resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.23.7): - resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.23.7): - resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-classes@7.21.0(@babel/core@7.23.7): - resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9): + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 - '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.23.7): - resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.15 + '@babel/template': 7.23.9 dev: true - /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.23.7): - resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.23.7): - resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} + /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.21.4(@babel/core@7.23.7) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) dev: true - /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.23.7): - resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.23.7): - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.23.7): - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.23.7): - resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.20.7 - transitivePeerDependencies: - - supports-color + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) dev: true - /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.23.7): - resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx@7.21.0(@babel/core@7.23.7): - resolution: {integrity: sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==} + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.9): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/core': 7.23.9 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.23.7) - '@babel/types': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/types': 7.23.9 dev: true - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.20.7(@babel/core@7.23.7): - resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.23.7): - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/runtime@7.23.7: - resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 + dev: true - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + dev: true - /@babel/traverse@7.23.7: - resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} + /@babel/traverse@7.23.9: + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 @@ -978,20 +1051,44 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} 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 + + /@brillout/import@0.2.3: + resolution: {integrity: sha512-1T8WlD75eeFSMrptGy8jiLHmfHgMmSjWvLOIUvHmSVZt+6k0eQqYUoK4KbmE4T9pVLIfxvZSOm2D68VEqKRHRw==} + dev: true + + /@brillout/json-serializer@0.5.8: + resolution: {integrity: sha512-vEuXw30ok+mJfJutOxXKBb4lBJ0HymA7lev9PcYK6W/hzjhCTPk9Bdk85HrcNcKZWRQiwoWtw0F2Di4TRJ7ssQ==} + dev: true + + /@brillout/picocolors@1.0.10: + resolution: {integrity: sha512-dh+JJlsBf3QYX+91Ezma8RLKNOjGDoBBmORv/NzRpQuasdyzwQCMXGGjsDu12ZhGz92TqQbL9pv79rvbheI21A==} + dev: true + + /@brillout/require-shim@0.1.2: + resolution: {integrity: sha512-3I4LRHnVZXoSAsEoni5mosq9l6eiJED58d9V954W4CIZ88AUfYBanWGBGbJG3NztaRTpFHEA6wB3Hn93BmmJdg==} + dev: true + + /@brillout/vite-plugin-server-entry@0.4.3: + resolution: {integrity: sha512-JDWFZOsSJfDo9511r7OJDeNON7x5mwIGNZCi1DQWaVuYK2cs9J/eD3Jwypg4M1ex9iAb/WvI+aSAEfsVGmNeMQ==} + dependencies: + '@brillout/import': 0.2.3 + dev: true /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -1010,16 +1107,16 @@ packages: fast-check: 3.15.0 dev: true - /@emnapi/runtime@0.44.0: - resolution: {integrity: sha512-ZX/etZEZw8DR7zAB1eVQT40lNo0jeqpb6dCgOvctB6FIQ5PoXfMuNY8+ayQfu8tNQbAB8gQWSSJupR8NxeiZXw==} + /@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.11: - resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -1027,8 +1124,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.11: - resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1036,8 +1133,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.11: - resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -1045,8 +1142,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.11: - resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1054,8 +1151,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.11: - resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1063,8 +1160,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.11: - resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1072,8 +1169,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.11: - resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1081,8 +1178,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.11: - resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1090,8 +1187,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.11: - resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1099,8 +1196,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.11: - resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1108,8 +1205,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.11: - resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1117,8 +1214,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.11: - resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1126,8 +1223,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.11: - resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1135,8 +1232,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.11: - resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1144,8 +1241,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.11: - resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1153,8 +1250,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.11: - resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1162,8 +1259,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.11: - resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1171,8 +1268,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.11: - resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1180,8 +1277,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.11: - resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1189,8 +1286,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.11: - resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1198,8 +1295,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.11: - resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1207,8 +1304,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.11: - resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1216,8 +1313,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.11: - resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1248,7 +1345,7 @@ packages: debug: 4.3.4 espree: 9.6.1 globals: 13.24.0 - ignore: 5.2.4 + ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1273,7 +1370,6 @@ packages: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) fast-uri: 2.3.0 - dev: false /@fastify/busboy@1.2.1: resolution: {integrity: sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==} @@ -1285,35 +1381,38 @@ packages: /@fastify/busboy@2.1.0: resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} - dev: false - /@fastify/cookie@9.2.0: - resolution: {integrity: sha512-fkg1yjjQRHPFAxSHeLC8CqYuNzvR6Lwlj/KjrzQcGjNBK+K82nW+UfCjfN71g1GkoVoc1GTOgIWkFJpcMfMkHQ==} + /@fastify/cookie@9.3.1: + resolution: {integrity: sha512-h1NAEhB266+ZbZ0e9qUE6NnNR07i7DnNXWG9VbbZ8uC6O/hxHpl+Zoe5sw1yfdZ2U6XhToUGDnzQtWJdCaPwfg==} dependencies: cookie-signature: 1.2.1 fastify-plugin: 4.5.1 dev: false - /@fastify/cors@8.4.2: - resolution: {integrity: sha512-IVynbcPG9eWiJ0P/A1B+KynmiU/yTYbu3ooBUSIeHfca/N1XLb9nIJVCws+YTr2q63MA8Y6QLeXQczEv4npM9g==} + /@fastify/cors@8.5.0: + resolution: {integrity: sha512-/oZ1QSb02XjP0IK1U0IXktEsw/dUBTxJOW7IpIeO8c/tNalw/KjoNSJv1Sf6eqoBPO+TDGkifq6ynFK3v68HFQ==} dependencies: fastify-plugin: 4.5.1 - mnemonist: 0.39.5 + mnemonist: 0.39.6 dev: false /@fastify/deepmerge@1.3.0: resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} - dev: false + + /@fastify/early-hints@1.0.1: + resolution: {integrity: sha512-wtxJhz3cEf87MpIQzpxwu0g/ShwIr3/wDI8a3KUBDbpQkMjYNX9i+RM5JyM7m+WJGSSl3OvwxAsUp6br7Mk5lA==} + dependencies: + fastify-plugin: 4.5.1 + process-warning: 2.3.2 + dev: true /@fastify/error@3.4.1: resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==} - dev: false /@fastify/fast-json-stringify-compiler@4.3.0: resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} dependencies: fast-json-stringify: 5.10.0 - dev: false /@fastify/formbody@7.4.0: resolution: {integrity: sha512-H3C6h1GN56/SMrZS8N2vCT2cZr7mIHzBHzOBa5OPpjfB/D6FzP9mMpE02ZzrFX0ANeh0BAJdoXKOF2e7IbV+Og==} @@ -1329,6 +1428,18 @@ packages: helmet: 7.1.0 dev: false + /@fastify/http-proxy@9.3.0: + resolution: {integrity: sha512-fQkdgwco8q7eI2PQA8lH++y3Q+hNlIByBYsphl+r4FKRbmrU7ey4WOA/CA9tBhe4oEojGpa3eTU4jXvqf2DBuQ==} + dependencies: + '@fastify/reply-from': 9.7.0 + fast-querystring: 1.1.2 + fastify-plugin: 4.5.1 + ws: 8.16.0(utf-8-validate@6.0.3) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /@fastify/middie@8.3.0: resolution: {integrity: sha512-h+zBxCzMlkEkh4fM7pZaSGzqS7P9M0Z6rXnWPdUEPfe7x1BCj++wEk/pQ5jpyYY4pF8AknFqb77n7uwh8HdxEA==} dependencies: @@ -1349,6 +1460,19 @@ packages: stream-wormhole: 1.1.0 dev: false + /@fastify/reply-from@9.7.0: + resolution: {integrity: sha512-/F1QBl3FGlTqStjmiuoLRDchVxP967TZh6FZPwQteWhdLsDec8mqSACE+cRzw6qHUj3v9hfdd7JNgmb++fyFhQ==} + dependencies: + '@fastify/error': 3.4.1 + end-of-stream: 1.4.4 + fast-content-type-parse: 1.1.0 + fast-querystring: 1.1.2 + fastify-plugin: 4.5.1 + pump: 3.0.0 + tiny-lru: 11.2.5 + undici: 5.28.2 + dev: true + /@fastify/send@2.1.0: resolution: {integrity: sha512-yNYiY6sDkexoJR0D8IDy3aRP3+L4wdqCpvx5WP+VtEU58sn7USmKynBzDQex5X42Zzvw2gNzzYgP90UfWShLFA==} dependencies: @@ -1370,17 +1494,50 @@ packages: p-limit: 3.1.0 dev: false - /@fastify/websocket@8.3.1: + /@fastify/websocket@8.3.1(utf-8-validate@6.0.3): resolution: {integrity: sha512-hsQYHHJme/kvP3ZS4v/WMUznPBVeeQHHwAoMy1LiN6m/HuPfbdXq1MBJ4Nt8qX1YI+eVbog4MnOsU7MTozkwYA==} dependencies: fastify-plugin: 4.5.1 - ws: 8.16.0 + ws: 8.16.0(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate dev: false - /@graphql-codegen/cli@5.0.0(@parcel/watcher@2.3.0)(@types/node@20.10.6)(graphql@16.8.1): + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + dependencies: + '@floating-ui/utils': 0.2.1 + dev: true + + /@floating-ui/dom@1.6.0: + resolution: {integrity: sha512-SZ0BEXzsaaS6THZfZJUcAobbZTD+MvfGM42bxgeg0Tnkp4/an/avqwAXiVLsFtIBZtfsx3Ymvwx0+KnnhdA/9g==} + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 + dev: true + + /@floating-ui/react-dom@2.0.7: + resolution: {integrity: sha512-B5GJxKUyPcGsvE1vua+Abvw0t6zVMyTbtG+Jk7BoI4hfc5Ahv50dstRIAn0nS0274kR9gnKwxIXyGA8EzBZJrA==} + dependencies: + '@floating-ui/dom': 1.6.0 + dev: true + + /@floating-ui/utils@0.2.1: + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + dev: true + + /@graphql-codegen/add@5.0.0(graphql@16.8.1): + resolution: {integrity: sha512-ynWDOsK2yxtFHwcJTB9shoSkUd7YXd6ZE57f0nk7W5cu/nAgxZZpEsnTPEpZB/Mjf14YRGe2uJHQ7AfElHjqUQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.5.3 + dev: true + + /@graphql-codegen/cli@5.0.0(@parcel/watcher@2.4.0)(@types/node@20.11.7)(graphql@16.8.1)(typescript@5.3.3): resolution: {integrity: sha512-A7J7+be/a6e+/ul2KI5sfJlpoqeqwX8EzktaKCeduyVKgOLA6W5t+NUGf6QumBDXU8PEOqXk3o3F+RAwCWOiqA==} hasBin: true peerDependencies: @@ -1391,28 +1548,28 @@ packages: optional: true dependencies: '@babel/generator': 7.23.6 - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 '@graphql-codegen/core': 4.0.0(graphql@16.8.1) '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) '@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1) - '@graphql-tools/code-file-loader': 8.0.2(graphql@16.8.1) - '@graphql-tools/git-loader': 8.0.2(graphql@16.8.1) - '@graphql-tools/github-loader': 8.0.0(@types/node@20.10.6)(graphql@16.8.1) + '@graphql-tools/code-file-loader': 8.1.0(graphql@16.8.1) + '@graphql-tools/git-loader': 8.0.4(graphql@16.8.1) + '@graphql-tools/github-loader': 8.0.0(@types/node@20.11.7)(graphql@16.8.1) '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) - '@graphql-tools/load': 8.0.0(graphql@16.8.1) - '@graphql-tools/prisma-loader': 8.0.1(@types/node@20.10.6)(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.0(@types/node@20.10.6)(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - '@parcel/watcher': 2.3.0 + '@graphql-tools/load': 8.0.1(graphql@16.8.1) + '@graphql-tools/prisma-loader': 8.0.2(@types/node@20.11.7)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.7)(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + '@parcel/watcher': 2.4.0 '@whatwg-node/fetch': 0.8.8 chalk: 4.1.2 - cosmiconfig: 8.2.0 + cosmiconfig: 8.3.6(typescript@5.3.3) debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.8.1 - graphql-config: 5.0.2(@types/node@20.10.6)(graphql@16.8.1) + graphql-config: 5.0.3(@types/node@20.11.7)(graphql@16.8.1)(typescript@5.3.3) inquirer: 8.2.6 is-glob: 4.0.3 jiti: 1.21.0 @@ -1433,47 +1590,74 @@ packages: - encoding - enquirer - supports-color + - typescript - utf-8-validate dev: true + /@graphql-codegen/client-preset@4.1.0(graphql@16.8.1): + resolution: {integrity: sha512-/3Ymb/fjxIF1+HGmaI1YwSZbWsrZAWMSQjh3dU425eBjctjsVQ6gzGRr+l/gE5F1mtmCf+vlbTAT03heAc/QIw==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.23.9 + '@graphql-codegen/add': 5.0.0(graphql@16.8.1) + '@graphql-codegen/gql-tag-operations': 4.0.1(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/typed-document-node': 5.0.1(graphql@16.8.1) + '@graphql-codegen/typescript': 4.0.1(graphql@16.8.1) + '@graphql-codegen/typescript-operations': 4.0.1(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + '@graphql-tools/documents': 1.0.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + /@graphql-codegen/core@4.0.0(graphql@16.8.1): resolution: {integrity: sha512-JAGRn49lEtSsZVxeIlFVIRxts2lWObR+OQo7V2LHDJ7ohYYw3ilv7nJ8pf8P4GTg/w6ptcYdSdVVdkI8kUHB/Q==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) - '@graphql-tools/schema': 10.0.0(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 tslib: 2.5.3 dev: true - /@graphql-codegen/plugin-helpers@2.7.2(graphql@16.8.1): - resolution: {integrity: sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==} + /@graphql-codegen/gql-tag-operations@4.0.1(graphql@16.8.1): + resolution: {integrity: sha512-qF6wIbBzW8BNT+wiVsBxrYOs2oYcsxQ7mRvCpfEI3HnNZMAST/uX76W8MqFEJvj4mw7NIDv7xYJAcAZIWM5LWw==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-tools/utils': 8.13.1(graphql@16.8.1) - change-case-all: 1.0.14 - common-tags: 1.8.2 + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + auto-bind: 4.0.0 graphql: 16.8.1 - import-from: 4.0.0 - lodash: 4.17.21 - tslib: 2.4.1 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color dev: true - /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.8.1): - resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} + /@graphql-codegen/introspection@4.0.0(graphql@16.8.1): + resolution: {integrity: sha512-t9g3AkK99dfHblMWtG4ynUM9+A7JrWq5110zSpNV2wlSnv0+bRKagDW8gozwgXfR5i1IIG8QDjJZ6VgXQVqCZw==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - change-case-all: 1.0.15 - common-tags: 1.8.2 + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) graphql: 16.8.1 - import-from: 4.0.0 - lodash: 4.17.21 - tslib: 2.4.1 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color dev: true /@graphql-codegen/plugin-helpers@5.0.1(graphql@16.8.1): @@ -1481,7 +1665,7 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) change-case-all: 1.0.15 common-tags: 1.8.2 graphql: 16.8.1 @@ -1496,11 +1680,27 @@ packages: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 tslib: 2.5.3 dev: true + /@graphql-codegen/typed-document-node@5.0.1(graphql@16.8.1): + resolution: {integrity: sha512-VFkhCuJnkgtbbgzoCAwTdJe2G1H6sd3LfCrDqWUrQe53y2ukfSb5Ov1PhAIkCBStKCMQBUY9YgGz9GKR40qQ8g==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + graphql: 16.8.1 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + /@graphql-codegen/typescript-operations@4.0.1(graphql@16.8.1): resolution: {integrity: sha512-GpUWWdBVUec/Zqo23aFLBMrXYxN2irypHqDcKjN78JclDPdreasAEPcIpMfqf4MClvpmvDLy4ql+djVAwmkjbw==} peerDependencies: @@ -1517,25 +1717,6 @@ packages: - supports-color dev: true - /@graphql-codegen/typescript-react-apollo@4.1.0(graphql-tag@2.12.6)(graphql@16.8.1): - resolution: {integrity: sha512-G7l4ECoilGnW1zJeqgsFQEVup9ME3w3811ZxHP5yvTra3ZNsbZO4WbYBOPKyS5uc4swsTAxj70a28hNF7kdVcw==} - engines: {node: '>= 16.0.0'} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql-tag: ^2.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 2.13.1(graphql@16.8.1) - auto-bind: 4.0.0 - change-case-all: 1.0.15 - graphql: 16.8.1 - graphql-tag: 2.12.6(graphql@16.8.1) - tslib: 2.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@graphql-codegen/typescript@4.0.1(graphql@16.8.1): resolution: {integrity: sha512-3YziQ21dCVdnHb+Us1uDb3pA6eG5Chjv0uTK+bt9dXeMlwYBU8MbtzvQTo4qvzWVC1AxSOKj0rgfNu1xCXqJyA==} peerDependencies: @@ -1552,27 +1733,6 @@ packages: - supports-color dev: true - /@graphql-codegen/visitor-plugin-common@2.13.1(graphql@16.8.1): - resolution: {integrity: sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 2.7.2(graphql@16.8.1) - '@graphql-tools/optimize': 1.4.0(graphql@16.8.1) - '@graphql-tools/relay-operation-optimizer': 6.5.18(graphql@16.8.1) - '@graphql-tools/utils': 8.13.1(graphql@16.8.1) - auto-bind: 4.0.0 - change-case-all: 1.0.14 - dependency-graph: 0.11.0 - graphql: 16.8.1 - graphql-tag: 2.12.6(graphql@16.8.1) - parse-filepath: 1.0.2 - tslib: 2.4.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@graphql-codegen/visitor-plugin-common@4.0.1(graphql@16.8.1): resolution: {integrity: sha512-Bi/1z0nHg4QMsAqAJhds+ForyLtk7A3HQOlkrZNm3xEkY7lcBzPtiOTLBtvziwopBsXUxqeSwVjOOFPLS5Yw1Q==} peerDependencies: @@ -1581,7 +1741,7 @@ packages: '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) '@graphql-tools/optimize': 2.0.0(graphql@16.8.1) '@graphql-tools/relay-operation-optimizer': 7.0.0(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 @@ -1601,8 +1761,8 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@ardatan/sync-fetch': 0.0.1 - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - '@whatwg-node/fetch': 0.9.9 + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + '@whatwg-node/fetch': 0.9.16 graphql: 16.8.1 tslib: 2.6.2 transitivePeerDependencies: @@ -1615,21 +1775,21 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) dataloader: 2.2.2 graphql: 16.8.1 tslib: 2.6.2 value-or-promise: 1.0.12 dev: true - /@graphql-tools/code-file-loader@8.0.2(graphql@16.8.1): - resolution: {integrity: sha512-AKNpkElUL2cWocYpC4DzNEpo6qJw8Lp+L3bKQ/mIfmbsQxgLz5uve6zHBMhDaFPdlwfIox41N3iUSvi77t9e8A==} + /@graphql-tools/code-file-loader@8.1.0(graphql@16.8.1): + resolution: {integrity: sha512-HKWW/B2z15ves8N9+xnVbGmFEVGyHEK80a4ghrjeTa6nwNZaKDVfq5CoYFfF0xpfjtH6gOVUExo2XCOEz4B8mQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/graphql-tag-pluck': 8.0.2(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/graphql-tag-pluck': 8.2.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) globby: 11.1.0 graphql: 16.8.1 tslib: 2.6.2 @@ -1638,69 +1798,80 @@ packages: - supports-color dev: true - /@graphql-tools/delegate@10.0.2(graphql@16.8.1): - resolution: {integrity: sha512-ZU7VnR2xFgHrGnsuw6+nRJkcvSucn7w5ooxb/lTKlVfrNJfTwJevNcNKMnbtPUSajG3+CaFym/nU6v44GXCmNw==} + /@graphql-tools/delegate@10.0.3(graphql@16.8.1): + resolution: {integrity: sha512-Jor9oazZ07zuWkykD3OOhT/2XD74Zm6Ar0ENZMk75MDD51wB2UWUIMljtHxbJhV5A6UBC2v8x6iY0xdCGiIlyw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/batch-execute': 9.0.2(graphql@16.8.1) '@graphql-tools/executor': 1.2.0(graphql@16.8.1) - '@graphql-tools/schema': 10.0.0(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) dataloader: 2.2.2 graphql: 16.8.1 tslib: 2.6.2 dev: true + /@graphql-tools/documents@1.0.0(graphql@16.8.1): + resolution: {integrity: sha512-rHGjX1vg/nZ2DKqRGfDPNC55CWZBMldEVcH+91BThRa6JeT80NqXknffLLEZLRUxyikCfkwMsk6xR3UNMqG0Rg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.8.1 + lodash.sortby: 4.7.0 + tslib: 2.5.3 + dev: true + /@graphql-tools/executor-graphql-ws@1.1.0(graphql@16.8.1): resolution: {integrity: sha512-yM67SzwE8rYRpm4z4AuGtABlOp9mXXVy6sxXnTJRoYIdZrmDbKVfIY+CpZUJCqS0FX3xf2+GoHlsj7Qswaxgcg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - '@types/ws': 8.5.5 + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + '@types/ws': 8.5.10 graphql: 16.8.1 graphql-ws: 5.14.3(graphql@16.8.1) isomorphic-ws: 5.0.0(ws@8.16.0) tslib: 2.6.2 - ws: 8.16.0 + ws: 8.16.0(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /@graphql-tools/executor-http@1.0.2(@types/node@20.10.6)(graphql@16.8.1): - resolution: {integrity: sha512-JKTB4E3kdQM2/1NEcyrVPyQ8057ZVthCV5dFJiKktqY9IdmF00M8gupFcW3jlbM/Udn78ickeUBsUzA3EouqpA==} + /@graphql-tools/executor-http@1.0.7(@types/node@20.11.7)(graphql@16.8.1): + resolution: {integrity: sha512-/MoRYzQS50Tz5mxRfq3ZmeZ2SOins9wGZAGetsJ55F3PxL0PmHdSGlCq12KzffZDbwHV5YMlwigBsSGWq4y9Iw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - '@repeaterjs/repeater': 3.0.4 - '@whatwg-node/fetch': 0.9.9 + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + '@repeaterjs/repeater': 3.0.5 + '@whatwg-node/fetch': 0.9.16 extract-files: 11.0.0 graphql: 16.8.1 - meros: 1.3.0(@types/node@20.10.6) + meros: 1.3.0(@types/node@20.11.7) tslib: 2.6.2 value-or-promise: 1.0.12 transitivePeerDependencies: - '@types/node' dev: true - /@graphql-tools/executor-legacy-ws@1.0.1(graphql@16.8.1): - resolution: {integrity: sha512-PQrTJ+ncHMEQspBARc2lhwiQFfRAX/z/CsOdZTFjIljOHgRWGAA1DAx7pEN0j6PflbLCfZ3NensNq2jCBwF46w==} + /@graphql-tools/executor-legacy-ws@1.0.5(graphql@16.8.1): + resolution: {integrity: sha512-w54AZ7zkNuvpyV09FH+eGHnnAmaxhBVHg4Yh2ICcsMfRg0brkLt77PlbjBuxZ4HY8XZnKJaYWf+tKazQZtkQtg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - '@types/ws': 8.5.5 + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + '@types/ws': 8.5.10 graphql: 16.8.1 - isomorphic-ws: 5.0.0(ws@8.13.0) + isomorphic-ws: 5.0.0(ws@8.16.0) tslib: 2.6.2 - ws: 8.13.0 + ws: 8.16.0(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -1712,22 +1883,22 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) - '@repeaterjs/repeater': 3.0.4 + '@repeaterjs/repeater': 3.0.5 graphql: 16.8.1 tslib: 2.6.2 value-or-promise: 1.0.12 dev: true - /@graphql-tools/git-loader@8.0.2(graphql@16.8.1): - resolution: {integrity: sha512-AuCB0nlPvsHh8u42zRZdlD/ZMaWP9A44yAkQUVCZir1E/LG63fsZ9svTWJ+CbusW3Hd0ZP9qpxEhlHxnd4Tlsg==} + /@graphql-tools/git-loader@8.0.4(graphql@16.8.1): + resolution: {integrity: sha512-fBmKtnOVqzMT2N8L6nggM4skPq3y2t0eBITZJXCOuxeIlIRAeCOdjNLPKgyGb0rezIyGsn55DKMua5101VN0Sg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/graphql-tag-pluck': 8.0.2(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/graphql-tag-pluck': 8.2.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 is-glob: 4.0.3 micromatch: 4.0.5 @@ -1737,17 +1908,17 @@ packages: - supports-color dev: true - /@graphql-tools/github-loader@8.0.0(@types/node@20.10.6)(graphql@16.8.1): + /@graphql-tools/github-loader@8.0.0(@types/node@20.11.7)(graphql@16.8.1): resolution: {integrity: sha512-VuroArWKcG4yaOWzV0r19ElVIV6iH6UKDQn1MXemND0xu5TzrFme0kf3U9o0YwNo0kUYEk9CyFM0BYg4he17FA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@ardatan/sync-fetch': 0.0.1 - '@graphql-tools/executor-http': 1.0.2(@types/node@20.10.6)(graphql@16.8.1) - '@graphql-tools/graphql-tag-pluck': 8.0.2(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - '@whatwg-node/fetch': 0.9.9 + '@graphql-tools/executor-http': 1.0.7(@types/node@20.11.7)(graphql@16.8.1) + '@graphql-tools/graphql-tag-pluck': 8.2.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + '@whatwg-node/fetch': 0.9.16 graphql: 16.8.1 tslib: 2.6.2 value-or-promise: 1.0.12 @@ -1764,25 +1935,25 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/import': 7.0.0(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) globby: 11.1.0 graphql: 16.8.1 tslib: 2.6.2 unixify: 1.0.0 dev: true - /@graphql-tools/graphql-tag-pluck@8.0.2(graphql@16.8.1): - resolution: {integrity: sha512-U6fE4yEHxuk/nqmPixHpw1WhqdS6aYuaV60m1bEmUmGJNbpAhaMBy01JncpvpF15yZR5LZ0UjkHg+A3Lhoc8YQ==} + /@graphql-tools/graphql-tag-pluck@8.2.0(graphql@16.8.1): + resolution: {integrity: sha512-aGIuHxyrJB+LlUfXrH73NVlQTA6LkFbLKQzHojFuwXZJpf7wPkxceN2yp7VjMedARkLJg589IoXgZeMb1EztGQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/parser': 7.23.6 - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.7) - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 tslib: 2.6.2 transitivePeerDependencies: @@ -1795,7 +1966,7 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 resolve-from: 5.0.0 tslib: 2.6.2 @@ -1807,21 +1978,21 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) globby: 11.1.0 graphql: 16.8.1 tslib: 2.6.2 unixify: 1.0.0 dev: true - /@graphql-tools/load@8.0.0(graphql@16.8.1): - resolution: {integrity: sha512-Cy874bQJH0FP2Az7ELPM49iDzOljQmK1PPH6IuxsWzLSTxwTqd8dXA09dcVZrI7/LsN26heTY2R8q2aiiv0GxQ==} + /@graphql-tools/load@8.0.1(graphql@16.8.1): + resolution: {integrity: sha512-qSMsKngJhDqRbuWyo3NvakEFqFL6+eSjy8ooJ1o5qYD26N7dqXkKzIMycQsX7rBK19hOuINAUSaRcVWH6hTccw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/schema': 10.0.0(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 p-limit: 3.1.0 tslib: 2.6.2 @@ -1836,12 +2007,15 @@ packages: '@graphql-tools/utils': 10.0.8(graphql@16.8.1) graphql: 16.8.1 tslib: 2.6.2 + dev: false - /@graphql-tools/optimize@1.4.0(graphql@16.8.1): - resolution: {integrity: sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==} + /@graphql-tools/merge@9.0.1(graphql@16.8.1): + resolution: {integrity: sha512-hIEExWO9fjA6vzsVjJ3s0cCQ+Q/BEeMVJZtMXd7nbaVefVy0YDyYlEkeoYYNV3NVVvu1G9lr6DM1Qd0DGo9Caw==} + engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 tslib: 2.6.2 dev: true @@ -1853,30 +2027,30 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.5.3 dev: true - /@graphql-tools/prisma-loader@8.0.1(@types/node@20.10.6)(graphql@16.8.1): - resolution: {integrity: sha512-bl6e5sAYe35Z6fEbgKXNrqRhXlCJYeWKBkarohgYA338/SD9eEhXtg3Cedj7fut3WyRLoQFpHzfiwxKs7XrgXg==} + /@graphql-tools/prisma-loader@8.0.2(@types/node@20.11.7)(graphql@16.8.1): + resolution: {integrity: sha512-8d28bIB0bZ9Bj0UOz9sHagVPW+6AHeqvGljjERtwCnWl8OCQw2c2pNboYXISLYUG5ub76r4lDciLLTU+Ks7Q0w==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/url-loader': 8.0.0(@types/node@20.10.6)(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - '@types/js-yaml': 4.0.5 - '@types/json-stable-stringify': 1.0.34 - '@whatwg-node/fetch': 0.9.9 + '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.7)(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + '@types/js-yaml': 4.0.9 + '@types/json-stable-stringify': 1.0.36 + '@whatwg-node/fetch': 0.9.16 chalk: 4.1.2 debug: 4.3.4 - dotenv: 16.3.1 + dotenv: 16.4.1 graphql: 16.8.1 graphql-request: 6.1.0(graphql@16.8.1) http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.1 - jose: 4.14.4 + https-proxy-agent: 7.0.2 + jose: 5.2.0 js-yaml: 4.1.0 - json-stable-stringify: 1.0.2 + json-stable-stringify: 1.1.1 lodash: 4.17.21 scuid: 1.1.0 tslib: 2.6.2 @@ -1889,20 +2063,6 @@ packages: - utf-8-validate dev: true - /@graphql-tools/relay-operation-optimizer@6.5.18(graphql@16.8.1): - resolution: {integrity: sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@ardatan/relay-compiler': 12.0.0(graphql@16.8.1) - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@graphql-tools/relay-operation-optimizer@7.0.0(graphql@16.8.1): resolution: {integrity: sha512-UNlJi5y3JylhVWU4MBpL0Hun4Q7IoJwv9xYtmAz+CgRa066szzY7dcuPfxrA7cIGgG/Q6TVsKsYaiF4OHPs1Fw==} engines: {node: '>=16.0.0'} @@ -1910,9 +2070,9 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@ardatan/relay-compiler': 12.0.0(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.6.2 + tslib: 2.5.3 transitivePeerDependencies: - encoding - supports-color @@ -1929,27 +2089,41 @@ packages: graphql: 16.8.1 tslib: 2.6.2 value-or-promise: 1.0.12 + dev: false - /@graphql-tools/url-loader@8.0.0(@types/node@20.10.6)(graphql@16.8.1): - resolution: {integrity: sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA==} + /@graphql-tools/schema@10.0.2(graphql@16.8.1): + resolution: {integrity: sha512-TbPsIZnWyDCLhgPGnDjt4hosiNU2mF/rNtSk5BVaXWnZqvKJ6gzJV4fcHcvhRIwtscDMW2/YTnK6dLVnk8pc4w==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/merge': 9.0.1(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/url-loader@8.0.1(@types/node@20.11.7)(graphql@16.8.1): + resolution: {integrity: sha512-B2k8KQEkEQmfV1zhurT5GLoXo8jbXP+YQHUayhCSxKYlRV7j/1Fhp1b21PDM8LXIDGlDRXaZ0FbWKOs7eYXDuQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@ardatan/sync-fetch': 0.0.1 - '@graphql-tools/delegate': 10.0.2(graphql@16.8.1) + '@graphql-tools/delegate': 10.0.3(graphql@16.8.1) '@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1) - '@graphql-tools/executor-http': 1.0.2(@types/node@20.10.6)(graphql@16.8.1) - '@graphql-tools/executor-legacy-ws': 1.0.1(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - '@graphql-tools/wrap': 10.0.0(graphql@16.8.1) - '@types/ws': 8.5.5 - '@whatwg-node/fetch': 0.9.9 + '@graphql-tools/executor-http': 1.0.7(@types/node@20.11.7)(graphql@16.8.1) + '@graphql-tools/executor-legacy-ws': 1.0.5(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + '@graphql-tools/wrap': 10.0.1(graphql@16.8.1) + '@types/ws': 8.5.10 + '@whatwg-node/fetch': 0.9.16 graphql: 16.8.1 isomorphic-ws: 5.0.0(ws@8.16.0) tslib: 2.6.2 value-or-promise: 1.0.12 - ws: 8.16.0 + ws: 8.16.0(utf-8-validate@6.0.3) transitivePeerDependencies: - '@types/node' - bufferutil @@ -1957,6 +2131,19 @@ packages: - utf-8-validate dev: true + /@graphql-tools/utils@10.0.13(graphql@16.8.1): + resolution: {integrity: sha512-fMILwGr5Dm2zefNItjQ6C2rauigklv69LIwppccICuGTnGaOp3DspLt/6Lxj72cbg5d9z60Sr+Egco3CJKLsNg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + cross-inspect: 1.0.0 + dset: 3.1.3 + graphql: 16.8.1 + tslib: 2.6.2 + dev: true + /@graphql-tools/utils@10.0.8(graphql@16.8.1): resolution: {integrity: sha512-yjyA8ycSa1WRlJqyX/aLqXeE5DvF/H02+zXMUFnCzIDrj0UvLMUrxhmVFnMK0Q2n3bh4uuTeY3621m5za9ovXw==} engines: {node: '>=16.0.0'} @@ -1968,35 +2155,17 @@ packages: dset: 3.1.3 graphql: 16.8.1 tslib: 2.6.2 + dev: false - /@graphql-tools/utils@8.13.1(graphql@16.8.1): - resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-tools/utils@9.2.1(graphql@16.8.1): - resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-tools/wrap@10.0.0(graphql@16.8.1): - resolution: {integrity: sha512-HDOeUUh6UhpiH0WPJUQl44ODt1x5pnMUbOJZ7GjTdGQ7LK0AgVt3ftaAQ9duxLkiAtYJmu5YkULirfZGj4HzDg==} + /@graphql-tools/wrap@10.0.1(graphql@16.8.1): + resolution: {integrity: sha512-Cw6hVrKGM2OKBXeuAGltgy4tzuqQE0Nt7t/uAqnuokSXZhMHXJUb124Bnvxc2gPZn5chfJSDafDe4Cp8ZAVJgg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/delegate': 10.0.2(graphql@16.8.1) - '@graphql-tools/schema': 10.0.0(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/delegate': 10.0.3(graphql@16.8.1) + '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 tslib: 2.6.2 value-or-promise: 1.0.12 @@ -2009,23 +2178,11 @@ packages: dependencies: graphql: 16.8.1 - /@headlessui/react@1.7.17(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - dependencies: - client-only: 0.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.1 + '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -2037,34 +2194,34 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true - /@img/sharp-darwin-arm64@0.33.1: - resolution: {integrity: sha512-esr2BZ1x0bo+wl7Gx2hjssYhjrhUsD88VQulI0FrG8/otRQUOxLWHMBd1Y1qo2Gfg2KUvXNpT0ASnV9BzJCexw==} + /@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.0 + '@img/sharp-libvips-darwin-arm64': 1.0.1 dev: false optional: true - /@img/sharp-darwin-x64@0.33.1: - resolution: {integrity: sha512-YrnuB3bXuWdG+hJlXtq7C73lF8ampkhU3tMxg5Hh+E7ikxbUVOU9nlNtVTloDXz6pRHt2y2oKJq7DY/yt+UXYw==} + /@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.0 + '@img/sharp-libvips-darwin-x64': 1.0.1 dev: false optional: true - /@img/sharp-libvips-darwin-arm64@1.0.0: - resolution: {integrity: sha512-VzYd6OwnUR81sInf3alj1wiokY50DjsHz5bvfnsFpxs5tqQxESoHtJO6xyksDs3RIkyhMWq2FufXo6GNSU9BMw==} + /@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] @@ -2072,8 +2229,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-darwin-x64@1.0.0: - resolution: {integrity: sha512-dD9OznTlHD6aovRswaPNEy8dKtSAmNo4++tO7uuR4o5VxbVAOoEQ1uSmN4iFAdQneTHws1lkTZeiXPrcCkh6IA==} + /@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] @@ -2081,8 +2238,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-arm64@1.0.0: - resolution: {integrity: sha512-xTYThiqEZEZc0PRU90yVtM3KE7lw1bKdnDQ9kCTHWbqWyHOe4NpPOtMGy27YnN51q0J5dqRrvicfPbALIOeAZA==} + /@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] @@ -2090,8 +2247,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-arm@1.0.0: - resolution: {integrity: sha512-VwgD2eEikDJUk09Mn9Dzi1OW2OJFRQK+XlBTkUNmAWPrtj8Ly0yq05DFgu1VCMx2/DqCGQVi5A1dM9hTmxf3uw==} + /@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] @@ -2099,8 +2256,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-s390x@1.0.0: - resolution: {integrity: sha512-o9E46WWBC6JsBlwU4QyU9578G77HBDT1NInd+aERfxeOPbk0qBZHgoDsQmA2v9TbqJRWzoBPx1aLOhprBMgPjw==} + /@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] @@ -2108,8 +2265,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linux-x64@1.0.0: - resolution: {integrity: sha512-naldaJy4hSVhWBgEjfdBY85CAa4UO+W1nx6a1sWStHZ7EUfNiuBTTN2KUYT5dH1+p/xij1t2QSXfCiFJoC5S/Q==} + /@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] @@ -2117,8 +2274,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linuxmusl-arm64@1.0.0: - resolution: {integrity: sha512-OdorplCyvmSAPsoJLldtLh3nLxRrkAAAOHsGWGDYfN0kh730gifK+UZb3dWORRa6EusNqCTjfXV4GxvgJ/nPDQ==} + /@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] @@ -2126,8 +2283,8 @@ packages: dev: false optional: true - /@img/sharp-libvips-linuxmusl-x64@1.0.0: - resolution: {integrity: sha512-FW8iK6rJrg+X2jKD0Ajhjv6y74lToIBEvkZhl42nZt563FfxkCYacrXZtd+q/sRQDypQLzY5WdLkVTbJoPyqNg==} + /@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] @@ -2135,84 +2292,84 @@ packages: dev: false optional: true - /@img/sharp-linux-arm64@0.33.1: - resolution: {integrity: sha512-59B5GRO2d5N3tIfeGHAbJps7cLpuWEQv/8ySd9109ohQ3kzyCACENkFVAnGPX00HwPTQcaBNF7HQYEfZyZUFfw==} + /@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.0 + '@img/sharp-libvips-linux-arm64': 1.0.1 dev: false optional: true - /@img/sharp-linux-arm@0.33.1: - resolution: {integrity: sha512-Ii4X1vnzzI4j0+cucsrYA5ctrzU9ciXERfJR633S2r39CiD8npqH2GMj63uFZRCFt3E687IenAdbwIpQOJ5BNA==} + /@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.0 + '@img/sharp-libvips-linux-arm': 1.0.1 dev: false optional: true - /@img/sharp-linux-s390x@0.33.1: - resolution: {integrity: sha512-tRGrb2pHnFUXpOAj84orYNxHADBDIr0J7rrjwQrTNMQMWA4zy3StKmMvwsI7u3dEZcgwuMMooIIGWEWOjnmG8A==} + /@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.0 + '@img/sharp-libvips-linux-s390x': 1.0.1 dev: false optional: true - /@img/sharp-linux-x64@0.33.1: - resolution: {integrity: sha512-4y8osC0cAc1TRpy02yn5omBeloZZwS62fPZ0WUAYQiLhSFSpWJfY/gMrzKzLcHB9ulUV6ExFiu2elMaixKDbeg==} + /@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.0 + '@img/sharp-libvips-linux-x64': 1.0.1 dev: false optional: true - /@img/sharp-linuxmusl-arm64@0.33.1: - resolution: {integrity: sha512-D3lV6clkqIKUizNS8K6pkuCKNGmWoKlBGh5p0sLO2jQERzbakhu4bVX1Gz+RS4vTZBprKlWaf+/Rdp3ni2jLfA==} + /@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.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.1 dev: false optional: true - /@img/sharp-linuxmusl-x64@0.33.1: - resolution: {integrity: sha512-LOGKNu5w8uu1evVqUAUKTix2sQu1XDRIYbsi5Q0c/SrXhvJ4QyOx+GaajxmOg5PZSsSnCYPSmhjHHsRBx06/wQ==} + /@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.0 + '@img/sharp-libvips-linuxmusl-x64': 1.0.1 dev: false optional: true - /@img/sharp-wasm32@0.33.1: - resolution: {integrity: sha512-vWI/sA+0p+92DLkpAMb5T6I8dg4z2vzCUnp8yvxHlwBpzN8CIcO3xlSXrLltSvK6iMsVMNswAv+ub77rsf25lA==} + /@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.44.0 + '@emnapi/runtime': 0.45.0 dev: false optional: true - /@img/sharp-win32-ia32@0.33.1: - resolution: {integrity: sha512-/xhYkylsKL05R+NXGJc9xr2Tuw6WIVl2lubFJaFYfW4/MQ4J+dgjIo/T4qjNRizrqs/szF/lC9a5+updmY9jaQ==} + /@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] @@ -2220,8 +2377,8 @@ packages: dev: false optional: true - /@img/sharp-win32-x64@0.33.1: - resolution: {integrity: sha512-XaM69X0n6kTEsp9tVYYLhXdg7Qj32vYJlAKRutxUsm1UlgQNx6BOhHwZPwukCGXBU2+tH87ip2eV1I/E8MQnZg==} + /@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] @@ -2239,6 +2396,7 @@ packages: strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true /@jenyus-org/graphql-utils@1.5.0: resolution: {integrity: sha512-2H0uY62xqOQH8zXDKLnj8XQvh7G6aK9eChZHHyhT1a24j3+EOgJQSYhJuW+TwisQvX+bNTlt0ZCFyhcf6hZGpg==} @@ -2267,24 +2425,29 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 + dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 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.20: - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -2293,6 +2456,10 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@kamilkisiela/fast-url-parser@1.1.4: + resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} + dev: true + /@lukeed/csprng@1.1.0: resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} @@ -2303,37 +2470,37 @@ packages: engines: {node: '>=8'} dev: false - /@mercuriusjs/federation@2.0.0: + /@mercuriusjs/federation@2.0.0(utf-8-validate@6.0.3): resolution: {integrity: sha512-hBL2Zhdf0p2Ab2SDPXcVnNsYTf5x50xPAyHm2HpmXreHS7aGt4obX8g8JrqRhIfOApcRg5l9RQ2OZqaUYeR8sQ==} dependencies: '@fastify/error': 3.4.1 graphql: 16.8.1 - mercurius: 13.3.3(graphql@16.8.1) + mercurius: 13.3.3(graphql@16.8.1)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate dev: false - /@mercuriusjs/gateway@2.2.0: + /@mercuriusjs/gateway@2.2.0(utf-8-validate@6.0.3): resolution: {integrity: sha512-5YxI2P0XELWA3ve4BpCRQ5usg4kNbRme+9fnTkv0RdEMZQvjq4MGUzxgUqKD/P4sMPA5f8wKfZoHG9WFNoiCJg==} dependencies: - '@mercuriusjs/federation': 2.0.0 - '@mercuriusjs/subscription-client': 1.0.0(graphql@16.8.1) + '@mercuriusjs/federation': 2.0.0(utf-8-validate@6.0.3) + '@mercuriusjs/subscription-client': 1.0.0(graphql@16.8.1)(utf-8-validate@6.0.3) fastify-plugin: 4.5.1 graphql: 16.8.1 graphql-ws: 5.14.3(graphql@16.8.1) - mercurius: 13.3.3(graphql@16.8.1) + mercurius: 13.3.3(graphql@16.8.1)(utf-8-validate@6.0.3) p-map: 4.0.0 single-user-cache: 0.6.0 tiny-lru: 11.2.5 use-strict: 1.0.1 - ws: 8.16.0 + ws: 8.16.0(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate dev: false - /@mercuriusjs/subscription-client@1.0.0(graphql@16.8.1): + /@mercuriusjs/subscription-client@1.0.0(graphql@16.8.1)(utf-8-validate@6.0.3): resolution: {integrity: sha512-hIGqNp6FBdcy7ZkrWNk4mHl/Qodtwvbu9/iRl3zQdNRl4UtlVI7xW/FPU+2AJy0qTB567yrpvtQPwtmQLuYHYg==} engines: {node: '>=14.19.3'} peerDependencies: @@ -2342,7 +2509,7 @@ packages: '@fastify/error': 3.4.1 graphql: 16.8.1 secure-json-parse: 2.7.0 - ws: 8.16.0 + ws: 8.16.0(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -2516,7 +2683,7 @@ packages: - supports-color - tedious - /@mikro-orm/nestjs@5.2.3(@mikro-orm/core@5.9.7)(@nestjs/common@10.3.0)(@nestjs/core@10.3.0): + /@mikro-orm/nestjs@5.2.3(@mikro-orm/core@5.9.7)(@nestjs/common@10.3.1)(@nestjs/core@10.3.1): resolution: {integrity: sha512-JMxaXrNXlo6j59D3LWMC1tEC1a5JanCtqdfv91JUH0sfVZh97SsjQ9K794BY3JWIUKSFyQwpnLxYZ0Ash/BlPA==} engines: {node: '>= 14.0.0'} peerDependencies: @@ -2525,8 +2692,8 @@ packages: '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: '@mikro-orm/core': 5.9.7(@mikro-orm/migrations@5.9.7)(@mikro-orm/postgresql@5.9.7) - '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) - '@nestjs/core': 10.3.0(@nestjs/common@10.3.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/common': 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/core': 10.3.1(@nestjs/common@10.3.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) dev: false /@mikro-orm/postgresql@5.9.7(@mikro-orm/core@5.9.7)(@mikro-orm/migrations@5.9.7): @@ -2559,8 +2726,8 @@ packages: - supports-color - tedious - /@nestjs/common@10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1): - resolution: {integrity: sha512-DGv34UHsZBxCM3H5QGE2XE/+oLJzz5+714JQjBhjD9VccFlQs3LRxo/epso4l7nJIiNlZkPyIUC8WzfU/5RTsQ==} + /@nestjs/common@10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1): + resolution: {integrity: sha512-YuxeIlVemVQCuXMkNbBpNlmwZgp/Cu6dwCOjki63mhyYHEFX48GNNA4zZn5MFRjF4h7VSceABsScROuzsxs9LA==} peerDependencies: class-transformer: '*' class-validator: '*' @@ -2573,7 +2740,7 @@ packages: optional: true dependencies: class-transformer: 0.5.1 - class-validator: 0.14.0 + class-validator: 0.14.1 iterare: 1.2.1 reflect-metadata: 0.2.1 rxjs: 7.8.1 @@ -2581,8 +2748,8 @@ packages: uid: 2.0.2 dev: false - /@nestjs/core@10.3.0(@nestjs/common@10.3.0)(reflect-metadata@0.2.1)(rxjs@7.8.1): - resolution: {integrity: sha512-N06P5ncknW/Pm8bj964WvLIZn2gNhHliCBoAO1LeBvNImYkecqKcrmLbY49Fa1rmMfEM3MuBHeDys3edeuYAOA==} + /@nestjs/core@10.3.1(@nestjs/common@10.3.1)(reflect-metadata@0.2.1)(rxjs@7.8.1): + resolution: {integrity: sha512-mh6FwTKh2R3CmLRuB50BF5q/lzc+Mz+7qAlEvpgCiTSIfSXzbQ47vWpfgLirwkL3SlCvtFS8onxOeI69RpxvXA==} requiresBuild: true peerDependencies: '@nestjs/common': ^10.0.0 @@ -2599,7 +2766,7 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/common': 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 iterare: 1.2.1 @@ -2612,7 +2779,7 @@ packages: - encoding dev: false - /@nestjs/graphql@12.0.11(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(graphql@16.8.1)(reflect-metadata@0.2.1): + /@nestjs/graphql@12.0.11(@nestjs/common@10.3.1)(@nestjs/core@10.3.1)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.8.1)(reflect-metadata@0.2.1)(utf-8-validate@6.0.3): resolution: {integrity: sha512-iCyVs9+utCQt9ehMhUjQcEdjRN/MrcTBINd7P44O1fzGENuWMbt1Z8RCoZbeGi5iVPBY63HgYik+BnnICqmxZw==} peerDependencies: '@apollo/subgraph': ^2.0.0 @@ -2636,12 +2803,12 @@ packages: '@graphql-tools/merge': 9.0.0(graphql@16.8.1) '@graphql-tools/schema': 10.0.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) - '@nestjs/core': 10.3.0(@nestjs/common@10.3.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) - '@nestjs/mapped-types': 2.0.2(@nestjs/common@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1) + '@nestjs/common': 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/core': 10.3.1(@nestjs/common@10.3.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/mapped-types': 2.0.2(@nestjs/common@10.3.1)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1) chokidar: 3.5.3 class-transformer: 0.5.1 - class-validator: 0.14.0 + class-validator: 0.14.1 fast-glob: 3.3.2 graphql: 16.8.1 graphql-tag: 2.12.6(graphql@16.8.1) @@ -2649,26 +2816,26 @@ packages: lodash: 4.17.21 normalize-path: 3.0.0 reflect-metadata: 0.2.1 - subscriptions-transport-ws: 0.11.0(graphql@16.8.1) + subscriptions-transport-ws: 0.11.0(graphql@16.8.1)(utf-8-validate@6.0.3) tslib: 2.6.2 uuid: 9.0.1 - ws: 8.14.2 + ws: 8.14.2(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate dev: false - /@nestjs/jwt@10.2.0(@nestjs/common@10.3.0): + /@nestjs/jwt@10.2.0(@nestjs/common@10.3.1): resolution: {integrity: sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 dependencies: - '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/common': 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) '@types/jsonwebtoken': 9.0.5 jsonwebtoken: 9.0.2 dev: false - /@nestjs/mapped-types@2.0.2(@nestjs/common@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1): + /@nestjs/mapped-types@2.0.2(@nestjs/common@10.3.1)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1): resolution: {integrity: sha512-V0izw6tWs6fTp9+KiiPUbGHWALy563Frn8X6Bm87ANLRuE46iuBMD5acKBDP5lKL/75QFvrzSJT7HkCbB0jTpg==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 @@ -2681,13 +2848,13 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/common': 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) class-transformer: 0.5.1 - class-validator: 0.14.0 + class-validator: 0.14.1 reflect-metadata: 0.2.1 dev: false - /@nestjs/mercurius@12.0.11(@mercuriusjs/gateway@2.2.0)(@nestjs/common@10.3.0)(@nestjs/graphql@12.0.11)(fastify@4.25.2)(graphql@16.8.1)(mercurius@13.3.3): + /@nestjs/mercurius@12.0.11(@mercuriusjs/gateway@2.2.0)(@nestjs/common@10.3.1)(@nestjs/graphql@12.0.11)(fastify@4.25.2)(graphql@16.8.1)(mercurius@13.3.3): resolution: {integrity: sha512-1YKnn6cnk4HUki6Q9QK5XSneqD9igXQWEpgQgeRszdGvpHTXcS8eoASp5JoMp9g9tYi/ZDN8fR5gJ7d3+O0MTQ==} peerDependencies: '@apollo/subgraph': ^2.0.0 @@ -2706,27 +2873,27 @@ packages: '@mercuriusjs/gateway': optional: true dependencies: - '@mercuriusjs/gateway': 2.2.0 - '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) - '@nestjs/graphql': 12.0.11(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(class-transformer@0.5.1)(class-validator@0.14.0)(graphql@16.8.1)(reflect-metadata@0.2.1) + '@mercuriusjs/gateway': 2.2.0(utf-8-validate@6.0.3) + '@nestjs/common': 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/graphql': 12.0.11(@nestjs/common@10.3.1)(@nestjs/core@10.3.1)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.8.1)(reflect-metadata@0.2.1)(utf-8-validate@6.0.3) fastify: 4.25.2 graphql: 16.8.1 - mercurius: 13.3.3(graphql@16.8.1) + mercurius: 13.3.3(graphql@16.8.1)(utf-8-validate@6.0.3) tslib: 2.6.2 dev: false - /@nestjs/passport@10.0.3(@nestjs/common@10.3.0)(passport@0.7.0): + /@nestjs/passport@10.0.3(@nestjs/common@10.3.1)(passport@0.7.0): resolution: {integrity: sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 passport: ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 dependencies: - '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/common': 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) passport: 0.7.0 dev: false - /@nestjs/platform-fastify@10.3.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0): - resolution: {integrity: sha512-ka4r/cPWM5y/dXoi9dj6pn1o3WLnfImy2bT3aYVasiDsJff2cd3h/ThugwxjdH0BHUpLSPnawEGzADAcO8Fqug==} + /@nestjs/platform-fastify@10.3.1(@nestjs/common@10.3.1)(@nestjs/core@10.3.1): + resolution: {integrity: sha512-JOoabswdTCa2/RcVGxANJfRTbuTBk6ukoe2Z0patCA33XVrM6bIGcRHNcUrN6hgu79cGicreH6xaJfQlHLCtvg==} peerDependencies: '@fastify/static': ^6.0.0 '@fastify/view': ^7.0.0 || ^8.0.0 @@ -2738,12 +2905,12 @@ packages: '@fastify/view': optional: true dependencies: - '@fastify/cors': 8.4.2 + '@fastify/cors': 8.5.0 '@fastify/formbody': 7.4.0 '@fastify/middie': 8.3.0 - '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) - '@nestjs/core': 10.3.0(@nestjs/common@10.3.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) - fastify: 4.25.1 + '@nestjs/common': 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/core': 10.3.1(@nestjs/common@10.3.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) + fastify: 4.25.2 light-my-request: 5.11.0 path-to-regexp: 3.2.0 tslib: 2.6.2 @@ -2751,111 +2918,26 @@ packages: - supports-color dev: false - /@nestjs/schedule@4.0.0(@nestjs/common@10.3.0)(@nestjs/core@10.3.0)(reflect-metadata@0.2.1): + /@nestjs/schedule@4.0.0(@nestjs/common@10.3.1)(@nestjs/core@10.3.1)(reflect-metadata@0.2.1): resolution: {integrity: sha512-zz4h54m/F/1qyQKvMJCRphmuwGqJltDAkFxUXCVqJBXEs5kbPt93Pza3heCQOcMH22MZNhGlc9DmDMLXVHmgVQ==} peerDependencies: '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 reflect-metadata: ^0.1.12 dependencies: - '@nestjs/common': 10.3.0(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) - '@nestjs/core': 10.3.0(@nestjs/common@10.3.0)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/common': 10.3.1(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) + '@nestjs/core': 10.3.1(@nestjs/common@10.3.1)(reflect-metadata@0.2.1)(rxjs@7.8.1) cron: 3.1.3 reflect-metadata: 0.2.1 uuid: 9.0.1 dev: false - /@next/env@14.0.4: - resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==} - dev: false - - /@next/eslint-plugin-next@14.0.4: - resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} + /@next/eslint-plugin-next@14.1.0: + resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} dependencies: - glob: 7.1.7 + glob: 10.3.10 dev: true - /@next/swc-darwin-arm64@14.0.4: - resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@next/swc-darwin-x64@14.0.4: - resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm64-gnu@14.0.4: - resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm64-musl@14.0.4: - resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-x64-gnu@14.0.4: - resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-x64-musl@14.0.4: - resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-arm64-msvc@14.0.4: - resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-ia32-msvc@14.0.4: - resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-x64-msvc@14.0.4: - resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2919,8 +3001,8 @@ packages: '@otplib/plugin-thirty-two': 12.0.1 dev: false - /@parcel/watcher-android-arm64@2.3.0: - resolution: {integrity: sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==} + /@parcel/watcher-android-arm64@2.4.0: + resolution: {integrity: sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] @@ -2928,8 +3010,8 @@ packages: dev: true optional: true - /@parcel/watcher-darwin-arm64@2.3.0: - resolution: {integrity: sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==} + /@parcel/watcher-darwin-arm64@2.4.0: + resolution: {integrity: sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] @@ -2937,8 +3019,8 @@ packages: dev: true optional: true - /@parcel/watcher-darwin-x64@2.3.0: - resolution: {integrity: sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==} + /@parcel/watcher-darwin-x64@2.4.0: + resolution: {integrity: sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] @@ -2946,8 +3028,8 @@ packages: dev: true optional: true - /@parcel/watcher-freebsd-x64@2.3.0: - resolution: {integrity: sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==} + /@parcel/watcher-freebsd-x64@2.4.0: + resolution: {integrity: sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] @@ -2955,8 +3037,8 @@ packages: dev: true optional: true - /@parcel/watcher-linux-arm-glibc@2.3.0: - resolution: {integrity: sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==} + /@parcel/watcher-linux-arm-glibc@2.4.0: + resolution: {integrity: sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] @@ -2964,8 +3046,8 @@ packages: dev: true optional: true - /@parcel/watcher-linux-arm64-glibc@2.3.0: - resolution: {integrity: sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==} + /@parcel/watcher-linux-arm64-glibc@2.4.0: + resolution: {integrity: sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] @@ -2973,8 +3055,8 @@ packages: dev: true optional: true - /@parcel/watcher-linux-arm64-musl@2.3.0: - resolution: {integrity: sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==} + /@parcel/watcher-linux-arm64-musl@2.4.0: + resolution: {integrity: sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] @@ -2982,8 +3064,8 @@ packages: dev: true optional: true - /@parcel/watcher-linux-x64-glibc@2.3.0: - resolution: {integrity: sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==} + /@parcel/watcher-linux-x64-glibc@2.4.0: + resolution: {integrity: sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] @@ -2991,8 +3073,8 @@ packages: dev: true optional: true - /@parcel/watcher-linux-x64-musl@2.3.0: - resolution: {integrity: sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==} + /@parcel/watcher-linux-x64-musl@2.4.0: + resolution: {integrity: sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] @@ -3000,8 +3082,8 @@ packages: dev: true optional: true - /@parcel/watcher-win32-arm64@2.3.0: - resolution: {integrity: sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==} + /@parcel/watcher-win32-arm64@2.4.0: + resolution: {integrity: sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] @@ -3009,8 +3091,8 @@ packages: dev: true optional: true - /@parcel/watcher-win32-ia32@2.3.0: - resolution: {integrity: sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==} + /@parcel/watcher-win32-ia32@2.4.0: + resolution: {integrity: sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] @@ -3018,8 +3100,8 @@ packages: dev: true optional: true - /@parcel/watcher-win32-x64@2.3.0: - resolution: {integrity: sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==} + /@parcel/watcher-win32-x64@2.4.0: + resolution: {integrity: sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] @@ -3027,31 +3109,31 @@ packages: dev: true optional: true - /@parcel/watcher@2.3.0: - resolution: {integrity: sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==} + /@parcel/watcher@2.4.0: + resolution: {integrity: sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg==} engines: {node: '>= 10.0.0'} dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 micromatch: 4.0.5 - node-addon-api: 7.0.0 + node-addon-api: 7.1.0 optionalDependencies: - '@parcel/watcher-android-arm64': 2.3.0 - '@parcel/watcher-darwin-arm64': 2.3.0 - '@parcel/watcher-darwin-x64': 2.3.0 - '@parcel/watcher-freebsd-x64': 2.3.0 - '@parcel/watcher-linux-arm-glibc': 2.3.0 - '@parcel/watcher-linux-arm64-glibc': 2.3.0 - '@parcel/watcher-linux-arm64-musl': 2.3.0 - '@parcel/watcher-linux-x64-glibc': 2.3.0 - '@parcel/watcher-linux-x64-musl': 2.3.0 - '@parcel/watcher-win32-arm64': 2.3.0 - '@parcel/watcher-win32-ia32': 2.3.0 - '@parcel/watcher-win32-x64': 2.3.0 + '@parcel/watcher-android-arm64': 2.4.0 + '@parcel/watcher-darwin-arm64': 2.4.0 + '@parcel/watcher-darwin-x64': 2.4.0 + '@parcel/watcher-freebsd-x64': 2.4.0 + '@parcel/watcher-linux-arm-glibc': 2.4.0 + '@parcel/watcher-linux-arm64-glibc': 2.4.0 + '@parcel/watcher-linux-arm64-musl': 2.4.0 + '@parcel/watcher-linux-x64-glibc': 2.4.0 + '@parcel/watcher-linux-x64-musl': 2.4.0 + '@parcel/watcher-win32-arm64': 2.4.0 + '@parcel/watcher-win32-ia32': 2.4.0 + '@parcel/watcher-win32-x64': 2.4.0 dev: true - /@peculiar/asn1-schema@2.3.6: - resolution: {integrity: sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA==} + /@peculiar/asn1-schema@2.3.8: + resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} dependencies: asn1js: 3.0.5 pvtsutils: 1.3.5 @@ -3065,125 +3147,601 @@ packages: tslib: 2.6.2 dev: true - /@peculiar/webcrypto@1.4.3: - resolution: {integrity: sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A==} + /@peculiar/webcrypto@1.4.5: + resolution: {integrity: sha512-oDk93QCDGdxFRM8382Zdminzs44dg3M2+E5Np+JWkpqLDyJC9DviMh8F8mEJkYuUcUOGA5jHO5AJJ10MFWdbZw==} engines: {node: '>=10.12.0'} dependencies: - '@peculiar/asn1-schema': 2.3.6 + '@peculiar/asn1-schema': 2.3.8 '@peculiar/json-schema': 1.1.12 pvtsutils: 1.3.5 tslib: 2.6.2 - webcrypto-core: 1.7.7 + webcrypto-core: 1.7.8 dev: true /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} requiresBuild: true + dev: true optional: true - /@repeaterjs/repeater@3.0.4: - resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} dev: true - /@rollup/rollup-android-arm-eabi@4.9.4: - resolution: {integrity: sha512-ub/SN3yWqIv5CWiAZPHVS1DloyZsJbtXmX4HxUTIpS0BHm9pW5iYBo2mIZi+hE3AeiTzHz33blwSnhdUo+9NpA==} + /@preact/compat@17.1.2(preact@10.19.3): + resolution: {integrity: sha512-7pOZN9lMDDRQ+6aWvjwTp483KR8/zOpfS83wmOo3zfuLKdngS8/5RLbsFWzFZMGdYlotAhX980hJ75bjOHTwWg==} + peerDependencies: + preact: '*' + dependencies: + preact: 10.19.3 + dev: true + + /@preact/preset-vite@2.8.1(@babel/core@7.23.9)(preact@10.19.3)(vite@5.0.12): + resolution: {integrity: sha512-a9KV4opdj17X2gOFuGup0aE+sXYABX/tJi/QDptOrleX4FlnoZgDWvz45tHOdVfrZX+3uvVsIYPHxRsTerkDNA==} + peerDependencies: + '@babel/core': 7.x + vite: 2.x || 3.x || 4.x || 5.x + dependencies: + '@babel/core': 7.23.9 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.9) + '@prefresh/vite': 2.4.5(preact@10.19.3)(vite@5.0.12) + '@rollup/pluginutils': 4.2.1 + babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.23.9) + debug: 4.3.4 + kolorist: 1.8.0 + magic-string: 0.30.5 + node-html-parser: 6.1.12 + resolve: 1.22.8 + vite: 5.0.12(@types/node@20.11.7) + transitivePeerDependencies: + - preact + - supports-color + dev: true + + /@prefresh/babel-plugin@0.5.1: + resolution: {integrity: sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==} + dev: true + + /@prefresh/core@1.5.2(preact@10.19.3): + resolution: {integrity: sha512-A/08vkaM1FogrCII5PZKCrygxSsc11obExBScm3JF1CryK2uDS3ZXeni7FeKCx1nYdUkj4UcJxzPzc1WliMzZA==} + peerDependencies: + preact: ^10.0.0 + dependencies: + preact: 10.19.3 + dev: true + + /@prefresh/utils@1.2.0: + resolution: {integrity: sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==} + dev: true + + /@prefresh/vite@2.4.5(preact@10.19.3)(vite@5.0.12): + resolution: {integrity: sha512-iForDVJ2M8gQYnm5pHumvTEJjGGc7YNYC0GVKnHFL+GvFfKHfH9Rpq67nUAzNbjuLEpqEOUuQVQajMazWu2ZNQ==} + peerDependencies: + preact: ^10.4.0 + vite: '>=2.0.0' + dependencies: + '@babel/core': 7.23.9 + '@prefresh/babel-plugin': 0.5.1 + '@prefresh/core': 1.5.2(preact@10.19.3) + '@prefresh/utils': 1.2.0 + '@rollup/pluginutils': 4.2.1 + preact: 10.19.3 + vite: 5.0.12(@types/node@20.11.7) + transitivePeerDependencies: + - supports-color + dev: true + + /@radix-ui/primitive@1.0.1: + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + dependencies: + '@babel/runtime': 7.23.9 + dev: true + + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-context@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-direction@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-id@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.48) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + aria-hidden: 1.2.3 + react-remove-scroll: 2.5.5(@types/react@18.2.48) + dev: true + + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@floating-ui/react-dom': 2.0.7 + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.48) + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.48): + resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.48) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + '@types/react-dom': 18.2.18 + dev: true + + /@radix-ui/react-slot@1.0.2(@types/react@18.2.48): + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.48): + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.48 + dev: true + + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.48): + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.48) + '@types/react': 18.2.48 + dev: true + + /@radix-ui/rect@1.0.1: + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + dependencies: + '@babel/runtime': 7.23.9 + dev: true + + /@repeaterjs/repeater@3.0.5: + resolution: {integrity: sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA==} + dev: true + + /@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rollup/rollup-android-arm-eabi@4.9.6: + resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.9.4: - resolution: {integrity: sha512-ehcBrOR5XTl0W0t2WxfTyHCR/3Cq2jfb+I4W+Ch8Y9b5G+vbAecVv0Fx/J1QKktOrgUYsIKxWAKgIpvw56IFNA==} + /@rollup/rollup-android-arm64@4.9.6: + resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.9.4: - resolution: {integrity: sha512-1fzh1lWExwSTWy8vJPnNbNM02WZDS8AW3McEOb7wW+nPChLKf3WG2aG7fhaUmfX5FKw9zhsF5+MBwArGyNM7NA==} + /@rollup/rollup-darwin-arm64@4.9.6: + resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.9.4: - resolution: {integrity: sha512-Gc6cukkF38RcYQ6uPdiXi70JB0f29CwcQ7+r4QpfNpQFVHXRd0DfWFidoGxjSx1DwOETM97JPz1RXL5ISSB0pA==} + /@rollup/rollup-darwin-x64@4.9.6: + resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.9.4: - resolution: {integrity: sha512-g21RTeFzoTl8GxosHbnQZ0/JkuFIB13C3T7Y0HtKzOXmoHhewLbVTFBQZu+z5m9STH6FZ7L/oPgU4Nm5ErN2fw==} + /@rollup/rollup-linux-arm-gnueabihf@4.9.6: + resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.9.4: - resolution: {integrity: sha512-TVYVWD/SYwWzGGnbfTkrNpdE4HON46orgMNHCivlXmlsSGQOx/OHHYiQcMIOx38/GWgwr/po2LBn7wypkWw/Mg==} + /@rollup/rollup-linux-arm64-gnu@4.9.6: + resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.9.4: - resolution: {integrity: sha512-XcKvuendwizYYhFxpvQ3xVpzje2HHImzg33wL9zvxtj77HvPStbSGI9czrdbfrf8DGMcNNReH9pVZv8qejAQ5A==} + /@rollup/rollup-linux-arm64-musl@4.9.6: + resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.9.4: - resolution: {integrity: sha512-LFHS/8Q+I9YA0yVETyjonMJ3UA+DczeBd/MqNEzsGSTdNvSJa1OJZcSH8GiXLvcizgp9AlHs2walqRcqzjOi3A==} + /@rollup/rollup-linux-riscv64-gnu@4.9.6: + resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.9.4: - resolution: {integrity: sha512-dIYgo+j1+yfy81i0YVU5KnQrIJZE8ERomx17ReU4GREjGtDW4X+nvkBak2xAUpyqLs4eleDSj3RrV72fQos7zw==} + /@rollup/rollup-linux-x64-gnu@4.9.6: + resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.9.4: - resolution: {integrity: sha512-RoaYxjdHQ5TPjaPrLsfKqR3pakMr3JGqZ+jZM0zP2IkDtsGa4CqYaWSfQmZVgFUCgLrTnzX+cnHS3nfl+kB6ZQ==} + /@rollup/rollup-linux-x64-musl@4.9.6: + resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.9.4: - resolution: {integrity: sha512-T8Q3XHV+Jjf5e49B4EAaLKV74BbX7/qYBRQ8Wop/+TyyU0k+vSjiLVSHNWdVd1goMjZcbhDmYZUYW5RFqkBNHQ==} + /@rollup/rollup-win32-arm64-msvc@4.9.6: + resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.9.4: - resolution: {integrity: sha512-z+JQ7JirDUHAsMecVydnBPWLwJjbppU+7LZjffGf+Jvrxq+dVjIE7By163Sc9DKc3ADSU50qPVw0KonBS+a+HQ==} + /@rollup/rollup-win32-ia32-msvc@4.9.6: + resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.9.4: - resolution: {integrity: sha512-LfdGXCV9rdEify1oxlN9eamvDSjv9md9ZVMAbNHA87xqIfFCxImxan9qZ8+Un54iK2nnqPlbnSi4R54ONtbWBw==} + /@rollup/rollup-win32-x64-msvc@4.9.6: + resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -3198,40 +3756,17 @@ packages: colors: 1.2.5 string-argv: 0.3.2 - /@ryanke/pandora@0.0.9(react@18.2.0)(tailwindcss@3.4.1): - resolution: {integrity: sha512-MV5LDSS52OkDqmeXqlEF1uRBq51q3kTXBbX9ggF61UIJn83jLGleuy8sLj/K8zWvBmF8K+/yVU/VlvsUnSV/jQ==} - peerDependencies: - react: ^18.2.0 - tailwindcss: ^3.1.6 - dependencies: - clsx: 1.2.1 - nanoid: 4.0.2 - react: 18.2.0 - react-feather: 2.0.10(react@18.2.0) - tailwindcss: 3.4.1 - dev: false - - /@ryanke/venera@1.0.5: - resolution: {integrity: sha512-WjEce4AetODRKa/Jgw4kC8uUx0hrcbwcX5oPMwoVdjGuDOSA53e3bf9J6PhKeeG9yIgLCik99Vom1/cuZz/NyA==} + /@ryanke/venera@1.1.0: + resolution: {integrity: sha512-6HKTNQuUFFSKTzhblBCbgBT17+u/mswEJ4kOSokIKh/aSW7gZcDbQXVJZf+0fln20mwx+pI3WnRaWlIdE96NWQ==} engines: {node: '>=16'} - dependencies: - camel-case: 4.1.2 - comment-json: 4.2.3 - constant-case: 3.0.4 - find-up: 6.3.0 - flat: 5.0.2 - merge: 2.1.1 - minimist: 1.2.8 - toml: 3.0.0 - yaml: 2.3.4 dev: false /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@swc/core-darwin-arm64@1.3.102: - resolution: {integrity: sha512-CJDxA5Wd2cUMULj3bjx4GEoiYyyiyL8oIOu4Nhrs9X+tlg8DnkCm4nI57RJGP8Mf6BaXPIJkHX8yjcefK2RlDA==} + /@swc/core-darwin-arm64@1.3.106: + resolution: {integrity: sha512-XYcbViNyHnnm7RWOAO1YipMmthM7m2aXF32b0y+JMLYFBEyFpjVX9btLkzeL7wRx/5B3I35yJNhE+xyx0Q1Gkw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -3239,8 +3774,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64@1.3.102: - resolution: {integrity: sha512-X5akDkHwk6oAer49oER0qZMjNMkLH3IOZaV1m98uXIasAGyjo5WH1MKPeMLY1sY6V6TrufzwiSwD4ds571ytcg==} + /@swc/core-darwin-x64@1.3.106: + resolution: {integrity: sha512-YKDPhUdfuwhmOUS9+CaIwl/0Tp+f1b73BH2EIESuxSNsogZf18a8HQ8O0fQEwdiwmA5LEqw47cj+kfOWV/0+kw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -3248,8 +3783,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.102: - resolution: {integrity: sha512-kJH3XtZP9YQdjq/wYVBeFuiVQl4HaC4WwRrIxAHwe2OyvrwUI43dpW3LpxSggBnxXcVCXYWf36sTnv8S75o2Gw==} + /@swc/core-linux-arm-gnueabihf@1.3.106: + resolution: {integrity: sha512-bHxxJXogvFfocLL5inZxxtx/x/WgKozigp80Vbx0viac1fPDJrqKBw2X4MzpMiuTRAGVQ03jJI6pDwbSBf+yDw==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -3257,8 +3792,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu@1.3.102: - resolution: {integrity: sha512-flQP2WDyCgO24WmKA1wjjTx+xfCmavUete2Kp6yrM+631IHLGnr17eu7rYJ/d4EnDBId/ytMyrnWbTVkaVrpbQ==} + /@swc/core-linux-arm64-gnu@1.3.106: + resolution: {integrity: sha512-c7jue++CHLgtpeaakEukoCLT9eNrImizbleE9Y7Is8CHqLq/7DG4s+7ma9DFKXIzW2MpTg9byIEQfpqSphVW6A==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3266,8 +3801,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.3.102: - resolution: {integrity: sha512-bQEQSnC44DyoIGLw1+fNXKVGoCHi7eJOHr8BdH0y1ooy9ArskMjwobBFae3GX4T1AfnrTaejyr0FvLYIb0Zkog==} + /@swc/core-linux-arm64-musl@1.3.106: + resolution: {integrity: sha512-51EaC3Q8qAhLtWVnAVqoYX/gk3tK31cCBzUpwCcmhianhEBM2/WtKRAS4MqPhE8VVZuN3WjO2c2JaF2mX0yuoA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -3275,8 +3810,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu@1.3.102: - resolution: {integrity: sha512-dFvnhpI478svQSxqISMt00MKTDS0e4YtIr+ioZDG/uJ/q+RpcNy3QI2KMm05Fsc8Y0d4krVtvCKWgfUMsJZXAg==} + /@swc/core-linux-x64-gnu@1.3.106: + resolution: {integrity: sha512-tOUi8BB6jAeCXgx7ESLNnX7nrbMVKQ/XajK77v7Ad4SXf9HYArnimBJpXUUyVFJTXLSv4e6c7s6XHHqXb5Lwcg==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3284,8 +3819,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl@1.3.102: - resolution: {integrity: sha512-+a0M3CvjeIRNA/jTCzWEDh2V+mhKGvLreHOL7J97oULZy5yg4gf7h8lQX9J8t9QLbf6fsk+0F8bVH1Ie/PbXjA==} + /@swc/core-linux-x64-musl@1.3.106: + resolution: {integrity: sha512-binLw4Lbd83NPy4/m/teH2nbaifxveSD+sKDvpxywRbvYW2I0w/iCBpUBcbnl16TQF4TPOGpq5YwG9lVxPVw5g==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3293,8 +3828,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc@1.3.102: - resolution: {integrity: sha512-w76JWLjkZNOfkB25nqdWUNCbt0zJ41CnWrJPZ+LxEai3zAnb2YtgB/cCIrwxDebRuMgE9EJXRj7gDDaTEAMOOQ==} + /@swc/core-win32-arm64-msvc@1.3.106: + resolution: {integrity: sha512-n4ttBWr8tM7DPzwcEOIBTyTMHZTzCmbic/HTtxEsPyMAf/Daen+yrTKzjPP6k2usfSrjkxA780RSJJxI1N8r2w==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -3302,8 +3837,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.3.102: - resolution: {integrity: sha512-vlDb09HiGqKwz+2cxDS9T5/461ipUQBplvuhW+cCbzzGuPq8lll2xeyZU0N1E4Sz3MVdSPx1tJREuRvlQjrwNg==} + /@swc/core-win32-ia32-msvc@1.3.106: + resolution: {integrity: sha512-GhDNIwxE5FhkujESI6h/4ysT3wxwmrzTUlZYaR8rRui6a6SdX9feIPUHPEE5o5hpyp+xqlmvRxKkRxOnwsq8iA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -3311,8 +3846,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc@1.3.102: - resolution: {integrity: sha512-E/jfSD7sShllxBwwgDPeXp1UxvIqehj/ShSUqq1pjR/IDRXngcRSXKJK92mJkNFY7suH6BcCWwzrxZgkO7sWmw==} + /@swc/core-win32-x64-msvc@1.3.106: + resolution: {integrity: sha512-2M6yWChuMS1+/MPo3Dor0SOMkvmiugonWlzsZBAu/oZboH2xKrHSRv7brsBujb2Oe47r+NsbV+vq9tnnP9Vl1Q==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -3320,8 +3855,8 @@ packages: dev: true optional: true - /@swc/core@1.3.102: - resolution: {integrity: sha512-OAjNLY/f6QWKSDzaM3bk31A+OYHu6cPa9P/rFIx8X5d24tHXUpRiiq6/PYI6SQRjUPlB72GjsjoEU8F+ALadHg==} + /@swc/core@1.3.106: + resolution: {integrity: sha512-++QPSPkFq2qELYVScxNHJC42hKQChjiTWS2P0QQ5JWT4NHb9lmNSfrc1ylFIyImwRnxsW2MTBALLYLf95EFAsg==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -3333,28 +3868,22 @@ packages: '@swc/counter': 0.1.2 '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.102 - '@swc/core-darwin-x64': 1.3.102 - '@swc/core-linux-arm-gnueabihf': 1.3.102 - '@swc/core-linux-arm64-gnu': 1.3.102 - '@swc/core-linux-arm64-musl': 1.3.102 - '@swc/core-linux-x64-gnu': 1.3.102 - '@swc/core-linux-x64-musl': 1.3.102 - '@swc/core-win32-arm64-msvc': 1.3.102 - '@swc/core-win32-ia32-msvc': 1.3.102 - '@swc/core-win32-x64-msvc': 1.3.102 + '@swc/core-darwin-arm64': 1.3.106 + '@swc/core-darwin-x64': 1.3.106 + '@swc/core-linux-arm-gnueabihf': 1.3.106 + '@swc/core-linux-arm64-gnu': 1.3.106 + '@swc/core-linux-arm64-musl': 1.3.106 + '@swc/core-linux-x64-gnu': 1.3.106 + '@swc/core-linux-x64-musl': 1.3.106 + '@swc/core-win32-arm64-msvc': 1.3.106 + '@swc/core-win32-ia32-msvc': 1.3.106 + '@swc/core-win32-x64-msvc': 1.3.106 dev: true /@swc/counter@0.1.2: resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} dev: true - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - dependencies: - tslib: 2.6.2 - dev: false - /@swc/types@0.1.5: resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} dev: true @@ -3369,7 +3898,7 @@ packages: lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 tailwindcss: 3.4.1 - dev: false + dev: true /@tokenizer/token@0.3.0: resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -3402,7 +3931,7 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.10.6 + '@types/node': 20.11.7 dev: true /@types/bytes@3.1.4: @@ -3412,14 +3941,14 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.10.6 + '@types/node': 20.11.7 dev: true /@types/debug@4.1.12: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: '@types/ms': 0.7.34 - dev: false + dev: true /@types/dedent@0.7.2: resolution: {integrity: sha512-kRiitIeUg1mPV9yH4VUJ/1uk2XjyANfeL8/7rH1tsjvHeO9PJLBHJIYsFWmAvmGj5u8rj+1TZx7PZzW2qLw3Lw==} @@ -3429,15 +3958,16 @@ packages: resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} dependencies: '@types/estree': 1.0.5 - dev: false + dev: true /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true - /@types/express-serve-static-core@4.17.41: - resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} + /@types/express-serve-static-core@4.17.42: + resolution: {integrity: sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==} dependencies: - '@types/node': 20.10.6 + '@types/node': 20.11.7 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -3447,7 +3977,7 @@ packages: resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.41 + '@types/express-serve-static-core': 4.17.42 '@types/qs': 6.9.11 '@types/serve-static': 1.15.5 dev: true @@ -3455,36 +3985,36 @@ packages: /@types/fluent-ffmpeg@2.1.24: resolution: {integrity: sha512-g5oQO8Jgi2kFS3tTub7wLvfLztr1s8tdXmRd8PiL/hLMLzTIAyMR2sANkTggM/rdEDAg3d63nYRRVepwBiCw5A==} dependencies: - '@types/node': 20.10.6 + '@types/node': 20.11.7 dev: true /@types/hast@3.0.3: resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} dependencies: '@types/unist': 3.0.2 - dev: false + dev: true /@types/hoist-non-react-statics@3.3.5: resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} dependencies: - '@types/react': 18.2.47 + '@types/react': 18.2.48 hoist-non-react-statics: 3.3.2 - dev: false + dev: true /@types/http-errors@2.0.4: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} dev: true - /@types/js-yaml@4.0.5: - resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} + /@types/js-yaml@4.0.9: + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} dev: true /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true - /@types/json-stable-stringify@1.0.34: - resolution: {integrity: sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==} + /@types/json-stable-stringify@1.0.36: + resolution: {integrity: sha512-b7bq23s4fgBB76n34m2b3RBf6M369B0Z9uRR8aHTMd8kZISRkmDEpPD8hhpYvDFzr3bJCPES96cm3Q6qRNDbQw==} dev: true /@types/json5@0.0.29: @@ -3494,25 +4024,21 @@ packages: /@types/jsonwebtoken@9.0.5: resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} dependencies: - '@types/node': 20.10.6 - - /@types/lodash@4.14.202: - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} - dev: true + '@types/node': 20.11.7 /@types/luxon@3.3.8: resolution: {integrity: sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ==} dev: false - /@types/luxon@3.4.0: - resolution: {integrity: sha512-PEVoA4MOfSsFNaPrZjIUGUZujBDxnO/tj2A2N9KfzlR+pNgpBdDuk0TmRvSMAVUP5q4q8IkMEZ8UOp3MIr+QgA==} + /@types/luxon@3.4.2: + resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==} dev: true /@types/mdast@4.0.3: resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} dependencies: '@types/unist': 3.0.2 - dev: false + dev: true /@types/mime-types@2.1.4: resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} @@ -3528,28 +4054,29 @@ packages: /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + dev: true /@types/node@13.13.52: resolution: {integrity: sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ==} - dev: false + dev: true - /@types/node@20.10.6: - resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} + /@types/node@20.11.7: + resolution: {integrity: sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A==} dependencies: undici-types: 5.26.5 /@types/nodemailer@6.4.14: resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==} dependencies: - '@types/node': 20.10.6 + '@types/node': 20.11.7 dev: true - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true - /@types/passport-jwt@4.0.0: - resolution: {integrity: sha512-m32144UaQENieShQDWVQ8w+CVAzCV/pDahICUlQvmqLOePGglQaMRQ28I7fKnRMFLNwVP4eWssOtcQ0kLe1vww==} + /@types/passport-jwt@4.0.1: + resolution: {integrity: sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==} dependencies: '@types/jsonwebtoken': 9.0.5 '@types/passport-strategy': 0.2.38 @@ -3570,10 +4097,11 @@ packages: /@types/prismjs@1.26.3: resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} - dev: false + dev: true /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + dev: true /@types/qs@6.9.11: resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} @@ -3583,15 +4111,23 @@ packages: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: true - /@types/react@18.2.47: - resolution: {integrity: sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==} + /@types/react-dom@18.2.18: + resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} + dependencies: + '@types/react': 18.2.48 + dev: true + + /@types/react@18.2.48: + resolution: {integrity: sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 csstype: 3.1.3 + dev: true /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + dev: true /@types/semver@7.5.6: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} @@ -3601,7 +4137,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.10.6 + '@types/node': 20.11.7 dev: true /@types/serve-static@1.15.5: @@ -3609,29 +4145,35 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.10.6 + '@types/node': 20.11.7 dev: true /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - dev: false + dev: true /@types/unist@3.0.2: resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - dev: false - - /@types/validator@13.7.14: - resolution: {integrity: sha512-J6OAed6rhN6zyqL9Of6ZMamhlsOEU/poBVvbHr/dKOYKTeuYYMlDkMv+b6UUV0o2i0tw73cgyv/97WTWaUl0/g==} - dev: false - - /@types/ws@8.5.5: - resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} - dependencies: - '@types/node': 20.10.6 dev: true - /@typescript-eslint/eslint-plugin@6.18.0(@typescript-eslint/parser@6.18.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-3lqEvQUdCozi6d1mddWqd+kf8KxmGq2Plzx36BlkjuQe3rSTm/O98cLf0A4uDO+a5N1KD2SeEEl6fW97YHY+6w==} + /@types/utf-8-validate@5.0.2: + resolution: {integrity: sha512-ta7cOkEiNr0RGKARljNBaI7E1GBIr3VwS9RrSoQRmbdv1RVq7Q6VhjSGmQHYNt3nHn051qZBKKrpnw7cnEMDuQ==} + dependencies: + '@types/node': 20.11.7 + dev: true + + /@types/validator@13.11.8: + resolution: {integrity: sha512-c/hzNDBh7eRF+KbCf+OoZxKbnkpaK/cKp9iLQWqB7muXtM+MtL9SUUH8vCFcLn6dH1Qm05jiexK0ofWY7TfOhQ==} + dev: false + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.11.7 + dev: true + + /@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -3642,15 +4184,15 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.18.0 - '@typescript-eslint/type-utils': 6.18.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.18.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.18.0 + '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.19.1 + '@typescript-eslint/type-utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.19.1 debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 natural-compare: 1.4.0 semver: 7.5.4 ts-api-utils: 1.0.3(typescript@5.3.3) @@ -3659,8 +4201,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.18.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-v6uR68SFvqhNQT41frCMCQpsP+5vySy6IdgjlzUWoo7ALCnpaWYcz/Ij2k4L8cEsL0wkvOviCMpjmtRtHNOKzA==} + /@typescript-eslint/parser@6.19.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -3669,10 +4211,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.18.0 - '@typescript-eslint/types': 6.18.0 - '@typescript-eslint/typescript-estree': 6.18.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.18.0 + '@typescript-eslint/scope-manager': 6.19.1 + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.19.1 debug: 4.3.4 eslint: 8.56.0 typescript: 5.3.3 @@ -3680,16 +4222,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.18.0: - resolution: {integrity: sha512-o/UoDT2NgOJ2VfHpfr+KBY2ErWvCySNUIX/X7O9g8Zzt/tXdpfEU43qbNk8LVuWUT2E0ptzTWXh79i74PP0twA==} + /@typescript-eslint/scope-manager@6.19.1: + resolution: {integrity: sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.18.0 - '@typescript-eslint/visitor-keys': 6.18.0 + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/visitor-keys': 6.19.1 dev: true - /@typescript-eslint/type-utils@6.18.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-ZeMtrXnGmTcHciJN1+u2CigWEEXgy1ufoxtWcHORt5kGvpjjIlK9MUhzHm4RM8iVy6dqSaZA/6PVkX6+r+ChjQ==} + /@typescript-eslint/type-utils@6.19.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -3698,8 +4240,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.18.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.18.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) + '@typescript-eslint/utils': 6.19.1(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.3.3) @@ -3708,13 +4250,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.18.0: - resolution: {integrity: sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==} + /@typescript-eslint/types@6.19.1: + resolution: {integrity: sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.18.0(typescript@5.3.3): - resolution: {integrity: sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==} + /@typescript-eslint/typescript-estree@6.19.1(typescript@5.3.3): + resolution: {integrity: sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -3722,8 +4264,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.18.0 - '@typescript-eslint/visitor-keys': 6.18.0 + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/visitor-keys': 6.19.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3735,8 +4277,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.18.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-wiKKCbUeDPGaYEYQh1S580dGxJ/V9HI7K5sbGAVklyf+o5g3O+adnS4UNJajplF4e7z2q0uVBaTdT/yLb4XAVA==} + /@typescript-eslint/utils@6.19.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -3744,9 +4286,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.18.0 - '@typescript-eslint/types': 6.18.0 - '@typescript-eslint/typescript-estree': 6.18.0(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.19.1 + '@typescript-eslint/types': 6.19.1 + '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.3.3) eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: @@ -3754,49 +4296,108 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.18.0: - resolution: {integrity: sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==} + /@typescript-eslint/visitor-keys@6.19.1: + resolution: {integrity: sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.18.0 + '@typescript-eslint/types': 6.19.1 eslint-visitor-keys: 3.4.3 dev: true /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - /@vitest/expect@1.1.3: - resolution: {integrity: sha512-MnJqsKc1Ko04lksF9XoRJza0bGGwTtqfbyrsYv5on4rcEkdo+QgUdITenBQBUltKzdxW7K3rWh+nXRULwsdaVg==} - dependencies: - '@vitest/spy': 1.1.3 - '@vitest/utils': 1.1.3 - chai: 4.4.0 dev: true - /@vitest/runner@1.1.3: - resolution: {integrity: sha512-Va2XbWMnhSdDEh/OFxyUltgQuuDRxnarK1hW5QNN4URpQrqq6jtt8cfww/pQQ4i0LjoYxh/3bYWvDFlR9tU73g==} + /@vavite/connect@4.0.2(vite@5.0.12): + resolution: {integrity: sha512-wEEjsKXUvmOEzQ5jJm33AAKmX9tNwjuxmTA5CHwHzria4QcjRUxgONo0jjhvIY4S+e9/gkf6e24rREjAGfgcfA==} + peerDependencies: + vite: ^2.8.1 || 3 || 4 || 5 dependencies: - '@vitest/utils': 1.1.3 + '@types/node': 20.11.7 + vite: 5.0.12(@types/node@20.11.7) + dev: true + + /@vavite/expose-vite-dev-server@4.0.2(vite@5.0.12): + resolution: {integrity: sha512-gUzcMxAjw/NRMRxI/bBJEYA8AnrIpto0yilGMI2HRSuNo2CcTPpOPNDkZEUpCfM/vlXhIaPTVRmLxuaQmlmsaQ==} + peerDependencies: + vite: ^2.8.1 || 3 || 4 || 5 + dependencies: + vite: 5.0.12(@types/node@20.11.7) + dev: true + + /@vavite/multibuild-cli@4.0.2(vite@5.0.12): + resolution: {integrity: sha512-v4OmeewB1/z+OLazAlCz8jHzQ5wPnhlT5qPPkFLocPUMgnicB8G/mZMcgBFQ/gBLGd/lBtQB/5aZoBZSwLi4kQ==} + hasBin: true + peerDependencies: + vite: ^2.8.1 || 3 || 4 || 5 + dependencies: + '@types/node': 20.11.7 + '@vavite/multibuild': 4.0.2(vite@5.0.12) + cac: 6.7.14 + picocolors: 1.0.0 + vite: 5.0.12(@types/node@20.11.7) + dev: true + + /@vavite/multibuild@4.0.2(vite@5.0.12): + resolution: {integrity: sha512-pkaPDiSCFmTGiuF1qIkyjZcK4+tSEzIFJP5Ge4UXhf03X2JDR+/8SCIp0Nkj+n8fRSsQquk2naSkmoA8oGQFvw==} + peerDependencies: + vite: ^2.8.1 || 3 || 4 || 5 + dependencies: + '@types/node': 20.11.7 + cac: 6.7.14 + picocolors: 1.0.0 + vite: 5.0.12(@types/node@20.11.7) + dev: true + + /@vavite/node-loader@4.0.2(vite@5.0.12): + resolution: {integrity: sha512-8bPk16xYLThZEMWdFTuyD80WBzZ6pEQrqyylohlUG5WzHe7eJ1oDdqlRDikpMq2V6tKcd4dw148wZkrpFSVVWA==} + hasBin: true + peerDependencies: + vite: ^2.8.1 || 3 || 4 || 5 + dependencies: + vite: 5.0.12(@types/node@20.11.7) + dev: true + + /@vavite/reloader@4.0.2(vite@5.0.12): + resolution: {integrity: sha512-BfATs/3BO8TSo4dVBB30Ku2MhWN5AuaiJSf9isRjLNVBf+wHDy6RgyDO6M9A9fzH1cAZGN2SeGRxZLYuX2Bp/g==} + peerDependencies: + vite: ^2.8.1 || 3 || 4 || 5 + dependencies: + vite: 5.0.12(@types/node@20.11.7) + dev: true + + /@vitest/expect@1.2.1: + resolution: {integrity: sha512-/bqGXcHfyKgFWYwIgFr1QYDaR9e64pRKxgBNWNXPefPFRhgm+K3+a/dS0cUGEreWngets3dlr8w8SBRw2fCfFQ==} + dependencies: + '@vitest/spy': 1.2.1 + '@vitest/utils': 1.2.1 + chai: 4.4.1 + dev: true + + /@vitest/runner@1.2.1: + resolution: {integrity: sha512-zc2dP5LQpzNzbpaBt7OeYAvmIsRS1KpZQw4G3WM/yqSV1cQKNKwLGmnm79GyZZjMhQGlRcSFMImLjZaUQvNVZQ==} + dependencies: + '@vitest/utils': 1.2.1 p-limit: 5.0.0 - pathe: 1.1.1 + pathe: 1.1.2 dev: true - /@vitest/snapshot@1.1.3: - resolution: {integrity: sha512-U0r8pRXsLAdxSVAyGNcqOU2H3Z4Y2dAAGGelL50O0QRMdi1WWeYHdrH/QWpN1e8juWfVKsb8B+pyJwTC+4Gy9w==} + /@vitest/snapshot@1.2.1: + resolution: {integrity: sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q==} dependencies: magic-string: 0.30.5 - pathe: 1.1.1 + pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.1.3: - resolution: {integrity: sha512-Ec0qWyGS5LhATFQtldvChPTAHv08yHIOZfiNcjwRQbFPHpkih0md9KAbs7TfeIfL7OFKoe7B/6ukBTqByubXkQ==} + /@vitest/spy@1.2.1: + resolution: {integrity: sha512-vG3a/b7INKH7L49Lbp0IWrG6sw9j4waWAucwnksPB1r1FTJgV7nkBByd9ufzu6VWya/QTvQW4V9FShZbZIB2UQ==} dependencies: tinyspy: 2.2.0 dev: true - /@vitest/utils@1.1.3: - resolution: {integrity: sha512-Dyt3UMcdElTll2H75vhxfpZu03uFpXRCHxWnzcrFjZxT1kTbq8ALUYIeBgGolo1gldVdI0YSlQRacsqxTwNqwg==} + /@vitest/utils@1.2.1: + resolution: {integrity: sha512-bsH6WVZYe/J2v3+81M5LDU8kW76xWObKIURpPrOXm2pjBniBu2MERI/XP60GpS4PHU3jyK50LUutOwrx4CyHUg==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -3816,19 +4417,19 @@ packages: /@whatwg-node/fetch@0.8.8: resolution: {integrity: sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==} dependencies: - '@peculiar/webcrypto': 1.4.3 + '@peculiar/webcrypto': 1.4.5 '@whatwg-node/node-fetch': 0.3.6 busboy: 1.6.0 urlpattern-polyfill: 8.0.2 - web-streams-polyfill: 3.2.1 + web-streams-polyfill: 3.3.2 dev: true - /@whatwg-node/fetch@0.9.9: - resolution: {integrity: sha512-OTVoDm039CNyAWSRc2WBimMl/N9J4Fk2le21Xzcf+3OiWPNNSIbMnpWKBUyraPh2d9SAEgoBdQxTfVNihXgiUw==} + /@whatwg-node/fetch@0.9.16: + resolution: {integrity: sha512-mqasZiUNquRe3ea9+aCAuo81BR6vq5opUKprPilIHTnrg8a21Z1T1OrI+KiMFX8OmwO5HUJe/vro47lpj2JPWQ==} engines: {node: '>=16.0.0'} dependencies: - '@whatwg-node/node-fetch': 0.4.14 - urlpattern-polyfill: 9.0.0 + '@whatwg-node/node-fetch': 0.5.5 + urlpattern-polyfill: 10.0.0 dev: true /@whatwg-node/node-fetch@0.3.6: @@ -3841,14 +4442,14 @@ packages: tslib: 2.6.2 dev: true - /@whatwg-node/node-fetch@0.4.14: - resolution: {integrity: sha512-ii/eZz2PcjLGj9D6WfsmfzlTzZV1Kz6MxYpq2Vc5P21J8vkKfENWC9B2ISsFCKovxElLukIwPg8HTrHFsLNflg==} + /@whatwg-node/node-fetch@0.5.5: + resolution: {integrity: sha512-LhE0Oo95+dOrrzrJncrpCaR3VHSjJ5Gvkl5g9WVfkPKSKkxCbMeOsRQ+v9LrU9lRvXBJn8JicXqSufKFEpyRbQ==} engines: {node: '>=16.0.0'} dependencies: + '@kamilkisiela/fast-url-parser': 1.1.4 '@whatwg-node/events': 0.1.1 busboy: 1.6.0 fast-querystring: 1.1.2 - fast-url-parser: 1.1.3 tslib: 2.6.2 dev: true @@ -3857,46 +4458,44 @@ packages: engines: {node: '>=8'} dependencies: tslib: 2.6.2 - dev: false + dev: true /@wry/context@0.7.4: resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==} engines: {node: '>=8'} dependencies: tslib: 2.6.2 - dev: false + dev: true /@wry/equality@0.5.7: resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==} engines: {node: '>=8'} dependencies: tslib: 2.6.2 - dev: false + dev: true /@wry/trie@0.4.3: resolution: {integrity: sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==} engines: {node: '>=8'} dependencies: tslib: 2.6.2 - dev: false + dev: true /@wry/trie@0.5.0: resolution: {integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==} engines: {node: '>=8'} dependencies: tslib: 2.6.2 - dev: false + dev: true /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 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-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -3916,8 +4515,8 @@ packages: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - /acorn-walk@8.3.1: - resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} dev: true @@ -3951,7 +4550,6 @@ packages: optional: true dependencies: ajv: 8.12.0 - dev: false /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -3969,7 +4567,6 @@ packages: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: false /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -3986,16 +4583,19 @@ packages: /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + dev: true /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} + dev: true /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -4011,9 +4611,11 @@ packages: /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + dev: true /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -4024,7 +4626,6 @@ packages: /archy@1.0.0: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: false /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -4032,7 +4633,7 @@ packages: /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: false + dev: true /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -4043,6 +4644,13 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true + /aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} + dependencies: + tslib: 2.6.2 + dev: true + /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: @@ -4067,10 +4675,6 @@ packages: is-string: 1.0.7 dev: true - /array-timsort@1.0.3: - resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} - dev: false - /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -4082,7 +4686,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - es-shim-unscopables: 1.0.0 + es-shim-unscopables: 1.0.2 get-intrinsic: 1.2.2 dev: true @@ -4093,7 +4697,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - es-shim-unscopables: 1.0.0 + es-shim-unscopables: 1.0.2 dev: true /array.prototype.flatmap@1.3.2: @@ -4103,7 +4707,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - es-shim-unscopables: 1.0.0 + es-shim-unscopables: 1.0.2 dev: true /array.prototype.tosorted@1.1.2: @@ -4112,7 +4716,7 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - es-shim-unscopables: 1.0.0 + es-shim-unscopables: 1.0.2 get-intrinsic: 1.2.2 dev: true @@ -4155,8 +4759,8 @@ packages: engines: {node: '>=8'} dev: true - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} dev: false /asynciterator.prototype@1.0.0: @@ -4168,28 +4772,27 @@ packages: /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - dev: false /auto-bind@4.0.0: resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} engines: {node: '>=8'} dev: true - /autoprefixer@10.4.16(postcss@8.4.33): - resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + /autoprefixer@10.4.17(postcss@8.4.33): + resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: browserslist: 4.22.2 - caniuse-lite: 1.0.30001574 + caniuse-lite: 1.0.30001580 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 postcss: 8.4.33 postcss-value-parser: 4.2.0 - dev: false + dev: true /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} @@ -4204,7 +4807,6 @@ packages: fastq: 1.16.0 transitivePeerDependencies: - supports-color - dev: false /axe-core@4.7.0: resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} @@ -4221,41 +4823,47 @@ packages: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} dev: true - /babel-preset-fbjs@3.4.0(@babel/core@7.23.7): + /babel-plugin-transform-hook-names@1.0.2(@babel/core@7.23.9): + resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==} + peerDependencies: + '@babel/core': ^7.12.10 + dependencies: + '@babel/core': 7.23.9 + dev: true + + /babel-preset-fbjs@3.4.0(@babel/core@7.23.9): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.7) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) - '@babel/plugin-syntax-flow': 7.21.4(@babel/core@7.23.7) - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.23.7) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.23.7) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.23.7) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.23.7) - '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.23.7) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.23.7) - '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.23.7) - '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.23.7) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.23.7) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.23.7) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.23.7) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.23.7) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-react-jsx': 7.21.0(@babel/core@7.23.7) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.23.7) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.23.7) + '@babel/core': 7.23.9 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 - transitivePeerDependencies: - - supports-color dev: true /backo2@1.0.2: @@ -4264,7 +4872,7 @@ packages: /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: false + dev: true /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -4295,6 +4903,10 @@ packages: readable-stream: 3.6.2 dev: true + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -4318,10 +4930,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001574 - electron-to-chromium: 1.4.623 + caniuse-lite: 1.0.30001580 + electron-to-chromium: 1.4.647 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -4333,6 +4946,10 @@ packages: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} dev: false + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + /buffer-writer@2.0.0: resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} engines: {node: '>=4'} @@ -4349,7 +4966,6 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} @@ -4362,13 +4978,13 @@ packages: semver: 7.5.4 dev: true - /bundle-require@4.0.2(esbuild@0.19.11): + /bundle-require@4.0.2(esbuild@0.19.12): resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' dependencies: - esbuild: 0.19.11 + esbuild: 0.19.12 load-tsconfig: 0.2.5 dev: true @@ -4377,6 +4993,7 @@ packages: engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 + dev: true /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} @@ -4393,7 +5010,7 @@ packages: dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.2 - set-function-length: 1.1.1 + set-function-length: 1.2.0 dev: true /callsites@3.1.0: @@ -4406,19 +5023,21 @@ packages: dependencies: pascal-case: 3.1.2 tslib: 2.6.2 + dev: true /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - dev: false + dev: true /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001574: - resolution: {integrity: sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==} + /caniuse-lite@1.0.30001580: + resolution: {integrity: sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA==} + dev: true /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -4430,10 +5049,10 @@ packages: /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false + dev: true - /chai@4.4.0: - resolution: {integrity: sha512-x9cHNq1uvkCdU+5xTkNh5WtgD4e4yDFCsp9jVc7N7qVeKeftv3gO/ZrviX5d+3ZfxdYnZXZYujjRInu1RogU6A==} + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 @@ -4452,6 +5071,7 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -4465,21 +5085,6 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /change-case-all@1.0.14: - resolution: {integrity: sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==} - dependencies: - change-case: 4.1.2 - is-lower-case: 2.0.2 - is-upper-case: 2.0.2 - lower-case: 2.0.2 - lower-case-first: 2.0.2 - sponge-case: 1.0.1 - swap-case: 2.0.2 - title-case: 3.0.3 - upper-case: 2.0.2 - upper-case-first: 2.0.2 - dev: true - /change-case-all@1.0.15: resolution: {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==} dependencies: @@ -4514,19 +5119,19 @@ packages: /character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: false + dev: true /character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: false + dev: true /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: false + dev: true /character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: false + dev: true /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -4561,12 +5166,12 @@ packages: resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} dev: false - /class-validator@0.14.0: - resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} + /class-validator@0.14.1: + resolution: {integrity: sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==} dependencies: - '@types/validator': 13.7.14 - libphonenumber-js: 1.10.24 - validator: 13.9.0 + '@types/validator': 13.11.8 + libphonenumber-js: 1.10.54 + validator: 13.11.0 dev: false /clean-regexp@1.0.0: @@ -4587,8 +5192,8 @@ packages: restore-cursor: 3.1.0 dev: true - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} dev: true @@ -4605,10 +5210,6 @@ packages: engines: {node: '>= 10'} dev: true - /client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false - /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: @@ -4624,26 +5225,23 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + dev: true /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false - /clsx@2.1.0: resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} engines: {node: '>=6'} - dev: false + dev: true /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==} @@ -4653,6 +5251,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==} @@ -4685,7 +5284,7 @@ packages: /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: false + dev: true /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} @@ -4699,17 +5298,7 @@ packages: /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - - /comment-json@4.2.3: - resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} - engines: {node: '>= 6'} - dependencies: - array-timsort: 1.0.3 - core-util-is: 1.0.3 - esprima: 4.0.1 - has-own-prop: 2.0.0 - repeat-string: 1.6.1 - dev: false + dev: true /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} @@ -4734,7 +5323,7 @@ packages: supports-color: 8.1.1 tree-kill: 1.2.2 yargs: 17.7.2 - dev: false + dev: true /consola@2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} @@ -4746,6 +5335,7 @@ packages: no-case: 3.0.4 tslib: 2.6.2 upper-case: 2.0.2 + dev: true /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} @@ -4760,6 +5350,7 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true /cookie-signature@1.2.1: resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} @@ -4769,35 +5360,36 @@ packages: /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - dev: false /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: toggle-selection: 1.0.6 - dev: false + dev: true - /core-js-compat@3.35.0: - resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==} + /core-js-compat@3.35.1: + resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} dependencies: browserslist: 4.22.2 dev: true - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - - /cosmiconfig@8.2.0: - resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} + /cosmiconfig@8.3.6(typescript@5.3.3): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 + typescript: 5.3.3 dev: true - /cosmiconfig@9.0.0: + /cosmiconfig@9.0.0(typescript@5.3.3): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: @@ -4810,6 +5402,7 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 + typescript: 5.3.3 dev: true /create-require@1.1.1: @@ -4844,15 +5437,32 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - dev: false + dev: true /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: true /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -4866,12 +5476,12 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.23.7 - dev: false + '@babel/runtime': 7.23.9 + dev: true /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dev: false + dev: true /debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -4908,7 +5518,7 @@ packages: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 - dev: false + dev: true /dedent@1.5.1: resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} @@ -4933,12 +5543,7 @@ packages: /deepmerge@2.2.1: resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} engines: {node: '>=0.10.0'} - dev: false - - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: false + dev: true /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -4952,7 +5557,7 @@ packages: dependencies: get-intrinsic: 1.2.2 gopd: 1.0.1 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 dev: true /define-properties@1.2.1: @@ -4960,7 +5565,7 @@ packages: engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 object-keys: 1.1.1 dev: true @@ -4977,6 +5582,7 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + dev: true /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} @@ -4994,15 +5600,19 @@ packages: engines: {node: '>=8'} dev: false + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: true + /devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} dependencies: dequal: 2.0.3 - dev: false + dev: true /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: false + dev: true /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} @@ -5022,7 +5632,7 @@ packages: /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: false + dev: true /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} @@ -5038,6 +5648,33 @@ packages: esutils: 2.0.3 dev: true + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: @@ -5049,12 +5686,18 @@ packages: resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} + /dotenv@16.4.1: + resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} + engines: {node: '>=12'} + dev: true + /dset@3.1.3: resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} engines: {node: '>=4'} /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true /ecdsa-sig-formatter@1.0.11: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} @@ -5066,15 +5709,16 @@ packages: resolution: {integrity: sha512-ofkXJtn7z0urokN62DI3SBo/5xAtF0rR7tn+S/bSYV79Ka8pTajIIl+fFQ1q88DQEImymmo97M4azY3WX/nUdg==} engines: {node: '>=4'} dependencies: - version-range: 4.13.0 + version-range: 4.14.0 dev: true /effect@2.0.0-next.62: resolution: {integrity: sha512-fJhLzf5oouL4WZP314ZJgZz5Bel7OHTY+YFxO06sW1mSvqJz0s28y7jDHr5zhtTNM1YRvzbeLYUYfNaJYKqx1A==} dev: true - /electron-to-chromium@1.4.623: - resolution: {integrity: sha512-lKoz10iCYlP1WtRYdh5MvocQPWVRoI7ysp6qf18bmeBgR8abE6+I2CsfyNKztRDZvhdWc+krKT6wS7Neg8sw3A==} + /electron-to-chromium@1.4.647: + resolution: {integrity: sha512-Z/fTNGwc45WrYQhPaEcz5tAJuZZ8G7S/DBnhS6Kgp4BxnS40Z/HqlJ0hHg3Z79IGVzuVartIlTcjw/cQbPLgOw==} + dev: true /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -5082,9 +5726,17 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} @@ -5094,6 +5746,11 @@ packages: strip-ansi: 6.0.1 dev: true + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + /env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -5120,7 +5777,7 @@ packages: get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 @@ -5135,10 +5792,10 @@ packages: is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 - object.assign: 4.1.4 + object.assign: 4.1.5 regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.2 string.prototype.trim: 1.2.8 string.prototype.trimend: 1.0.7 string.prototype.trimstart: 1.0.7 @@ -5161,12 +5818,16 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.2 globalthis: 1.0.3 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.6 iterator.prototype: 1.1.2 - safe-array-concat: 1.0.1 + safe-array-concat: 1.1.0 + dev: true + + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} dev: true /es-set-tostringtag@2.0.2: @@ -5178,10 +5839,10 @@ packages: hasown: 2.0.0 dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - has: 1.0.3 + hasown: 2.0.0 dev: true /es-to-primitive@1.2.1: @@ -5193,35 +5854,35 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.19.11 - '@esbuild/android-arm': 0.19.11 - '@esbuild/android-arm64': 0.19.11 - '@esbuild/android-x64': 0.19.11 - '@esbuild/darwin-arm64': 0.19.11 - '@esbuild/darwin-x64': 0.19.11 - '@esbuild/freebsd-arm64': 0.19.11 - '@esbuild/freebsd-x64': 0.19.11 - '@esbuild/linux-arm': 0.19.11 - '@esbuild/linux-arm64': 0.19.11 - '@esbuild/linux-ia32': 0.19.11 - '@esbuild/linux-loong64': 0.19.11 - '@esbuild/linux-mips64el': 0.19.11 - '@esbuild/linux-ppc64': 0.19.11 - '@esbuild/linux-riscv64': 0.19.11 - '@esbuild/linux-s390x': 0.19.11 - '@esbuild/linux-x64': 0.19.11 - '@esbuild/netbsd-x64': 0.19.11 - '@esbuild/openbsd-x64': 0.19.11 - '@esbuild/sunos-x64': 0.19.11 - '@esbuild/win32-arm64': 0.19.11 - '@esbuild/win32-ia32': 0.19.11 - '@esbuild/win32-x64': 0.19.11 + '@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 /escalade@3.1.1: @@ -5235,6 +5896,7 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -5244,6 +5906,7 @@ packages: /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + dev: true /eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -5255,7 +5918,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -5276,7 +5939,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 @@ -5295,7 +5958,7 @@ packages: regexpp: 3.2.0 dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.18.0)(eslint@8.56.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -5305,7 +5968,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -5314,7 +5977,7 @@ packages: doctrine: 2.1.0 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -5336,7 +5999,7 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.7 + '@babel/runtime': 7.23.9 aria-query: 5.3.0 array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 @@ -5409,7 +6072,7 @@ packages: '@eslint/eslintrc': 2.1.4 ci-info: 4.0.0 clean-regexp: 1.0.0 - core-js-compat: 3.35.0 + core-js-compat: 3.35.1 eslint: 8.56.0 esquery: 1.5.0 indent-string: 4.0.0 @@ -5459,7 +6122,7 @@ packages: '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 @@ -5480,7 +6143,7 @@ packages: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -5510,12 +6173,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: false - /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -5537,7 +6194,11 @@ packages: /estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - dev: false + 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==} @@ -5553,7 +6214,6 @@ packages: /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - dev: false /eventemitter3@3.1.2: resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==} @@ -5562,7 +6222,6 @@ packages: /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - dev: false /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} @@ -5596,7 +6255,7 @@ packages: /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false + dev: true /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} @@ -5621,7 +6280,6 @@ packages: /fast-content-type-parse@1.1.0: resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} - dev: false /fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} @@ -5652,8 +6310,7 @@ packages: fast-deep-equal: 3.1.3 fast-uri: 2.3.0 json-schema-ref-resolver: 1.0.1 - rfdc: 1.3.0 - dev: false + rfdc: 1.3.1 /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -5667,7 +6324,6 @@ packages: /fast-redact@3.3.0: resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} engines: {node: '>=6'} - dev: false /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} @@ -5675,7 +6331,6 @@ packages: /fast-uri@2.3.0: resolution: {integrity: sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==} - dev: false /fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} @@ -5685,30 +6340,6 @@ packages: /fastify-plugin@4.5.1: resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} - dev: false - - /fastify@4.25.1: - resolution: {integrity: sha512-D8d0rv61TwqoAS7lom2tvIlgVMlx88lLsiwXyWNjA7CU/LC/mx/Gp2WAlC0S/ABq19U+y/aRvYFG5xLUu2aMrg==} - dependencies: - '@fastify/ajv-compiler': 3.5.0 - '@fastify/error': 3.4.1 - '@fastify/fast-json-stringify-compiler': 4.3.0 - abstract-logging: 2.0.1 - avvio: 8.2.1 - fast-content-type-parse: 1.1.0 - fast-json-stringify: 5.10.0 - find-my-way: 7.7.0 - light-my-request: 5.11.0 - pino: 8.17.2 - process-warning: 3.0.0 - proxy-addr: 2.0.7 - rfdc: 1.3.0 - secure-json-parse: 2.7.0 - semver: 7.5.4 - toad-cache: 3.4.1 - transitivePeerDependencies: - - supports-color - dev: false /fastify@4.25.2: resolution: {integrity: sha512-SywRouGleDHvRh054onj+lEZnbC1sBCLkR0UY3oyJwjD4BdZJUrxBqfkfCaqn74pVCwBaRHGuL3nEWeHbHzAfw==} @@ -5725,13 +6356,12 @@ packages: pino: 8.17.2 process-warning: 3.0.0 proxy-addr: 2.0.7 - rfdc: 1.3.0 + rfdc: 1.3.1 secure-json-parse: 2.7.0 semver: 7.5.4 - toad-cache: 3.4.1 + toad-cache: 3.7.0 transitivePeerDependencies: - supports-color - dev: false /fastparallel@2.4.1: resolution: {integrity: sha512-qUmhxPgNHmvRjZKBFUNI0oZuuH9OlSIOXmJ98lhKPxMZZ7zS/Fi0wRHOihDSz0R1YiIOjxzOY4bq65YTcdBi2Q==} @@ -5755,8 +6385,8 @@ packages: resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} dev: true - /fbjs@3.0.4: - resolution: {integrity: sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==} + /fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} dependencies: cross-fetch: 3.1.8 fbjs-css-vars: 1.0.2 @@ -5764,7 +6394,7 @@ packages: object-assign: 4.1.1 promise: 7.3.1 setimmediate: 1.0.5 - ua-parser-js: 0.7.34 + ua-parser-js: 1.0.37 transitivePeerDependencies: - encoding dev: true @@ -5786,7 +6416,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.2.0 dev: true /file-type@18.7.0: @@ -5811,7 +6441,6 @@ packages: fast-deep-equal: 3.1.3 fast-querystring: 1.1.2 safe-regex2: 2.0.0 - dev: false /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} @@ -5829,36 +6458,24 @@ packages: path-exists: 4.0.0 dev: true - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: false - - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 + keyv: 4.5.4 rimraf: 3.0.2 dev: true - /flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: false - - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true /fluent-ffmpeg@2.1.2: resolution: {integrity: sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==} engines: {node: '>=0.8.0'} dependencies: - async: 3.2.4 + async: 3.2.5 which: 1.3.1 dev: false @@ -5874,31 +6491,28 @@ packages: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 + dev: true - /formik@2.4.5(react@18.2.0): + /formik@2.4.5: resolution: {integrity: sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ==} - peerDependencies: - react: '>=16.8.0' dependencies: '@types/hoist-non-react-statics': 3.3.5 deepmerge: 2.2.1 hoist-non-react-statics: 3.3.2 lodash: 4.17.21 lodash-es: 4.17.21 - react: 18.2.0 react-fast-compare: 2.0.4 tiny-warning: 1.0.3 tslib: 2.6.2 - dev: false + dev: true /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - dev: false /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: false + dev: true /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} @@ -5939,7 +6553,7 @@ packages: resolution: {integrity: sha512-HlVz3ZXTqz7F0sb3OoW8591SojdVtyyuqX6kCi/AnmEXH16MLmPRiChv2680E9WF39zl5nlHMrgZxlmqnTrzkQ==} dependencies: '@types/node': 13.13.52 - dev: false + dev: true /generate-function@2.3.1: resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} @@ -5950,10 +6564,12 @@ packages: /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + dev: true /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + dev: true /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -5968,6 +6584,11 @@ packages: hasown: 2.0.0 dev: true + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: true + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -6004,10 +6625,7 @@ packages: engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false + dev: true /glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} @@ -6019,16 +6637,6 @@ packages: minimatch: 9.0.3 minipass: 7.0.4 path-scurry: 1.10.1 - - /glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - dependencies: - 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 /glob@7.2.3: @@ -6055,6 +6663,7 @@ packages: /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + dev: true /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} @@ -6077,7 +6686,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.2.4 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 @@ -6094,8 +6703,8 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /graphql-config@5.0.2(@types/node@20.10.6)(graphql@16.8.1): - resolution: {integrity: sha512-7TPxOrlbiG0JplSZYCyxn2XQtqVhXomEjXUmWJVSS5ET1nPhOJSsIb/WTwqWhcYX6G0RlHXSj9PLtGTKmxLNGg==} + /graphql-config@5.0.3(@types/node@20.11.7)(graphql@16.8.1)(typescript@5.3.3): + resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} engines: {node: '>= 16.0.0'} peerDependencies: cosmiconfig-toml-loader: ^1.0.0 @@ -6106,11 +6715,11 @@ packages: dependencies: '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) - '@graphql-tools/load': 8.0.0(graphql@16.8.1) - '@graphql-tools/merge': 9.0.0(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.0(@types/node@20.10.6)(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - cosmiconfig: 8.2.0 + '@graphql-tools/load': 8.0.1(graphql@16.8.1) + '@graphql-tools/merge': 9.0.1(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.7)(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + cosmiconfig: 8.3.6(typescript@5.3.3) graphql: 16.8.1 jiti: 1.21.0 minimatch: 4.2.3 @@ -6120,6 +6729,7 @@ packages: - '@types/node' - bufferutil - encoding + - typescript - utf-8-validate dev: true @@ -6204,18 +6814,14 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-own-prop@2.0.0: - resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} - engines: {node: '>=8'} - dev: false - - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: get-intrinsic: 1.2.2 dev: true @@ -6237,13 +6843,6 @@ packages: has-symbols: 1.0.3 dev: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.2 - dev: true - /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} @@ -6263,20 +6862,25 @@ packages: mdast-util-mdx-expression: 2.0.0 mdast-util-mdx-jsx: 3.0.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.0 + property-information: 6.4.1 space-separated-tokens: 2.0.2 style-to-object: 1.0.5 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false + dev: true /hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: '@types/hast': 3.0.3 - dev: false + dev: true + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true /header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} @@ -6294,7 +6898,7 @@ packages: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 - dev: false + dev: true /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -6304,12 +6908,12 @@ packages: resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} engines: {node: ^16.14.0 || >=18.0.0} dependencies: - lru-cache: 10.1.0 + lru-cache: 10.2.0 dev: true /html-url-attributes@3.0.0: resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} - dev: false + dev: true /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} @@ -6334,10 +6938,10 @@ packages: /http-status-codes@2.3.0: resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} - dev: false + dev: true - /https-proxy-agent@7.0.1: - resolution: {integrity: sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==} + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 @@ -6366,8 +6970,8 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} /immutable@3.7.6: @@ -6408,7 +7012,7 @@ packages: /inline-style-parser@0.2.2: resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} - dev: false + dev: true /inquirer@8.2.6: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} @@ -6453,7 +7057,6 @@ packages: /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - dev: false /is-absolute@1.0.0: resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} @@ -6465,14 +7068,14 @@ packages: /is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: false + dev: true /is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - dev: false + dev: true /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} @@ -6543,7 +7146,7 @@ packages: /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: false + dev: true /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -6558,6 +7161,7 @@ packages: /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + dev: true /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} @@ -6574,7 +7178,7 @@ packages: /is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: false + dev: true /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} @@ -6615,7 +7219,7 @@ packages: /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - dev: false + dev: true /is-property@1.0.2: resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} @@ -6724,20 +7328,12 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isomorphic-ws@5.0.0(ws@8.13.0): - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - dependencies: - ws: 8.13.0 - dev: true - /isomorphic-ws@5.0.0(ws@8.16.0): resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: ws: '*' dependencies: - ws: 8.16.0 + ws: 8.16.0(utf-8-validate@6.0.3) dev: true /istextorbinary@9.5.0: @@ -6775,13 +7371,15 @@ packages: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + dev: true /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + dev: true - /jose@4.14.4: - resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==} + /jose@5.2.0: + resolution: {integrity: sha512-oW3PCnvyrcm1HMvGTzqjxxfnEs9EoFOFWi2HsEGhlFVOXxTE3K9GKWVMFoFw06yPUqwpvEWic1BmtUZBI/tIjw==} dev: true /joycon@3.1.1: @@ -6791,6 +7389,7 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -6808,6 +7407,7 @@ packages: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + dev: true /jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} @@ -6815,6 +7415,10 @@ packages: hasBin: true dev: true + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true @@ -6823,7 +7427,6 @@ packages: resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==} dependencies: fast-deep-equal: 3.1.3 - dev: false /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -6831,16 +7434,19 @@ packages: /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json-stable-stringify@1.0.2: - resolution: {integrity: sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==} + /json-stable-stringify@1.1.1: + resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==} + engines: {node: '>= 0.4'} dependencies: + call-bind: 1.0.5 + isarray: 2.0.5 jsonify: 0.0.1 + object-keys: 1.1.1 dev: true /json-to-pretty-yaml@1.2.2: @@ -6862,9 +7468,10 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} dev: true /jsonfile@6.1.0: @@ -6900,7 +7507,7 @@ packages: dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 - object.assign: 4.1.4 + object.assign: 4.1.5 object.values: 1.1.7 dev: true @@ -6919,6 +7526,12 @@ packages: safe-buffer: 5.2.1 dev: false + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -6970,6 +7583,10 @@ packages: transitivePeerDependencies: - supports-color + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -6989,8 +7606,8 @@ packages: type-check: 0.4.0 dev: true - /libphonenumber-js@1.10.24: - resolution: {integrity: sha512-3Dk8f5AmrcWqg+oHhmm9hwSTqpWHBdSqsHmjCJGroULFubi0+x7JEIGmRZCuL3TI8Tx39xaKqfnhsDQ4ALa/Nw==} + /libphonenumber-js@1.10.54: + resolution: {integrity: sha512-P+38dUgJsmh0gzoRDoM4F5jLbyfztkU6PY6eSK6S5HwTi/LPvnwXqVCQZlAy1FxZ5c48q25QhxGQ0pq+WQcSlQ==} dev: false /light-my-request@5.11.0: @@ -6999,19 +7616,20 @@ packages: cookie: 0.5.0 process-warning: 2.3.2 set-cookie-parser: 2.6.0 - dev: false /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - dev: false + dev: true /lilconfig@3.0.0: resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} engines: {node: '>=14'} + dev: true /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true /listr2@4.0.5: resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} @@ -7026,7 +7644,7 @@ packages: colorette: 2.0.20 log-update: 4.0.0 p-map: 4.0.0 - rfdc: 1.3.0 + rfdc: 1.3.1 rxjs: 7.8.1 through: 2.3.8 wrap-ansi: 7.0.0 @@ -7041,7 +7659,7 @@ packages: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.4.2 + mlly: 1.5.0 pkg-types: 1.0.3 dev: true @@ -7059,20 +7677,13 @@ packages: p-locate: 5.0.0 dev: true - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: false - /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: false + dev: true /lodash.castarray@4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - dev: false + dev: true /lodash.includes@4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} @@ -7092,7 +7703,6 @@ packages: /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: false /lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} @@ -7140,13 +7750,14 @@ packages: /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: false + dev: true /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 + dev: true /loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} @@ -7164,15 +7775,18 @@ packages: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.6.2 + dev: true - /lru-cache@10.1.0: - resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} + dev: true /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -7202,7 +7816,7 @@ packages: /markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - dev: false + dev: true /mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} @@ -7211,7 +7825,7 @@ packages: escape-string-regexp: 5.0.0 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false + dev: true /mdast-util-from-markdown@2.0.0: resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} @@ -7230,7 +7844,7 @@ packages: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /mdast-util-gfm-autolink-literal@2.0.0: resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} @@ -7240,7 +7854,7 @@ packages: devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 micromark-util-character: 2.0.1 - dev: false + dev: true /mdast-util-gfm-footnote@2.0.0: resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} @@ -7252,7 +7866,7 @@ packages: micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /mdast-util-gfm-strikethrough@2.0.0: resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} @@ -7262,7 +7876,7 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /mdast-util-gfm-table@2.0.0: resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} @@ -7274,7 +7888,7 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /mdast-util-gfm-task-list-item@2.0.0: resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} @@ -7285,7 +7899,7 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /mdast-util-gfm@3.0.0: resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} @@ -7299,7 +7913,7 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /mdast-util-mdx-expression@2.0.0: resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} @@ -7312,7 +7926,7 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /mdast-util-mdx-jsx@3.0.0: resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} @@ -7332,7 +7946,7 @@ packages: vfile-message: 4.0.2 transitivePeerDependencies: - supports-color - dev: false + dev: true /mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} @@ -7345,17 +7959,17 @@ packages: mdast-util-to-markdown: 2.1.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /mdast-util-phrasing@4.0.0: resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} dependencies: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 - dev: false + dev: true - /mdast-util-to-hast@13.0.2: - resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} + /mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} dependencies: '@types/hast': 3.0.3 '@types/mdast': 4.0.3 @@ -7365,7 +7979,8 @@ packages: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 - dev: false + vfile: 6.0.1 + dev: true /mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} @@ -7378,15 +7993,15 @@ packages: micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false + dev: true /mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} dependencies: '@types/mdast': 4.0.3 - dev: false + dev: true - /mercurius@13.3.3(graphql@16.8.1): + /mercurius@13.3.3(graphql@16.8.1)(utf-8-validate@6.0.3): resolution: {integrity: sha512-42IWxrvKjzOwdd+HdwV8AgYL8kpARJ0BzcqczWDFFsxgDM3MDlGm7PpesT1BsohvnYCN+5OU6Xk5vySkd2x9Eg==} engines: {node: '>=14.19.3'} peerDependencies: @@ -7394,7 +8009,7 @@ packages: dependencies: '@fastify/error': 3.4.1 '@fastify/static': 6.12.0 - '@fastify/websocket': 8.3.1 + '@fastify/websocket': 8.3.1(utf-8-validate@6.0.3) fastify-plugin: 4.5.1 graphql: 16.8.1 graphql-jit: 0.8.4(graphql@16.8.1) @@ -7406,7 +8021,7 @@ packages: single-user-cache: 0.6.0 tiny-lru: 11.2.5 undici: 5.28.1 - ws: 8.16.0 + ws: 8.16.0(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -7420,11 +8035,7 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /merge@2.1.1: - resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} - dev: false - - /meros@1.3.0(@types/node@20.10.6): + /meros@1.3.0(@types/node@20.11.7): resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} engines: {node: '>=13'} peerDependencies: @@ -7433,7 +8044,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.10.6 + '@types/node': 20.11.7 dev: true /micromark-core-commonmark@2.0.0: @@ -7455,7 +8066,7 @@ packages: micromark-util-subtokenize: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-extension-gfm-autolink-literal@2.0.0: resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} @@ -7464,7 +8075,7 @@ packages: micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-extension-gfm-footnote@2.0.0: resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} @@ -7477,7 +8088,7 @@ packages: micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-extension-gfm-strikethrough@2.0.0: resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} @@ -7488,7 +8099,7 @@ packages: micromark-util-resolve-all: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-extension-gfm-table@2.0.0: resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} @@ -7498,13 +8109,13 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-extension-gfm-tagfilter@2.0.0: resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} dependencies: micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-extension-gfm-task-list-item@2.0.1: resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} @@ -7514,7 +8125,7 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} @@ -7527,7 +8138,7 @@ packages: micromark-extension-gfm-task-list-item: 2.0.1 micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-factory-destination@2.0.0: resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} @@ -7535,7 +8146,7 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-factory-label@2.0.0: resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} @@ -7544,14 +8155,14 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-factory-space@2.0.0: resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} dependencies: micromark-util-character: 2.0.1 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-factory-title@2.0.0: resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} @@ -7560,7 +8171,7 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-factory-whitespace@2.0.0: resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} @@ -7569,20 +8180,20 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-util-character@2.0.1: resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-util-chunked@2.0.0: resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} dependencies: micromark-util-symbol: 2.0.0 - dev: false + dev: true /micromark-util-classify-character@2.0.0: resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} @@ -7590,20 +8201,20 @@ packages: micromark-util-character: 2.0.1 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-util-combine-extensions@2.0.0: resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-util-decode-numeric-character-reference@2.0.1: resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} dependencies: micromark-util-symbol: 2.0.0 - dev: false + dev: true /micromark-util-decode-string@2.0.0: resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} @@ -7612,27 +8223,27 @@ packages: micromark-util-character: 2.0.1 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 - dev: false + dev: true /micromark-util-encode@2.0.0: resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: false + dev: true /micromark-util-html-tag-name@2.0.0: resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - dev: false + dev: true /micromark-util-normalize-identifier@2.0.0: resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} dependencies: micromark-util-symbol: 2.0.0 - dev: false + dev: true /micromark-util-resolve-all@2.0.0: resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} dependencies: micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-util-sanitize-uri@2.0.0: resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} @@ -7640,7 +8251,7 @@ packages: micromark-util-character: 2.0.1 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - dev: false + dev: true /micromark-util-subtokenize@2.0.0: resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} @@ -7649,15 +8260,15 @@ packages: micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false + dev: true /micromark-util-symbol@2.0.0: resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: false + dev: true /micromark-util-types@2.0.0: resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: false + dev: true /micromark@4.0.0: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} @@ -7681,7 +8292,7 @@ packages: micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - dev: false + dev: true /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -7712,6 +8323,12 @@ packages: hasBin: true dev: false + /mime@4.0.1: + resolution: {integrity: sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==} + engines: {node: '>=16'} + hasBin: true + dev: true + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -7751,25 +8368,28 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true /minipass@7.0.4: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} + dev: true - /mlly@1.4.2: - resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} dependencies: acorn: 8.11.3 - pathe: 1.1.1 + pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.3.2 dev: true - /mnemonist@0.39.5: - resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} + /mnemonist@0.39.6: + resolution: {integrity: sha512-A/0v5Z59y63US00cRSLiloEIw3t5G+MiKz4BhX21FI+YBJXBOGW0ohFxTxO08dsOYlzxo87T7vGfZKYp2bcAWA==} dependencies: obliterator: 2.0.4 dev: false @@ -7782,6 +8402,11 @@ packages: qlobber: 7.0.1 dev: false + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -7803,17 +8428,13 @@ packages: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 + dev: true /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - - /nanoid@4.0.2: - resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} - engines: {node: ^14 || ^16 || >=18} - hasBin: true - dev: false + dev: true /nanoid@5.0.4: resolution: {integrity: sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig==} @@ -7829,54 +8450,16 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /next@14.0.4(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - sass: - optional: true - dependencies: - '@next/env': 14.0.4 - '@swc/helpers': 0.5.2 - busboy: 1.6.0 - caniuse-lite: 1.0.30001574 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.7)(react@18.2.0) - watchpack: 2.4.0 - optionalDependencies: - '@next/swc-darwin-arm64': 14.0.4 - '@next/swc-darwin-x64': 14.0.4 - '@next/swc-linux-arm64-gnu': 14.0.4 - '@next/swc-linux-arm64-musl': 14.0.4 - '@next/swc-linux-x64-gnu': 14.0.4 - '@next/swc-linux-x64-musl': 14.0.4 - '@next/swc-win32-arm64-msvc': 14.0.4 - '@next/swc-win32-ia32-msvc': 14.0.4 - '@next/swc-win32-x64-msvc': 14.0.4 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - dev: false - /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.6.2 + dev: true - /node-addon-api@7.0.0: - resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} + /node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} dev: true /node-fetch@2.7.0: @@ -7890,12 +8473,24 @@ packages: dependencies: whatwg-url: 5.0.0 + /node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true + + /node-html-parser@6.1.12: + resolution: {integrity: sha512-/bT/Ncmv+fbMGX96XG9g05vFt43m/+SYKIs9oAemQVYyVcZmDAI2Xq/SbNcpOA35eF0Zk2av3Ksf+Xk8Vt8abA==} + dependencies: + css-select: 5.1.0 + he: 1.2.0 + dev: true + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true /nodemailer@6.9.8: resolution: {integrity: sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==} @@ -7925,7 +8520,7 @@ packages: /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - dev: false + dev: true /normalize-url@8.0.0: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} @@ -7956,6 +8551,12 @@ packages: path-key: 4.0.0 dev: true + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} dev: true @@ -7963,11 +8564,12 @@ packages: /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + dev: true /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - dev: false + dev: true /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} @@ -7978,8 +8580,8 @@ packages: 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.5 @@ -8038,7 +8640,6 @@ packages: /on-exit-leak-free@2.1.2: resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} engines: {node: '>=14.0.0'} - dev: false /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -8066,7 +8667,7 @@ packages: '@wry/context': 0.7.4 '@wry/trie': 0.4.3 tslib: 2.6.2 - dev: false + dev: true /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} @@ -8087,7 +8688,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.2 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -8121,13 +8722,6 @@ packages: dependencies: yocto-queue: 0.1.0 - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: false - /p-limit@5.0.0: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} @@ -8149,13 +8743,6 @@ packages: p-limit: 3.1.0 dev: true - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: false - /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -8200,7 +8787,7 @@ packages: is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - dev: false + dev: true /parse-filepath@1.0.2: resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} @@ -8226,6 +8813,7 @@ packages: dependencies: no-case: 3.0.4 tslib: 2.6.2 + dev: true /passport-jwt@4.0.1: resolution: {integrity: sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==} @@ -8260,11 +8848,6 @@ packages: engines: {node: '>=8'} dev: true - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -8273,6 +8856,7 @@ packages: /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + dev: true /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} @@ -8298,8 +8882,9 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.1.0 + lru-cache: 10.2.0 minipass: 7.0.4 + dev: true /path-to-regexp@3.2.0: resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} @@ -8307,14 +8892,13 @@ packages: /path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - dev: false /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} dev: true /pathval@1.1.1: @@ -8391,6 +8975,7 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -8399,18 +8984,16 @@ packages: /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - dev: false + dev: true /pino-abstract-transport@1.1.0: resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} dependencies: readable-stream: 4.5.2 split2: 4.2.0 - dev: false /pino-std-serializers@6.2.2: resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} - dev: false /pino@8.17.2: resolution: {integrity: sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==} @@ -8425,20 +9008,20 @@ packages: quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.4.3 - sonic-boom: 3.7.0 + sonic-boom: 3.8.0 thread-stream: 2.4.1 - dev: false /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + dev: true /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: - jsonc-parser: 3.2.0 - mlly: 1.4.2 - pathe: 1.1.1 + jsonc-parser: 3.2.1 + mlly: 1.5.0 + pathe: 1.1.2 dev: true /pluralize@8.0.0: @@ -8460,7 +9043,7 @@ packages: postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - dev: false + dev: true /postcss-js@4.0.1(postcss@8.4.33): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} @@ -8470,7 +9053,7 @@ packages: dependencies: camelcase-css: 2.0.1 postcss: 8.4.33 - dev: false + dev: true /postcss-load-config@4.0.2(postcss@8.4.33): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} @@ -8487,7 +9070,7 @@ packages: lilconfig: 3.0.0 postcss: 8.4.33 yaml: 2.3.4 - dev: false + dev: true /postcss-load-config@4.0.2(ts-node@10.9.2): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} @@ -8502,7 +9085,7 @@ packages: optional: true dependencies: lilconfig: 3.0.0 - ts-node: 10.9.2(@swc/core@1.3.102)(@types/node@20.10.6)(typescript@5.3.3) + ts-node: 10.9.2(@swc/core@1.3.106)(@types/node@20.11.7)(typescript@5.3.3) yaml: 2.3.4 dev: true @@ -8514,7 +9097,7 @@ packages: dependencies: postcss: 8.4.33 postcss-selector-parser: 6.0.15 - dev: false + dev: true /postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -8522,7 +9105,7 @@ packages: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - dev: false + dev: true /postcss-selector-parser@6.0.15: resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} @@ -8530,20 +9113,11 @@ packages: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - dev: false + dev: true /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: false - - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: false + dev: true /postcss@8.4.33: resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} @@ -8552,6 +9126,7 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true /postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} @@ -8571,13 +9146,26 @@ packages: dependencies: xtend: 4.0.2 + /preact-render-to-string@6.3.1(preact@10.19.3): + resolution: {integrity: sha512-NQ28WrjLtWY6lKDlTxnFpKHZdpjfF+oE6V4tZ0rTrunHrtZp6Dm0oFrcJalt/5PNeqJz4j1DuZDS0Y6rCBoqDA==} + peerDependencies: + preact: '>=10' + dependencies: + preact: 10.19.3 + pretty-format: 3.8.0 + dev: true + + /preact@10.19.3: + resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==} + dev: true + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + /prettier@3.2.4: + resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} engines: {node: '>=14'} hasBin: true dev: true @@ -8596,15 +9184,16 @@ packages: react-is: 18.2.0 dev: true - /prism-react-renderer@2.3.1(react@18.2.0): + /pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + dev: true + + /prism-react-renderer@2.3.1: resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} - peerDependencies: - react: '>=16.0.0' dependencies: '@types/prismjs': 1.26.3 clsx: 2.1.0 - react: 18.2.0 - dev: false + dev: true /proc-log@3.0.0: resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} @@ -8613,16 +9202,13 @@ packages: /process-warning@2.3.2: resolution: {integrity: sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==} - dev: false /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 /promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} @@ -8644,14 +9230,15 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 + dev: true /property-expr@2.0.6: resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} - dev: false + dev: true - /property-information@6.4.0: - resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} - dev: false + /property-information@6.4.1: + resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} + dev: true /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -8659,7 +9246,13 @@ packages: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - dev: false + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -8689,85 +9282,115 @@ packages: engines: {node: '>= 14'} dev: false - /qrcode.react@3.1.0(react@18.2.0): + /qrcode.react@3.1.0: resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false + dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - dev: false - - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - dev: false /react-fast-compare@2.0.4: resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} - dev: false + dev: true - /react-feather@2.0.10(react@18.2.0): - resolution: {integrity: sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==} - peerDependencies: - react: '>=16.8.6' + /react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + dev: true + + /react-helmet-async@2.0.4: + resolution: {integrity: sha512-yxjQMWposw+akRfvpl5+8xejl4JtUlHnEBcji6u8/e6oc7ozT+P9PNTWMhCbz2y9tc5zPegw2BvKjQA+NwdEjQ==} dependencies: - prop-types: 15.8.1 - react: 18.2.0 - dev: false + invariant: 2.2.4 + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + dev: true + + /react-icons@5.0.1: + resolution: {integrity: sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==} + dev: true /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: true /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-markdown@9.0.1(@types/react@18.2.47)(react@18.2.0): + /react-markdown@9.0.1(@types/react@18.2.48): resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} peerDependencies: '@types/react': '>=18' - react: '>=18' dependencies: '@types/hast': 3.0.3 - '@types/react': 18.2.47 + '@types/react': 18.2.48 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 - mdast-util-to-hast: 13.0.2 - react: 18.2.0 + mdast-util-to-hast: 13.1.0 remark-parse: 11.0.0 - remark-rehype: 11.0.0 + remark-rehype: 11.1.0 unified: 11.0.4 unist-util-visit: 5.0.0 vfile: 6.0.1 transitivePeerDependencies: - supports-color - dev: false + dev: true - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} + /react-remove-scroll-bar@2.3.4(@types/react@18.2.48): + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - loose-envify: 1.4.0 - dev: false + '@types/react': 18.2.48 + react-style-singleton: 2.2.1(@types/react@18.2.48) + tslib: 2.6.2 + dev: true + + /react-remove-scroll@2.5.5(@types/react@18.2.48): + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.48 + react-remove-scroll-bar: 2.3.4(@types/react@18.2.48) + react-style-singleton: 2.2.1(@types/react@18.2.48) + tslib: 2.6.2 + use-callback-ref: 1.3.1(@types/react@18.2.48) + use-sidecar: 1.1.2(@types/react@18.2.48) + dev: true + + /react-style-singleton@2.2.1(@types/react@18.2.48): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.48 + get-nonce: 1.0.1 + invariant: 2.2.4 + tslib: 2.6.2 + dev: true /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 - dev: false + dev: true /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} @@ -8782,7 +9405,7 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: - '@types/normalize-package-data': 2.4.1 + '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -8814,7 +9437,6 @@ packages: events: 3.3.0 process: 0.11.10 string_decoder: 1.3.0 - dev: false /readable-web-to-node-stream@3.0.2: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} @@ -8832,7 +9454,6 @@ packages: /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} - dev: false /rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} @@ -8860,6 +9481,7 @@ packages: /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: true /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} @@ -8890,8 +9512,8 @@ packages: /relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} dependencies: - '@babel/runtime': 7.23.7 - fbjs: 3.0.4 + '@babel/runtime': 7.23.9 + fbjs: 3.0.5 invariant: 2.2.4 transitivePeerDependencies: - encoding @@ -8908,7 +9530,7 @@ packages: unified: 11.0.4 transitivePeerDependencies: - supports-color - dev: false + dev: true /remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -8919,17 +9541,17 @@ packages: unified: 11.0.4 transitivePeerDependencies: - supports-color - dev: false + dev: true - /remark-rehype@11.0.0: - resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} + /remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} dependencies: '@types/hast': 3.0.3 '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.0.2 + mdast-util-to-hast: 13.1.0 unified: 11.0.4 vfile: 6.0.1 - dev: false + dev: true /remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} @@ -8937,7 +9559,7 @@ packages: '@types/mdast': 4.0.3 mdast-util-to-markdown: 2.1.0 unified: 11.0.4 - dev: false + dev: true /remedial@1.0.8: resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} @@ -8951,19 +9573,14 @@ packages: resolution: {integrity: sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==} dev: true - /repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: false - /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + 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 /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} @@ -8998,7 +9615,7 @@ packages: /response-iterator@0.2.6: resolution: {integrity: sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==} engines: {node: '>=0.8'} - dev: false + dev: true /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} @@ -9011,14 +9628,13 @@ packages: /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'} - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} @@ -9027,26 +9643,26 @@ packages: glob: 7.2.3 dev: true - /rollup@4.9.4: - resolution: {integrity: sha512-2ztU7pY/lrQyXSCnnoU4ICjT/tCG9cdH3/G25ERqE3Lst6vl2BCM5hL2Nw+sslAvAf+ccKsAq1SkKQALyqhR7g==} + /rollup@4.9.6: + resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.4 - '@rollup/rollup-android-arm64': 4.9.4 - '@rollup/rollup-darwin-arm64': 4.9.4 - '@rollup/rollup-darwin-x64': 4.9.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.4 - '@rollup/rollup-linux-arm64-gnu': 4.9.4 - '@rollup/rollup-linux-arm64-musl': 4.9.4 - '@rollup/rollup-linux-riscv64-gnu': 4.9.4 - '@rollup/rollup-linux-x64-gnu': 4.9.4 - '@rollup/rollup-linux-x64-musl': 4.9.4 - '@rollup/rollup-win32-arm64-msvc': 4.9.4 - '@rollup/rollup-win32-ia32-msvc': 4.9.4 - '@rollup/rollup-win32-x64-msvc': 4.9.4 + '@rollup/rollup-android-arm-eabi': 4.9.6 + '@rollup/rollup-android-arm64': 4.9.6 + '@rollup/rollup-darwin-arm64': 4.9.6 + '@rollup/rollup-darwin-x64': 4.9.6 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 + '@rollup/rollup-linux-arm64-gnu': 4.9.6 + '@rollup/rollup-linux-arm64-musl': 4.9.6 + '@rollup/rollup-linux-riscv64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-musl': 4.9.6 + '@rollup/rollup-win32-arm64-msvc': 4.9.6 + '@rollup/rollup-win32-ia32-msvc': 4.9.6 + '@rollup/rollup-win32-x64-msvc': 4.9.6 fsevents: 2.3.3 dev: true @@ -9065,8 +9681,8 @@ packages: dependencies: tslib: 2.6.2 - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} engines: {node: '>=0.4'} dependencies: call-bind: 1.0.5 @@ -9078,8 +9694,9 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + /safe-regex-test@1.0.2: + resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 @@ -9090,30 +9707,21 @@ packages: 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'} - dev: false /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - dependencies: - loose-envify: 1.4.0 - dev: false - /scuid@1.1.0: resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} dev: true /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - dev: false /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} @@ -9123,6 +9731,7 @@ packages: /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -9145,16 +9754,16 @@ packages: /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - dev: false - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + /set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 + function-bind: 1.1.2 get-intrinsic: 1.2.2 gopd: 1.0.1 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 dev: true /set-function-name@2.0.1: @@ -9163,7 +9772,7 @@ packages: dependencies: define-data-property: 1.1.1 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 dev: true /setimmediate@1.0.5: @@ -9174,34 +9783,38 @@ packages: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false - /sharp@0.33.1: - resolution: {integrity: sha512-iAYUnOdTqqZDb3QjMneBKINTllCJDZ3em6WaWy7NPECM4aHncvqHRm0v0bN9nqJxMiwamv5KIdauJ6lUzKDpTQ==} - engines: {libvips: '>=8.15.0', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + dev: true + + /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 semver: 7.5.4 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.1 - '@img/sharp-darwin-x64': 0.33.1 - '@img/sharp-libvips-darwin-arm64': 1.0.0 - '@img/sharp-libvips-darwin-x64': 1.0.0 - '@img/sharp-libvips-linux-arm': 1.0.0 - '@img/sharp-libvips-linux-arm64': 1.0.0 - '@img/sharp-libvips-linux-s390x': 1.0.0 - '@img/sharp-libvips-linux-x64': 1.0.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.0 - '@img/sharp-libvips-linuxmusl-x64': 1.0.0 - '@img/sharp-linux-arm': 0.33.1 - '@img/sharp-linux-arm64': 0.33.1 - '@img/sharp-linux-s390x': 0.33.1 - '@img/sharp-linux-x64': 0.33.1 - '@img/sharp-linuxmusl-arm64': 0.33.1 - '@img/sharp-linuxmusl-x64': 0.33.1 - '@img/sharp-wasm32': 0.33.1 - '@img/sharp-win32-ia32': 0.33.1 - '@img/sharp-win32-x64': 0.33.1 + '@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@2.0.0: @@ -9209,13 +9822,16 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + dev: true /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -9236,6 +9852,7 @@ packages: /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + dev: true /signedsource@1.0.0: resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} @@ -9253,6 +9870,15 @@ packages: safe-stable-stringify: 2.4.3 dev: false + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true @@ -9286,15 +9912,22 @@ packages: tslib: 2.6.2 dev: true - /sonic-boom@3.7.0: - resolution: {integrity: sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==} + /sonic-boom@3.8.0: + resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} dependencies: atomic-sleep: 1.0.0 - dev: false /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} @@ -9310,32 +9943,32 @@ packages: /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: false + dev: true /spawn-command@0.0.2: resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} - dev: false - - /spdx-correct@3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.12 dev: true - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-exceptions@2.4.0: + resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} 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.12 + spdx-exceptions: 2.4.0 + spdx-license-ids: 3.0.16 dev: true - /spdx-license-ids@3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} dev: true /split2@4.2.0: @@ -9380,6 +10013,7 @@ packages: /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} + dev: true /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} @@ -9396,6 +10030,7 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -9404,6 +10039,7 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 + dev: true /string.prototype.matchall@4.0.10: resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} @@ -9454,19 +10090,21 @@ packages: dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 - dev: false + dev: true /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 + dev: true /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 + dev: true /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -9518,27 +10156,9 @@ packages: resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} dependencies: inline-style-parser: 0.2.2 - dev: false + dev: true - /styled-jsx@5.1.1(@babel/core@7.23.7)(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - dependencies: - '@babel/core': 7.23.7 - client-only: 0.0.1 - react: 18.2.0 - dev: false - - /subscriptions-transport-ws@0.11.0(graphql@16.8.1): + /subscriptions-transport-ws@0.11.0(graphql@16.8.1)(utf-8-validate@6.0.3): resolution: {integrity: sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==} deprecated: The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md peerDependencies: @@ -9549,7 +10169,7 @@ packages: graphql: 16.8.1 iterall: 1.3.0 symbol-observable: 1.2.0 - ws: 7.5.9 + ws: 7.5.9(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -9567,12 +10187,14 @@ packages: mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 + dev: true /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -9585,7 +10207,7 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: false + dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -9597,16 +10219,6 @@ packages: tslib: 2.6.2 dev: true - /swr@2.2.4(react@18.2.0): - resolution: {integrity: sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==} - peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 - dependencies: - client-only: 0.0.1 - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) - dev: false - /symbol-observable@1.2.0: resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} engines: {node: '>=0.10.0'} @@ -9615,9 +10227,9 @@ packages: /symbol-observable@4.0.0: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} engines: {node: '>=0.10'} - dev: false + dev: true - /syncpack@12.3.0: + /syncpack@12.3.0(typescript@5.3.3): resolution: {integrity: sha512-Gz2uGn96OmGfVVlKztvFac1EJYjP+WptQ2ohA6Uf48C6qLkhSayhkdujKQ6q7bGOTy8HSGI0iDfwfCJu6wvRig==} engines: {node: '>=16'} hasBin: true @@ -9625,7 +10237,7 @@ packages: '@effect/schema': 0.56.1(effect@2.0.0-next.62)(fast-check@3.15.0) chalk: 4.1.2 commander: 11.1.0 - cosmiconfig: 9.0.0 + cosmiconfig: 9.0.0(typescript@5.3.3) effect: 2.0.0-next.62 enquirer: 2.4.1 fast-check: 3.15.0 @@ -9671,7 +10283,7 @@ packages: sucrase: 3.35.0 transitivePeerDependencies: - ts-node - dev: false + dev: true /tarn@3.0.2: resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} @@ -9697,11 +10309,13 @@ packages: engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 + dev: true /thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 + dev: true /thirty-two@1.0.2: resolution: {integrity: sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==} @@ -9712,7 +10326,6 @@ packages: resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==} dependencies: real-require: 0.2.0 - dev: false /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -9729,23 +10342,22 @@ packages: /tiny-case@1.0.3: resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} - dev: false + dev: true /tiny-lru@11.2.5: resolution: {integrity: sha512-JpqM0K33lG6iQGKiigcwuURAKZlq6rHXfrgeL4/I8/REoyJTGU+tEMszvT/oTRVHG2OiylhGDjqPp1jWMlr3bw==} engines: {node: '>=12'} - dev: false /tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - dev: false - - /tinybench@2.5.1: - resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true - /tinypool@0.8.1: - resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==} + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true + + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} dev: true @@ -9770,6 +10382,7 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -9777,14 +10390,13 @@ packages: dependencies: is-number: 7.0.0 - /toad-cache@3.4.1: - resolution: {integrity: sha512-T0m3MxP3wcqW0LaV3dF1mHBU294sgYSm4FOpa5eEJaYO7PqJZBOjZEQI1y4YaKNnih1FXCEYTWDS9osCoTUefg==} + /toad-cache@3.7.0: + resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} engines: {node: '>=12'} - dev: false /toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - dev: false + dev: true /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} @@ -9799,13 +10411,14 @@ packages: ieee754: 1.2.1 dev: true - /toml@3.0.0: - resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - dev: false - /toposort@2.0.2: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} - dev: false + dev: true + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -9819,14 +10432,15 @@ packages: /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + dev: true /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: false + dev: true /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - dev: false + dev: true /ts-api-utils@1.0.3(typescript@5.3.3): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} @@ -9839,19 +10453,20 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true /ts-invariant@0.10.3: resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} engines: {node: '>=8'} dependencies: tslib: 2.6.2 - dev: false + dev: true /ts-log@2.2.5: resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} dev: true - /ts-node@10.9.2(@swc/core@1.3.102)(@types/node@20.10.6)(typescript@5.3.3): + /ts-node@10.9.2(@swc/core@1.3.106)(@types/node@20.11.7)(typescript@5.3.3): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -9866,14 +10481,14 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.102 + '@swc/core': 1.3.106 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.10.6 + '@types/node': 20.11.7 acorn: 8.11.3 - acorn-walk: 8.3.1 + acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 @@ -9905,10 +10520,6 @@ packages: strip-bom: 3.0.0 dev: true - /tslib@2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - dev: true - /tslib@2.5.3: resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} dev: true @@ -9916,7 +10527,7 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup@8.0.1(@swc/core@1.3.102)(ts-node@10.9.2)(typescript@5.3.3): + /tsup@8.0.1(@swc/core@1.3.106)(ts-node@10.9.2)(typescript@5.3.3): resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==} engines: {node: '>=18'} hasBin: true @@ -9935,18 +10546,58 @@ packages: typescript: optional: true dependencies: - '@swc/core': 1.3.102 - bundle-require: 4.0.2(esbuild@0.19.11) + '@swc/core': 1.3.106 + bundle-require: 4.0.2(esbuild@0.19.12) cac: 6.7.14 chokidar: 3.5.3 debug: 4.3.4 - esbuild: 0.19.11 + esbuild: 0.19.12 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 postcss-load-config: 4.0.2(ts-node@10.9.2) resolve-from: 5.0.0 - rollup: 4.9.4 + rollup: 4.9.6 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /tsup@8.0.1(postcss@8.4.33)(typescript@5.3.3): + resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 4.0.2(esbuild@0.19.12) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.19.12 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss: 8.4.33 + postcss-load-config: 4.0.2(postcss@8.4.33) + resolve-from: 5.0.0 + rollup: 4.9.6 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 @@ -10051,7 +10702,7 @@ packages: /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - dev: false + dev: true /type-fest@3.13.1: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} @@ -10101,8 +10752,8 @@ packages: hasBin: true dev: true - /ua-parser-js@0.7.34: - resolution: {integrity: sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ==} + /ua-parser-js@1.0.37: + resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} dev: true /ufo@1.3.2: @@ -10158,6 +10809,13 @@ packages: '@fastify/busboy': 2.1.0 dev: false + /undici@5.28.2: + resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: true + /unified@11.0.4: resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} dependencies: @@ -10168,39 +10826,39 @@ packages: is-plain-obj: 4.1.0 trough: 2.1.0 vfile: 6.0.1 - dev: false + dev: true /unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} dependencies: '@types/unist': 3.0.2 - dev: false + dev: true /unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: '@types/unist': 3.0.2 - dev: false + dev: true /unist-util-remove-position@5.0.0: resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} dependencies: '@types/unist': 3.0.2 unist-util-visit: 5.0.0 - dev: false + dev: true /unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} dependencies: '@types/unist': 3.0.2 - dev: false + dev: true /unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 - dev: false + dev: true /unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} @@ -10208,7 +10866,7 @@ packages: '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false + dev: true /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} @@ -10230,6 +10888,7 @@ packages: browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 + dev: true /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} @@ -10241,34 +10900,62 @@ packages: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: tslib: 2.6.2 + dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 + /urlpattern-polyfill@10.0.0: + resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} + dev: true + /urlpattern-polyfill@8.0.2: resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} dev: true - /urlpattern-polyfill@9.0.0: - resolution: {integrity: sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==} + /use-callback-ref@1.3.1(@types/react@18.2.48): + resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.48 + tslib: 2.6.2 + dev: true + + /use-sidecar@1.1.2(@types/react@18.2.48): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.48 + detect-node-es: 1.1.0 + tslib: 2.6.2 dev: true /use-strict@1.0.1: resolution: {integrity: sha512-IeiWvvEXfW5ltKVMkxq6FvNf2LojMKvB2OCeja6+ct24S1XOmQw2dGr2JyndwACWAGJva9B7yPHwAmeA9QCqAQ==} dev: false - /use-sync-external-store@1.2.0(react@18.2.0): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + /utf-8-validate@6.0.3: + resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} + engines: {node: '>=6.14.2'} + requiresBuild: true dependencies: - react: 18.2.0 - dev: false + node-gyp-build: 4.8.0 /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} @@ -10287,7 +10974,7 @@ packages: /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: - spdx-correct: 3.1.1 + spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 dev: true @@ -10298,8 +10985,8 @@ packages: builtins: 5.0.1 dev: true - /validator@13.9.0: - resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} engines: {node: '>= 0.10'} dev: false @@ -10307,8 +10994,25 @@ packages: resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} engines: {node: '>=12'} - /version-range@4.13.0: - resolution: {integrity: sha512-/DLT9Gj8/MVd0OGX59AJuD0n3oGjiB2PB99M0kH7+0PH/GS3GiY/fNU8ptkBHrloKKg6KTAlhV5leXG9EWiggg==} + /vavite@4.0.2(vite@5.0.12): + resolution: {integrity: sha512-a8b76BlRUVZ1BincrCVGfLcJ6TEpQR4sWHNDINiSs8COVbxIabaFyhSPZ4GdMUuxc2uuKXk0u1HI9m/c4tEwjg==} + hasBin: true + peerDependencies: + vite: ^2.8.1 || 3 || 4 || 5 + dependencies: + '@vavite/connect': 4.0.2(vite@5.0.12) + '@vavite/expose-vite-dev-server': 4.0.2(vite@5.0.12) + '@vavite/multibuild': 4.0.2(vite@5.0.12) + '@vavite/multibuild-cli': 4.0.2(vite@5.0.12) + '@vavite/node-loader': 4.0.2(vite@5.0.12) + '@vavite/reloader': 4.0.2(vite@5.0.12) + cac: 6.7.14 + picocolors: 1.0.0 + vite: 5.0.12(@types/node@20.11.7) + dev: true + + /version-range@4.14.0: + resolution: {integrity: sha512-gjb0ARm9qlcBAonU4zPwkl9ecKkas+tC2CGwFfptTCWWIVTWY1YUbT2zZKsOAF1jR/tNxxyLwwG0cb42XlYcTg==} engines: {node: '>=4'} dev: true @@ -10317,7 +11021,7 @@ packages: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 - dev: false + dev: true /vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} @@ -10325,18 +11029,44 @@ packages: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - dev: false + dev: true - /vite-node@1.1.3(@types/node@20.10.6): - resolution: {integrity: sha512-BLSO72YAkIUuNrOx+8uznYICJfTEbvBAmWClY3hpath5+h1mbPS5OMn42lrTxXuyCazVyZoDkSRnju78GiVCqA==} + /vike@0.4.160(vite@5.0.12): + resolution: {integrity: sha512-sC+MR1gkY/wgPSbVOlc05PF429CSja3Cc5Ps7+vgccsIH5fhRTm8gS6TwmEK130stK0xauiS2hK9T7BvFTv5rA==} + engines: {node: '>=16.0.0'} + hasBin: true + peerDependencies: + react-streaming: '>=0.3.5' + vite: '>=3.1.0' + peerDependenciesMeta: + react-streaming: + optional: true + dependencies: + '@brillout/import': 0.2.3 + '@brillout/json-serializer': 0.5.8 + '@brillout/picocolors': 1.0.10 + '@brillout/require-shim': 0.1.2 + '@brillout/vite-plugin-server-entry': 0.4.3 + acorn: 8.11.3 + cac: 6.7.14 + es-module-lexer: 1.4.1 + esbuild: 0.19.12 + fast-glob: 3.3.2 + sirv: 2.0.4 + source-map-support: 0.5.21 + vite: 5.0.12(@types/node@20.11.7) + dev: true + + /vite-node@1.2.1(@types/node@20.11.7): + resolution: {integrity: sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - pathe: 1.1.1 + pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.0.11(@types/node@20.10.6) + vite: 5.0.12(@types/node@20.11.7) transitivePeerDependencies: - '@types/node' - less @@ -10348,8 +11078,8 @@ packages: - terser dev: true - /vite@5.0.11(@types/node@20.10.6): - resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==} + /vite@5.0.12(@types/node@20.11.7): + resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -10376,16 +11106,16 @@ packages: terser: optional: true dependencies: - '@types/node': 20.10.6 - esbuild: 0.19.11 + '@types/node': 20.11.7 + esbuild: 0.19.12 postcss: 8.4.33 - rollup: 4.9.4 + rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@1.1.3(@types/node@20.10.6): - resolution: {integrity: sha512-2l8om1NOkiA90/Y207PsEvJLYygddsOyr81wLQ20Ra8IlLKbyQncWsGZjnbkyG2KwwuTXLQjEPOJuxGMG8qJBQ==} + /vitest@1.2.1(@types/node@20.11.7): + resolution: {integrity: sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -10409,27 +11139,27 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.10.6 - '@vitest/expect': 1.1.3 - '@vitest/runner': 1.1.3 - '@vitest/snapshot': 1.1.3 - '@vitest/spy': 1.1.3 - '@vitest/utils': 1.1.3 - acorn-walk: 8.3.1 + '@types/node': 20.11.7 + '@vitest/expect': 1.2.1 + '@vitest/runner': 1.2.1 + '@vitest/snapshot': 1.2.1 + '@vitest/spy': 1.2.1 + '@vitest/utils': 1.2.1 + acorn-walk: 8.3.2 cac: 6.7.14 - chai: 4.4.0 + chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.5 - pathe: 1.1.1 + pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 strip-literal: 1.3.0 - tinybench: 2.5.1 - tinypool: 0.8.1 - vite: 5.0.11(@types/node@20.10.6) - vite-node: 1.1.3(@types/node@20.10.6) + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.0.12(@types/node@20.11.7) + vite-node: 1.2.1(@types/node@20.11.7) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -10441,29 +11171,21 @@ packages: - terser dev: true - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - dev: false - /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /web-streams-polyfill@3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + /web-streams-polyfill@3.3.2: + resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} engines: {node: '>= 8'} dev: true - /webcrypto-core@1.7.7: - resolution: {integrity: sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==} + /webcrypto-core@1.7.8: + resolution: {integrity: sha512-eBR98r9nQXTqXt/yDRtInszPMjTaSAMJAFDg2AHsgrnczawT1asx9YNBX6k5p+MekbPF4+s/UJJrr88zsTqkSg==} dependencies: - '@peculiar/asn1-schema': 2.3.6 + '@peculiar/asn1-schema': 2.3.8 '@peculiar/json-schema': 1.1.12 asn1js: 3.0.5 pvtsutils: 1.3.5 @@ -10528,8 +11250,8 @@ packages: is-weakset: 2.0.2 dev: true - /which-module@2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true /which-typed-array@1.1.13: @@ -10556,6 +11278,7 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} @@ -10586,6 +11309,7 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} @@ -10594,11 +11318,12 @@ packages: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 + dev: true /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /ws@7.5.9: + /ws@7.5.9(utf-8-validate@6.0.3): resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: @@ -10609,22 +11334,11 @@ packages: optional: true utf-8-validate: optional: true + dependencies: + utf-8-validate: 6.0.3 dev: false - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - - /ws@8.14.2: + /ws@8.14.2(utf-8-validate@6.0.3): resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: @@ -10635,9 +11349,11 @@ packages: optional: true utf-8-validate: optional: true + dependencies: + utf-8-validate: 6.0.3 dev: false - /ws@8.16.0: + /ws@8.16.0(utf-8-validate@6.0.3): resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: @@ -10648,6 +11364,8 @@ packages: optional: true utf-8-validate: optional: true + dependencies: + utf-8-validate: 6.0.3 /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -10660,9 +11378,11 @@ packages: /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + dev: true /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -10674,6 +11394,7 @@ packages: /yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} + dev: true /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} @@ -10686,6 +11407,7 @@ packages: /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + dev: true /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} @@ -10699,7 +11421,7 @@ packages: require-main-filename: 2.0.0 set-blocking: 2.0.0 string-width: 4.2.3 - which-module: 2.0.0 + which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 dev: true @@ -10715,6 +11437,7 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 + dev: true /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} @@ -10728,6 +11451,7 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + dev: true /yup@1.3.3: resolution: {integrity: sha512-v8QwZSsHH2K3/G9WSkp6mZKO+hugKT1EmnMqLNUcfu51HU9MDyhlETT/JgtzprnrnQHPWsjc6MUDMBp/l9fNnw==} @@ -10736,17 +11460,17 @@ packages: tiny-case: 1.0.3 toposort: 2.0.2 type-fest: 2.19.0 - dev: false + dev: true /zen-observable-ts@1.2.5: resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==} dependencies: zen-observable: 0.8.15 - dev: false + dev: true /zen-observable@0.8.15: resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} - dev: false + dev: true /zod-validation-error@2.1.0(zod@3.22.4): resolution: {integrity: sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==} @@ -10763,4 +11487,4 @@ packages: /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false + dev: true diff --git a/wrapper.sh b/wrapper.sh index 675e7b7..0c6156e 100644 --- a/wrapper.sh +++ b/wrapper.sh @@ -8,8 +8,8 @@ cleanup() { # Trap signals and errors trap cleanup EXIT HUP INT QUIT PIPE TERM ERR -cd packages/api && node ./dist/main.js & -cd packages/web && node ./server.js & +cd packages/api && npm run start & +cd packages/web && npm run start & wait -n exit $? \ No newline at end of file