diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml index 81ff416..8771ad9 100644 --- a/.github/workflows/test-and-release.yml +++ b/.github/workflows/test-and-release.yml @@ -39,7 +39,7 @@ jobs: uses: actions/setup-node@v4 with: node-version: 18.12.1 - cache: "pnpm" + cache: pnpm - name: Install deps run: pnpm install --frozen-lockfile diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 2658a60..8dd8977 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,7 +2,6 @@ "recommendations": [ "dbaeumer.vscode-eslint", "EditorConfig.EditorConfig", - "esbenp.prettier-vscode", "GraphQL.vscode-graphql", "GraphQL.vscode-graphql-syntax" ] diff --git a/.vscode/settings.json b/.vscode/settings.json index 6b2867b..99331c6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,14 +1,29 @@ { - "[json][jsonc][markdown]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, + // Disable the default formatter, use eslint instead + "prettier.enable": false, + "editor.formatOnSave": false, + + // Auto fix "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit", "source.organizeImports": "never" }, - "editor.formatOnSave": true, - "eslint.experimental.useFlatConfig": true, - "eslint.validate": ["javascript", "typescript"], + + // Enable eslint for all supported languages + "eslint.validate": [ + "javascript", + "typescript", + "html", + "markdown", + "json", + "jsonc", + "yaml", + "toml", + "xml", + "gql", + "graphql" + ], + "search.exclude": { "**/node_modules": true, "packages/*/dist": true diff --git a/1.graphql b/1.graphql new file mode 100644 index 0000000..b421a57 --- /dev/null +++ b/1.graphql @@ -0,0 +1,4 @@ +type Post { + id: Int! + text: String! + } diff --git a/1.ts b/1.ts new file mode 100644 index 0000000..b78666b --- /dev/null +++ b/1.ts @@ -0,0 +1,9 @@ +import gql from "graphql-tag" + +export const typeDefs = gql` + type Post { + id: Int! + text: String! + text: Int! + } +` diff --git a/eslint.config.js b/eslint.config.js index 7a71d54..05e107e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,24 +1,52 @@ -import eslint from "@eslint/js" -import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended" -import simpleImportSort from "eslint-plugin-simple-import-sort" -import tseslint from "typescript-eslint" +import config from "@antfu/eslint-config" +import * as graphqlPlugin from "@graphql-eslint/eslint-plugin" -export default tseslint.config( - eslint.configs.recommended, - ...tseslint.configs.recommended, +export default config( { - plugins: { - "simple-import-sort": simpleImportSort, + formatters: { + graphql: true, }, + stylistic: { + quotes: "double", + }, + rules: { + // Always use { } after if/for. + "curly": ["error", "all"], + "import/order": [ + "error", + { + // At least one new line between each group will be enforced, and new lines inside a group will be forbidden. + "newlines-between": "always", + "alphabetize": { + order: "asc", + orderImportKind: "asc", + }, + }, + ], + "no-console": "warn", + // Don't replace "a" + b to `a${b}` + "prefer-template": "off", + "test/consistent-test-it": "off", + // Allow types similar to interfaces + "ts/consistent-type-definitions": "off", + // Allow shorthand method type signature + "ts/method-signature-style": "off", + // One true brace style. + "style/brace-style": ["error", "1tbs"], + "unicorn/template-indent": [ + "error", + ], + }, + }, + { + files: ["**/*.md/*.ts", "**/readme.sample.ts"], rules: { - "simple-import-sort/imports": "warn", - "simple-import-sort/exports": "warn", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-empty-interface": "off", + "no-console": "off", }, }, +).prepend( { - ignores: ["packages/*/dist/"], + files: ["**/*.ts"], + processor: graphqlPlugin.processors.graphql, }, - eslintPluginPrettierRecommended, ) diff --git a/package.json b/package.json index 9fe9d2d..65a31cc 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,22 @@ { - "description": "graphql-orm monorepo root", - "private": true, + "type": "module", "version": "0.0.0", + "private": true, + "description": "graphql-orm monorepo root", "author": "Ilya Semenov", "license": "MIT", - "type": "module", "scripts": { - "lint": "eslint --fix . && prettier --write '**/*.{json,md}'", + "lint": "eslint --fix .", "prepare": "husky" }, "devDependencies": { - "@changesets/cli": "~2.27.1", - "eslint": "~8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "~5.1.3", - "eslint-plugin-simple-import-sort": "~12.0.0", - "husky": "~9.0.11", - "lint-staged": "~15.2.2", - "prettier": "^3.2.5", - "typescript": "~5.3.3", - "typescript-eslint": "~7.0.2" + "@antfu/eslint-config": "^2.21.1", + "@changesets/cli": "^2.27.1", + "@graphql-eslint/eslint-plugin": "^3.20.1", + "eslint": "^9.5.0", + "eslint-plugin-format": "^0.1.2", + "husky": "^9.0.11", + "lint-staged": "^15.2.2", + "typescript": "^5.3.3" } } diff --git a/packages/graphql-orm/package.json b/packages/graphql-orm/package.json index 0cea1e8..1a75d30 100644 --- a/packages/graphql-orm/package.json +++ b/packages/graphql-orm/package.json @@ -1,17 +1,17 @@ { "name": "graphql-orm", - "description": "Common base for objection-graphql-resolver and orchid-graphql", - "private": true, + "type": "module", "version": "1.4.1", + "private": true, + "description": "Common base for objection-graphql-resolver and orchid-graphql", "author": "Ilya Semenov", "license": "MIT", - "type": "module", - "dependencies": { - "graphql-parse-resolve-info": "^4.13.0" - }, "peerDependencies": { "graphql": "^16" }, + "dependencies": { + "graphql-parse-resolve-info": "^4.13.0" + }, "devDependencies": { "tsconfig-vite-node": "^1.1.0" } diff --git a/packages/graphql-orm/src/filters/filters.ts b/packages/graphql-orm/src/filters/filters.ts index ded3de8..fa26bc0 100644 --- a/packages/graphql-orm/src/filters/filters.ts +++ b/packages/graphql-orm/src/filters/filters.ts @@ -1,5 +1,5 @@ -import { OrmAdapter } from "../orm/orm" -import { TableResolveContext } from "../resolvers/table" +import type { OrmAdapter } from "../orm/orm" +import type { TableResolveContext } from "../resolvers/table" import { is_plain_object } from "../utils/is-plain-object" // TODO: per-field definitions diff --git a/packages/graphql-orm/src/orm/orm.ts b/packages/graphql-orm/src/orm/orm.ts index fe4b893..714b1a1 100644 --- a/packages/graphql-orm/src/orm/orm.ts +++ b/packages/graphql-orm/src/orm/orm.ts @@ -1,4 +1,4 @@ -import { GetPageFn } from "../paginators/base" +import type { GetPageFn } from "../paginators/base" export type OrmModifier = ( query: Orm["Query"], @@ -32,7 +32,7 @@ export interface OrmAdapter { // Select - select_field(query: Query, opts: { field: string; as: string }): Query + select_field(query: Query, opts: { field: string, as: string }): Query select_relation( query: Query, diff --git a/packages/graphql-orm/src/paginators/base.ts b/packages/graphql-orm/src/paginators/base.ts index 87c5d4f..ef49d66 100644 --- a/packages/graphql-orm/src/paginators/base.ts +++ b/packages/graphql-orm/src/paginators/base.ts @@ -1,5 +1,5 @@ -import { OrmAdapter } from "../orm/orm" -import { GraphResolveContext, GraphResolver } from "../resolvers/graph" +import type { OrmAdapter } from "../orm/orm" +import type { GraphResolveContext, GraphResolver } from "../resolvers/graph" export interface Paginator { /** GraphQL path, for example: `["nodes"]` */ diff --git a/packages/graphql-orm/src/paginators/cursor.ts b/packages/graphql-orm/src/paginators/cursor.ts index 7b80e5b..ffdebb5 100644 --- a/packages/graphql-orm/src/paginators/cursor.ts +++ b/packages/graphql-orm/src/paginators/cursor.ts @@ -1,5 +1,6 @@ -import { OrmAdapter } from "../orm/orm" -import { PaginateContext, Paginator } from "./base" +import type { OrmAdapter } from "../orm/orm" + +import type { PaginateContext, Paginator } from "./base" export function defineCursorPaginator( options: Partial = {}, @@ -23,8 +24,7 @@ export interface CursorPaginatorPage { } class CursorPaginator - implements Paginator -{ +implements Paginator { readonly path = ["nodes"] readonly options: CursorPaginatorOptions diff --git a/packages/graphql-orm/src/resolvers/field.ts b/packages/graphql-orm/src/resolvers/field.ts index 4291553..26f7230 100644 --- a/packages/graphql-orm/src/resolvers/field.ts +++ b/packages/graphql-orm/src/resolvers/field.ts @@ -1,6 +1,7 @@ -import { OrmAdapter } from "../orm/orm" +import type { OrmAdapter } from "../orm/orm" import { run_after_query } from "../utils/run-after" -import { TableResolveContext } from "./table" + +import type { TableResolveContext } from "./table" export interface FieldResolverOptions { /** Table field (if different from GraphQL field) */ diff --git a/packages/graphql-orm/src/resolvers/graph.ts b/packages/graphql-orm/src/resolvers/graph.ts index c7092fa..cd18bf7 100644 --- a/packages/graphql-orm/src/resolvers/graph.ts +++ b/packages/graphql-orm/src/resolvers/graph.ts @@ -1,9 +1,11 @@ import type { GraphQLResolveInfo } from "graphql" -import { parseResolveInfo, ResolveTree } from "graphql-parse-resolve-info" +import type { ResolveTree } from "graphql-parse-resolve-info" +import { parseResolveInfo } from "graphql-parse-resolve-info" + +import type { FiltersDef } from "../filters/filters" +import type { OrmAdapter } from "../orm/orm" +import type { Paginator } from "../paginators/base" -import { FiltersDef } from "../filters/filters" -import { OrmAdapter } from "../orm/orm" -import { Paginator } from "../paginators/base" import type { TableResolver, TableResolverOptions } from "./table" export type GraphResolverOptions = Pick< diff --git a/packages/graphql-orm/src/resolvers/page.ts b/packages/graphql-orm/src/resolvers/page.ts index 9218d65..20345b2 100644 --- a/packages/graphql-orm/src/resolvers/page.ts +++ b/packages/graphql-orm/src/resolvers/page.ts @@ -1,7 +1,9 @@ -import { OrmAdapter } from "../orm/orm" -import { Paginator } from "../paginators/base" -import { FieldResolver, parse_field_options } from "./field" -import { RelationResolverOptions } from "./relation" +import type { OrmAdapter } from "../orm/orm" +import type { Paginator } from "../paginators/base" + +import type { FieldResolver } from "./field" +import { parse_field_options } from "./field" +import type { RelationResolverOptions } from "./relation" export function definePageResolver( paginator: Paginator, diff --git a/packages/graphql-orm/src/resolvers/relation.ts b/packages/graphql-orm/src/resolvers/relation.ts index 82a3e8c..79abf58 100644 --- a/packages/graphql-orm/src/resolvers/relation.ts +++ b/packages/graphql-orm/src/resolvers/relation.ts @@ -1,11 +1,9 @@ -import { FiltersDef } from "../filters/filters" -import { OrmAdapter } from "../orm/orm" -import { - FieldResolver, - FieldResolverOptions, - parse_field_options, -} from "./field" -import { TableResolveModifier } from "./table" +import type { FiltersDef } from "../filters/filters" +import type { OrmAdapter } from "../orm/orm" + +import type { FieldResolver, FieldResolverOptions } from "./field" +import { parse_field_options } from "./field" +import type { TableResolveModifier } from "./table" export interface RelationResolverOptions extends Omit, "modify"> { diff --git a/packages/graphql-orm/src/resolvers/table.ts b/packages/graphql-orm/src/resolvers/table.ts index ac79854..256e1c4 100644 --- a/packages/graphql-orm/src/resolvers/table.ts +++ b/packages/graphql-orm/src/resolvers/table.ts @@ -1,7 +1,10 @@ -import { apply_filters, ApplyFiltersModifier } from "../filters/filters" -import { OrmAdapter } from "../orm/orm" +import type { ApplyFiltersModifier } from "../filters/filters" +import { apply_filters } from "../filters/filters" +import type { OrmAdapter } from "../orm/orm" import { run_after_query } from "../utils/run-after" -import { defineFieldResolver, FieldResolver } from "./field" + +import type { FieldResolver } from "./field" +import { defineFieldResolver } from "./field" import type { GraphResolveContext, GraphResolver } from "./graph" import { defineRelationResolver } from "./relation" @@ -57,8 +60,8 @@ export class TableResolver { Record> >((resolvers, field) => { const r0 = fields[field] - const r: FieldResolver | undefined = - typeof r0 === "function" + const r: FieldResolver | undefined + = typeof r0 === "function" ? r0 : r0 === true ? this._get_default_field_resolver(field) @@ -90,10 +93,10 @@ export class TableResolver { ) } - const allow_all_fields = - this.options.allowAllFields ?? - graph.options.allowAllFields ?? - !this.options.fields + const allow_all_fields + = this.options.allowAllFields + ?? graph.options.allowAllFields + ?? !this.options.fields if (!allow_all_fields && !this.table_field_resolvers) { throw new Error( @@ -107,9 +110,9 @@ export class TableResolver { for (const subtree of Object.values(tree.fieldsByTypeName[type])) { const field = subtree.name - const r: FieldResolver | undefined = - this.table_field_resolvers?.[field] || - (allow_all_fields ? this._get_default_field_resolver(field) : undefined) + const r: FieldResolver | undefined + = this.table_field_resolvers?.[field] + || (allow_all_fields ? this._get_default_field_resolver(field) : undefined) if (!r) { throw new Error(`No field resolver defined for field ${type}.${field}.`) } @@ -118,8 +121,8 @@ export class TableResolver { } } - const allow_all_filters = - this.options.allowAllFilters ?? graph.options.allowAllFilters + const allow_all_filters + = this.options.allowAllFilters ?? graph.options.allowAllFilters const effective_filters = allow_all_filters ? true : filters @@ -151,11 +154,11 @@ export class TableResolver { ): FieldResolver { const table_field_lookup = tableField || field if ( - this.options.modifiers?.[table_field_lookup] || - this.virtual_fields.has(table_field_lookup) + this.options.modifiers?.[table_field_lookup] + || this.virtual_fields.has(table_field_lookup) ) { // Keep query as is. - return (query) => query + return query => query } else if (this.relations.has(table_field_lookup)) { // TODO: pre-create and cache return defineRelationResolver({ tableField }) diff --git a/packages/graphql-orm/src/utils/run-after.ts b/packages/graphql-orm/src/utils/run-after.ts index 2c213a7..a265b0a 100644 --- a/packages/graphql-orm/src/utils/run-after.ts +++ b/packages/graphql-orm/src/utils/run-after.ts @@ -1,4 +1,4 @@ -import { OrmAdapter } from "../orm/orm" +import type { OrmAdapter } from "../orm/orm" export function run_after_query( orm: Orm, diff --git a/packages/objection-graphql-resolver/docs/filters.md b/packages/objection-graphql-resolver/docs/filters.md index 79ea55a..695a4f8 100644 --- a/packages/objection-graphql-resolver/docs/filters.md +++ b/packages/objection-graphql-resolver/docs/filters.md @@ -106,7 +106,7 @@ Define modifiers on a model class: ```ts class PostModel extends Model { static modifiers = { - public: (query) => query.whereNull("delete_time"), + public: query => query.whereNull("delete_time"), search: (query, term) => query.where("text", "ilike", `%${term}%`), } } diff --git a/packages/objection-graphql-resolver/docs/virtual-attributes.md b/packages/objection-graphql-resolver/docs/virtual-attributes.md index b10d3e2..8c5602f 100644 --- a/packages/objection-graphql-resolver/docs/virtual-attributes.md +++ b/packages/objection-graphql-resolver/docs/virtual-attributes.md @@ -62,7 +62,7 @@ const graph = r.graph({ fields: { id: true, title: true, - url: (query) => query.select("slug"), + url: query => query.select("slug"), }, }), }) @@ -86,7 +86,7 @@ const graph = r.graph({ fields: { id: true, title: true, - upper_title: (query) => query.select(raw("upper(title) as upper_title")), + upper_title: query => query.select(raw("upper(title) as upper_title")), }, }), }) diff --git a/packages/objection-graphql-resolver/playground/readme.sample.ts b/packages/objection-graphql-resolver/playground/readme.sample.ts index 9e133f3..3e6a26d 100644 --- a/packages/objection-graphql-resolver/playground/readme.sample.ts +++ b/packages/objection-graphql-resolver/playground/readme.sample.ts @@ -3,7 +3,8 @@ // In real projects, you will want to separate models, typedefs, // model resolvers, and the server into their own modules. -import { ApolloServer, ApolloServerOptions } from "@apollo/server" +import type { ApolloServerOptions } from "@apollo/server" +import { ApolloServer } from "@apollo/server" import { startStandaloneServer } from "@apollo/server/standalone" import gql from "graphql-tag" import Knex from "knex" @@ -21,19 +22,18 @@ class PostModel extends Model { // Define GraphQL schema -const typeDefs = gql` - type Post { - id: Int! - text: String! - } +const typeDefs = gql`type Post { + id: Int! + text: String! +} - type Mutation { - create_post(text: String!): Post! - } +type Mutation { + create_post(text: String!): Post! +} - type Query { - posts: [Post!]! - } +type Query { + posts: [Post!]! +} ` // Map GraphQL types to model resolvers diff --git a/packages/objection-graphql-resolver/src/orm/orm.ts b/packages/objection-graphql-resolver/src/orm/orm.ts index 32f7a83..7031741 100644 --- a/packages/objection-graphql-resolver/src/orm/orm.ts +++ b/packages/objection-graphql-resolver/src/orm/orm.ts @@ -1,7 +1,7 @@ -import { OrmAdapter, OrmModifier, run_after_query } from "graphql-orm" -import { QueryBuilder, raw, ref, RelationMappings } from "objection" -import { Model } from "objection" -import { AnyModelConstructor, AnyQueryBuilder, ModelClass } from "objection" +import type { OrmAdapter, OrmModifier } from "graphql-orm" +import { run_after_query } from "graphql-orm" +import type { AnyModelConstructor, AnyQueryBuilder, Model, ModelClass, RelationMappings } from "objection" +import { QueryBuilder, raw, ref } from "objection" // Get rid of this once https://github.com/Vincit/objection.js/issues/2364 is fixed export function field_ref(query: AnyQueryBuilder, field: string) { @@ -46,15 +46,15 @@ export const orm: ObjectionOrm = { ? Object.entries(modifiers).reduce< Record> >((modifiers, [field, modifier]) => { - // Objection modifiers return void, convert them to return query - if (typeof modifier === "function") { - modifiers[field] = (query, ...args) => { - modifier(query, ...args) - return query - } + // Objection modifiers return void, convert them to return query + if (typeof modifier === "function") { + modifiers[field] = (query, ...args) => { + modifier(query, ...args) + return query } - return modifiers - }, {}) + } + return modifiers + }, {}) : undefined }, @@ -71,7 +71,7 @@ export const orm: ObjectionOrm = { select_relation(query, { relation, as, modify }) { return query .withGraphFetched(`${relation} as ${as}`) - .modifyGraph(as, (query) => modify(query)) + .modifyGraph(as, query => modify(query)) }, // Find @@ -113,7 +113,7 @@ export const orm: ObjectionOrm = { set_query_page_result(query, get_page) { query.runAfter((nodes) => { if (!Array.isArray(nodes)) { - throw new Error(`Paginator called for single result query.`) + throw new TypeError(`Paginator called for single result query.`) } return get_page(nodes) }) @@ -140,7 +140,7 @@ export const orm: ObjectionOrm = { // Misc run_after_query(query, fn) { - return query.runAfter((result) => fn(result)) + return query.runAfter(result => fn(result)) }, prevent_select_all(query) { diff --git a/packages/objection-graphql-resolver/src/resolvers/graph.ts b/packages/objection-graphql-resolver/src/resolvers/graph.ts index 05afec8..30f2f79 100644 --- a/packages/objection-graphql-resolver/src/resolvers/graph.ts +++ b/packages/objection-graphql-resolver/src/resolvers/graph.ts @@ -1,13 +1,9 @@ -import { - GraphResolveOptions, - GraphResolver, - GraphResolverOptions, - Paginator, - TableResolver, -} from "graphql-orm" -import { AnyQueryBuilder, Model, QueryBuilder } from "objection" +import type { GraphResolveOptions, GraphResolverOptions, Paginator, TableResolver } from "graphql-orm" +import { GraphResolver } from "graphql-orm" +import type { AnyQueryBuilder, Model, QueryBuilder } from "objection" -import { ObjectionOrm, orm } from "../orm/orm" +import type { ObjectionOrm } from "../orm/orm" +import { orm } from "../orm/orm" export function createGraphResolver( types: Record>, diff --git a/packages/objection-graphql-resolver/src/resolvers/model.ts b/packages/objection-graphql-resolver/src/resolvers/model.ts index 5bce7b9..40d7c9e 100644 --- a/packages/objection-graphql-resolver/src/resolvers/model.ts +++ b/packages/objection-graphql-resolver/src/resolvers/model.ts @@ -1,7 +1,9 @@ -import { TableResolver, TableResolverOptions } from "graphql-orm" -import { AnyModelConstructor } from "objection" +import type { TableResolverOptions } from "graphql-orm" +import { TableResolver } from "graphql-orm" +import type { AnyModelConstructor } from "objection" -import { ObjectionOrm, orm } from "../orm/orm" +import type { ObjectionOrm } from "../orm/orm" +import { orm } from "../orm/orm" export function defineModelResolver( model: AnyModelConstructor, diff --git a/packages/objection-graphql-resolver/tests/main/async-modifier.test.ts b/packages/objection-graphql-resolver/tests/main/async-modifier.test.ts index 77f6d21..4722f1e 100644 --- a/packages/objection-graphql-resolver/tests/main/async-modifier.test.ts +++ b/packages/objection-graphql-resolver/tests/main/async-modifier.test.ts @@ -1,9 +1,11 @@ import gql from "graphql-tag" -import { Model, QueryBuilder } from "objection" +import type { QueryBuilder } from "objection" +import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -35,17 +37,16 @@ class PostModel extends Model { tag?: string } -const schema = gql` - scalar Filter +const schema = gql`scalar Filter - type Post { - id: Int! - text: String! - } +type Post { + id: Int! + text: String! +} - type Query { - posts(filter: Filter): [Post!]! - } +type Query { + posts(filter: Filter): [Post!]! +} ` const graph = r.graph({ @@ -86,13 +87,12 @@ test("filter with async modifier", async () => { ]) assert.deepEqual( - await client.request(gql` - { - posts(filter: { favorite_for_user: 2 }) { - text - } - } - `), + await client.request(gql`{ + posts(filter: { favorite_for_user: 2 }) { + text + } +} +`), { posts: [{ text: "Elon Musk marries again." }], }, diff --git a/packages/objection-graphql-resolver/tests/main/auto-select-pagination-keys.test.ts b/packages/objection-graphql-resolver/tests/main/auto-select-pagination-keys.test.ts index 36c3fca..46fbbb7 100644 --- a/packages/objection-graphql-resolver/tests/main/auto-select-pagination-keys.test.ts +++ b/packages/objection-graphql-resolver/tests/main/auto-select-pagination-keys.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class BookModel extends Model { static tableName = "book" @@ -13,21 +14,20 @@ class BookModel extends Model { author?: string } -const schema = gql` - type Book { - id: Int! - title: String! - author: String! - } +const schema = gql`type Book { + id: Int! + title: String! + author: String! +} - type BookPage { - nodes: [Book!]! - cursor: String - } +type BookPage { + nodes: [Book!]! + cursor: String +} - type Query { - books: BookPage! - } +type Query { + books: BookPage! +} ` const graph = r.graph({ @@ -60,15 +60,14 @@ test("auto select pagination key", async () => { ]) assert.deepEqual( - await client.request(gql` - { - books { - nodes { - title - } - } - } - `), + await client.request(gql`{ + books { + nodes { + title + } + } +} +`), { books: { nodes: [{ title: "1984" }], diff --git a/packages/objection-graphql-resolver/tests/main/field-transform.test.ts b/packages/objection-graphql-resolver/tests/main/field-transform.test.ts index 806c091..5dee183 100644 --- a/packages/objection-graphql-resolver/tests/main/field-transform.test.ts +++ b/packages/objection-graphql-resolver/tests/main/field-transform.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -13,17 +14,16 @@ class UserModel extends Model { password?: string } -const schema = gql` - type User { - id: Int! - name: String! - # empty if not allowed - password: String - } +const schema = gql`type User { + id: Int! + name: String! + # empty if not allowed + password: String +} - type Query { - user(id: Int!): User - } +type Query { + user(id: Int!): User +} ` const graph = r.graph<{ user_id: string }>({ @@ -54,7 +54,7 @@ const resolvers: Resolvers = { const { client, knex } = await setup({ typeDefs: schema, resolvers }) -await knex.schema.createTable("user", function (table) { +await knex.schema.createTable("user", (table) => { table.increments("id").notNullable().primary() table.string("name").notNullable() table.string("password").notNullable() @@ -64,15 +64,14 @@ test("field transform", async () => { await UserModel.query().insert({ name: "Alice", password: "secret" }) assert.deepEqual( - await client.request(gql` - { - user(id: 1) { - id - name - password - } - } - `), + await client.request(gql`{ + user(id: 1) { + id + name + password + } +} +`), { user: { id: 1, name: "Alice", password: null }, }, @@ -81,15 +80,14 @@ test("field transform", async () => { assert.deepEqual( await client.request( - gql` - { - user(id: 1) { - id - name - password - } - } - `, + gql`{ + user(id: 1) { + id + name + password + } +} +`, undefined, { user_id: "2" }, ), @@ -101,15 +99,14 @@ test("field transform", async () => { assert.deepEqual( await client.request( - gql` - { - user(id: 1) { - id - name - password - } - } - `, + gql`{ + user(id: 1) { + id + name + password + } +} +`, undefined, { user_id: "1" }, ), diff --git a/packages/objection-graphql-resolver/tests/main/fields.test.ts b/packages/objection-graphql-resolver/tests/main/fields.test.ts index 18e1453..431dd62 100644 --- a/packages/objection-graphql-resolver/tests/main/fields.test.ts +++ b/packages/objection-graphql-resolver/tests/main/fields.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, expect, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -13,20 +14,19 @@ class UserModel extends Model { password?: string } -const schema = gql` - type User { - id: Int! - name: String! - password: String! - } +const schema = gql`type User { + id: Int! + name: String! + password: String! +} - type Query { - default_user(id: Int!): User - default_user1(id: Int!): User - secure_user(id: Int!): User - user1(id: Int!): User - user2(id: Int!): User - } +type Query { + default_user(id: Int!): User + default_user1(id: Int!): User + secure_user(id: Int!): User + user1(id: Int!): User + user2(id: Int!): User +} ` const default_graph = r.graph({ @@ -102,7 +102,7 @@ const resolvers: Resolvers = { const { client, knex } = await setup({ typeDefs: schema, resolvers }) -await knex.schema.createTable("user", function (table) { +await knex.schema.createTable("user", (table) => { table.increments("id").notNullable().primary() table.string("name").notNullable() table.string("password").notNullable() @@ -112,15 +112,14 @@ test("model resolver fields access", async () => { await UserModel.query().insertGraph([{ name: "Alice", password: "secret" }]) assert.deepEqual( - await client.request(gql` - { - user: default_user(id: 1) { - id - name - password - } - } - `), + await client.request(gql`{ + user: default_user(id: 1) { + id + name + password + } +} +`), { user: { id: 1, name: "Alice", password: "secret" }, }, @@ -128,28 +127,26 @@ test("model resolver fields access", async () => { ) await expect( - client.request(gql` - { - user: default_user1(id: 1) { - id - name - password - } - } - `), + client.request(gql`{ + user: default_user1(id: 1) { + id + name + password + } +} +`), ).rejects.toThrow( "Resolver for type User must either allow all fields or specify options.fields.", ) assert.deepEqual( - await client.request(gql` - { - user: secure_user(id: 1) { - id - name - } - } - `), + await client.request(gql`{ + user: secure_user(id: 1) { + id + name + } +} +`), { user: { id: 1, name: "Alice" }, }, @@ -157,27 +154,25 @@ test("model resolver fields access", async () => { ) await expect( - client.request(gql` - { - user: secure_user(id: 1) { - id - name - password - } - } - `), + client.request(gql`{ + user: secure_user(id: 1) { + id + name + password + } +} +`), ).rejects.toThrow("No field resolver defined for field User.password") assert.deepEqual( - await client.request(gql` - { - user: user1(id: 1) { - id - name - password - } - } - `), + await client.request(gql`{ + user: user1(id: 1) { + id + name + password + } +} +`), { user: { id: 1, name: "Alice", password: "secret" }, }, @@ -185,15 +180,14 @@ test("model resolver fields access", async () => { ) assert.deepEqual( - await client.request(gql` - { - user: user2(id: 1) { - id - name - password - } - } - `), + await client.request(gql`{ + user: user2(id: 1) { + id + name + password + } +} +`), { user: { id: 1, name: "Alice", password: "secret" }, }, diff --git a/packages/objection-graphql-resolver/tests/main/filters.test.ts b/packages/objection-graphql-resolver/tests/main/filters.test.ts index 6cd0f82..5988204 100644 --- a/packages/objection-graphql-resolver/tests/main/filters.test.ts +++ b/packages/objection-graphql-resolver/tests/main/filters.test.ts @@ -1,9 +1,11 @@ import gql from "graphql-tag" -import { Model, QueryBuilder, ref } from "objection" +import type { QueryBuilder } from "objection" +import { Model, ref } from "objection" import * as r from "objection-graphql-resolver" import { assert, beforeAll, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -49,32 +51,31 @@ class PostModel extends Model { author?: UserModel } -const schema = gql` - scalar Filter +const schema = gql`scalar Filter - type User { - id: Int! - name: String! - posts(filter: Filter!): [Post!]! - non_filterable_posts(filter: Filter!): [Post!]! - } +type User { + id: Int! + name: String! + posts(filter: Filter!): [Post!]! + non_filterable_posts(filter: Filter!): [Post!]! +} - type Post { - id: Int! - text: String! - author: User! - } +type Post { + id: Int! + text: String! + author: User! +} - type Query { - user(id: Int!): User - posts(filter: Filter): [Post!]! - non_filterable_posts(filter: Filter): [Post!]! +type Query { + user(id: Int!): User + posts(filter: Filter): [Post!]! + non_filterable_posts(filter: Filter): [Post!]! - # test allowAllFilters - users1(filter: Filter): [User!]! - users2(filter: Filter): [User!]! - users3(filter: Filter): [User!]! - } + # test allowAllFilters + users1(filter: Filter): [User!]! + users2(filter: Filter): [User!]! + users3(filter: Filter): [User!]! +} ` const graph1 = r.graph({ @@ -172,13 +173,12 @@ beforeAll(async () => { test("filters", async () => { assert.deepEqual( - await client.request(gql` - { - posts(filter: { author_id: 1 }) { - id - } - } - `), + await client.request(gql`{ + posts(filter: { author_id: 1 }) { + id + } +} +`), { posts: [{ id: 1 }, { id: 2 }, { id: 4 }], }, @@ -186,99 +186,91 @@ test("filters", async () => { ) assert.deepEqual( - await client.request(gql` - { - posts(filter: { id__in: [3, 5] }) { - id - } - } - `), + await client.request(gql`{ + posts(filter: { id__in: [3, 5] }) { + id + } +} +`), { posts: [{ id: 3 }, { id: 5 }] }, "filter by id__in", ) assert.deepEqual( - await client.request(gql` - { - posts(filter: { id__lt: 3 }) { - id - } - } - `), + await client.request(gql`{ + posts(filter: { id__lt: 3 }) { + id + } +} +`), { posts: [{ id: 1 }, { id: 2 }] }, "filter by id__lt", ) assert.deepEqual( - await client.request(gql` - { - posts(filter: { id__lte: 3 }) { - id - } - } - `), + await client.request(gql`{ + posts(filter: { id__lte: 3 }) { + id + } +} +`), { posts: [{ id: 1 }, { id: 2 }, { id: 3 }] }, "filter by id__lte", ) assert.deepEqual( - await client.request(gql` - { - posts(filter: { id__gt: 4 }) { - id - } - } - `), + await client.request(gql`{ + posts(filter: { id__gt: 4 }) { + id + } +} +`), { posts: [{ id: 5 }, { id: 6 }] }, "filter by id__gt", ) assert.deepEqual( - await client.request(gql` - { - posts(filter: { id__gte: 4 }) { - id - } - } - `), + await client.request(gql`{ + posts(filter: { id__gte: 4 }) { + id + } +} +`), { posts: [{ id: 4 }, { id: 5 }, { id: 6 }] }, "filter by id__gte", ) assert.deepEqual( - await client.request(gql` - { - posts(filter: { text__like: "%COVID%" }) { - text - } - } - `), + await client.request(gql`{ + posts(filter: { text__like: "%COVID%" }) { + text + } +} +`), { posts: [{ text: "Latest COVID news." }, { text: "COVID vs Flu?" }] }, "filter by text__like", ) assert.deepEqual( ( - await client.request(gql` - { - posts(filter: { published: true }) { - text - } - } - `) + await client.request(gql`{ + posts(filter: { published: true }) { + text + } +} +`) ).posts.length, 5, "filter by modifier", ) assert.deepEqual( - await client.request(gql` - { - posts(filter: { search: "news" }) { - text - } - } - `), + await client.request(gql`{ + posts(filter: { search: "news" }) { + text + } +} +`), { posts: [ { text: "Latest COVID news." }, @@ -290,28 +282,26 @@ test("filters", async () => { assert.deepEqual( ( - await client.request(gql` - { - posts: non_filterable_posts(filter: { search: "news" }) { - id - } - } - `) + await client.request(gql`{ + posts: non_filterable_posts(filter: { search: "news" }) { + id + } +} +`) ).posts.length, 6, "ignore filter in non-filterable root query", ) assert.deepEqual( - await client.request(gql` - { - user(id: 1) { - posts(filter: { search: "news" }) { - text - } - } - } - `), + await client.request(gql`{ + user(id: 1) { + posts(filter: { search: "news" }) { + text + } + } +} +`), { user: { posts: [{ text: "Good news from China." }], @@ -322,15 +312,14 @@ test("filters", async () => { assert.deepEqual( ( - await client.request(gql` - { - user(id: 1) { - posts: non_filterable_posts(filter: { search: "news" }) { - text - } - } - } - `) + await client.request(gql`{ + user(id: 1) { + posts: non_filterable_posts(filter: { search: "news" }) { + text + } + } +} +`) ).user.posts.length, 3, "ignore filter in non-filterable relation", @@ -339,13 +328,12 @@ test("filters", async () => { test("allowAllFilters", async () => { assert.deepEqual( - await client.request(gql` - { - users: users1(filter: { name__like: "%ob" }) { - id - } - } - `), + await client.request(gql`{ + users: users1(filter: { name__like: "%ob" }) { + id + } +} +`), { users: [{ id: 1 }, { id: 2 }, { id: 3 }], }, @@ -353,13 +341,12 @@ test("allowAllFilters", async () => { ) assert.deepEqual( - await client.request(gql` - { - users: users2(filter: { name__like: "%ob" }) { - id - } - } - `), + await client.request(gql`{ + users: users2(filter: { name__like: "%ob" }) { + id + } +} +`), { users: [{ id: 2 }], }, @@ -367,13 +354,12 @@ test("allowAllFilters", async () => { ) assert.deepEqual( - await client.request(gql` - { - users: users3(filter: { name__like: "%ob" }) { - id - } - } - `), + await client.request(gql`{ + users: users3(filter: { name__like: "%ob" }) { + id + } +} +`), { users: [{ id: 2 }], }, diff --git a/packages/objection-graphql-resolver/tests/main/m2m.test.ts b/packages/objection-graphql-resolver/tests/main/m2m.test.ts index 9df58be..81c253e 100644 --- a/packages/objection-graphql-resolver/tests/main/m2m.test.ts +++ b/packages/objection-graphql-resolver/tests/main/m2m.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class AuthorModel extends Model { static tableName = "author" @@ -55,22 +56,21 @@ class BookModel extends Model { authors?: AuthorModel[] } -const schema = gql` - type Author { - id: Int! - name: String! - books: [Book!]! - } +const schema = gql`type Author { + id: Int! + name: String! + books: [Book!]! +} - type Book { - id: Int! - title: String! - authors: [Author!]! - } +type Book { + id: Int! + title: String! + authors: [Author!]! +} - type Query { - books: [Book!]! - } +type Query { + books: [Book!]! +} ` const graph = r.graph({ @@ -117,12 +117,12 @@ test("m2m", async () => { { id: 1, title: "1984", - authors: [{ "#id": "George Orwell", name: "George Orwell" }], + authors: [{ "#id": "George Orwell", "name": "George Orwell" }], }, { id: 2, title: "Tom Sawyer", - authors: [{ "#id": "Mark Twain", name: "Mark Twain" }], + authors: [{ "#id": "Mark Twain", "name": "Mark Twain" }], }, { id: 3, @@ -134,18 +134,17 @@ test("m2m", async () => { ) assert.deepEqual( - await client.request(gql` - { - books { - id - title - authors { - id - name - } - } - } - `), + await client.request(gql`{ + books { + id + title + authors { + id + name + } + } +} +`), { books: [ { id: 1, title: "1984", authors: [{ id: 1, name: "George Orwell" }] }, diff --git a/packages/objection-graphql-resolver/tests/main/nested-args.test.ts b/packages/objection-graphql-resolver/tests/main/nested-args.test.ts index 2a37d53..075f69e 100644 --- a/packages/objection-graphql-resolver/tests/main/nested-args.test.ts +++ b/packages/objection-graphql-resolver/tests/main/nested-args.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class AuthorModel extends Model { static tableName = "author" @@ -56,23 +57,22 @@ class BookModel extends Model { authors?: AuthorModel[] } -const schema = gql` - type Author { - id: Int! - name: String! - country: String - books: [Book!]! - } +const schema = gql`type Author { + id: Int! + name: String! + country: String + books: [Book!]! +} - type Book { - id: Int! - title: String! - authors(country: String): [Author!]! - } +type Book { + id: Int! + title: String! + authors(country: String): [Author!]! +} - type Query { - books: [Book!]! - } +type Query { + books: [Book!]! +} ` const graph = r.graph({ @@ -156,16 +156,15 @@ test("filter relation", async () => { ) assert.deepEqual( - await client.request(gql` - { - books { - title - authors(country: "USA") { - name - } - } - } - `), + await client.request(gql`{ + books { + title + authors(country: "USA") { + name + } + } +} +`), { books: [ { title: "1984", authors: [] }, diff --git a/packages/objection-graphql-resolver/tests/main/nested-pagination.test.ts b/packages/objection-graphql-resolver/tests/main/nested-pagination.test.ts index b4e3998..8ecd968 100644 --- a/packages/objection-graphql-resolver/tests/main/nested-pagination.test.ts +++ b/packages/objection-graphql-resolver/tests/main/nested-pagination.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { expect, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -67,43 +68,42 @@ class PostModel extends Model { section?: SectionModel } -const schema = gql` - type User { - id: Int! - name: String! - posts(cursor: String, take: Int): PostPage! - posts_page(cursor: String, take: Int): PostPage! - posts_by_one(cursor: String, take: Int): PostPage! - all_posts: [Post!]! - all_posts_verbose: [Post!]! - } +const schema = gql`type User { + id: Int! + name: String! + posts(cursor: String, take: Int): PostPage! + posts_page(cursor: String, take: Int): PostPage! + posts_by_one(cursor: String, take: Int): PostPage! + all_posts: [Post!]! + all_posts_verbose: [Post!]! +} - type Section { - id: Int! - name: String! - posts(cursor: String, take: Int): PostPage! - } +type Section { + id: Int! + name: String! + posts(cursor: String, take: Int): PostPage! +} - type SectionPage { - nodes: [Section!]! - cursor: ID - } +type SectionPage { + nodes: [Section!]! + cursor: ID +} - type Post { - id: Int! - text: String! - author: User! - section: Section! - } +type Post { + id: Int! + text: String! + author: User! + section: Section! +} - type PostPage { - nodes: [Post!]! - cursor: ID - } +type PostPage { + nodes: [Post!]! + cursor: ID +} - type Query { - user(id: Int!): User - } +type Query { + user(id: Int!): User +} ` const graph = r.graph({ @@ -186,23 +186,22 @@ test("nested pagination", async () => { ) expect( - await client.request(gql` - { - user(id: 1) { + await client.request(gql`{ + user(id: 1) { + name + posts { + nodes { + id + text + section { name - posts { - nodes { - id - text - section { - name - } - } - cursor - } } } - `), + cursor + } + } +} +`), ).toMatchInlineSnapshot(` { "user": { @@ -231,39 +230,38 @@ test("nested pagination", async () => { `) expect( - await client.request(gql` - { - user(id: 1) { - id + await client.request(gql`{ + user(id: 1) { + id + name + posts { + nodes { + id + text + author { + name + } + section { name posts { nodes { - id text author { name } section { name - posts { - nodes { - text - author { - name - } - section { - name - } - } - cursor - } } } cursor } } } - `), + cursor + } + } +} +`), ).toMatchInlineSnapshot(` { "user": { @@ -345,30 +343,29 @@ test("nested pagination", async () => { `) expect( - await client.request(gql` - { - user(id: 2) { + await client.request(gql`{ + user(id: 2) { + name + posts { + nodes { + text + author { name posts { nodes { text author { name - posts { - nodes { - text - author { - name - } - } - } } } - cursor } } } - `), + cursor + } + } +} +`), ).toMatchInlineSnapshot(` { "user": { diff --git a/packages/objection-graphql-resolver/tests/main/query.test.ts b/packages/objection-graphql-resolver/tests/main/query.test.ts index 23d629f..7ee13e2 100644 --- a/packages/objection-graphql-resolver/tests/main/query.test.ts +++ b/packages/objection-graphql-resolver/tests/main/query.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -12,16 +13,15 @@ class UserModel extends Model { name?: string } -const schema = gql` - type User { - id: Int! - name: String! - } +const schema = gql`type User { + id: Int! + name: String! +} - type Query { - user(id: Int!): User - users: [User!]! - } +type Query { + user(id: Int!): User + users: [User!]! +} ` const graph = r.graph({ @@ -41,7 +41,7 @@ const resolvers: Resolvers = { const { client, knex } = await setup({ typeDefs: schema, resolvers }) -await knex.schema.createTable("user", function (table) { +await knex.schema.createTable("user", (table) => { table.increments("id").notNullable().primary() table.string("name").notNullable() }) @@ -54,14 +54,13 @@ test("access fields", async () => { ]) assert.deepEqual( - await client.request(gql` - { - user(id: 1) { - id - name - } - } - `), + await client.request(gql`{ + user(id: 1) { + id + name + } +} +`), { user: { id: 1, name: "Alice" }, }, @@ -69,13 +68,12 @@ test("access fields", async () => { ) assert.deepEqual( - await client.request(gql` - { - user(id: 2) { - name - } - } - `), + await client.request(gql`{ + user(id: 2) { + name + } +} +`), { user: { name: "Bob" }, }, @@ -83,26 +81,24 @@ test("access fields", async () => { ) assert.deepEqual( - await client.request(gql` - { - user(id: 9562876) { - id - name - } - } - `), + await client.request(gql`{ + user(id: 9562876) { + id + name + } +} +`), { user: null }, "fetch missing object", ) assert.deepEqual( - await client.request(gql` - { - users { - name - } - } - `), + await client.request(gql`{ + users { + name + } +} +`), { users: [{ name: "Alice" }, { name: "Bob" }, { name: "Charlie" }], }, diff --git a/packages/objection-graphql-resolver/tests/main/raw-sql.test.ts b/packages/objection-graphql-resolver/tests/main/raw-sql.test.ts index 29781f3..b51f0eb 100644 --- a/packages/objection-graphql-resolver/tests/main/raw-sql.test.ts +++ b/packages/objection-graphql-resolver/tests/main/raw-sql.test.ts @@ -3,7 +3,8 @@ import { Model, raw } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -12,16 +13,15 @@ class UserModel extends Model { name?: string } -const schema = gql` - type User { - id: Int! - name: String! - upper_name: String! - } +const schema = gql`type User { + id: Int! + name: String! + upper_name: String! +} - type Query { - user(id: Int!): User - } +type Query { + user(id: Int!): User +} ` const graph = r.graph({ @@ -29,7 +29,7 @@ const graph = r.graph({ fields: { id: true, name: true, - upper_name: (query) => + upper_name: query => query.select(raw(`upper(user.name) as upper_name`)), }, }), @@ -45,7 +45,7 @@ const resolvers: Resolvers = { const { client, knex } = await setup({ typeDefs: schema, resolvers }) -await knex.schema.createTable("user", function (table) { +await knex.schema.createTable("user", (table) => { table.increments("id").notNullable().primary() table.string("name").notNullable() }) @@ -54,13 +54,12 @@ test("raw sql", async () => { await UserModel.query().insert({ name: "Alice" }) assert.deepEqual( - await client.request(gql` - { - user(id: 1) { - upper_name - } - } - `), + await client.request(gql`{ + user(id: 1) { + upper_name + } +} +`), { user: { upper_name: "ALICE" }, }, diff --git a/packages/objection-graphql-resolver/tests/main/readme-sample.test.ts b/packages/objection-graphql-resolver/tests/main/readme-sample.test.ts index 52cfaeb..a3cd1f7 100644 --- a/packages/objection-graphql-resolver/tests/main/readme-sample.test.ts +++ b/packages/objection-graphql-resolver/tests/main/readme-sample.test.ts @@ -5,7 +5,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class PostModel extends Model { static tableName = "post" @@ -14,19 +15,18 @@ class PostModel extends Model { text?: string } -const typeDefs = gql` - type Post { - id: Int! - text: String! - } +const typeDefs = gql`type Post { + id: Int! + text: String! +} - type Mutation { - create_post(text: String!): Post! - } +type Mutation { + create_post(text: String!): Post! +} - type Query { - posts: [Post!]! - } +type Query { + posts: [Post!]! +} ` const graph = r.graph({ @@ -56,24 +56,22 @@ await knex.schema.createTable("post", (post) => { test("readme demo sample", async () => { await client.request( - gql` - mutation create_post($text: String!) { - new_post: create_post(text: $text) { - id - } - } - `, + gql`mutation create_post($text: String!) { + new_post: create_post(text: $text) { + id + } +} +`, { text: "Hello, world!" }, ) - const { posts } = await client.request(gql` - query { - posts { - id - text - } - } - `) + const { posts } = await client.request(gql`query { + posts { + id + text + } +} +`) assert.deepEqual(posts, [{ id: 1, text: "Hello, world!" }]) }) diff --git a/packages/objection-graphql-resolver/tests/main/relations.test.ts b/packages/objection-graphql-resolver/tests/main/relations.test.ts index c9d63c8..c684be4 100644 --- a/packages/objection-graphql-resolver/tests/main/relations.test.ts +++ b/packages/objection-graphql-resolver/tests/main/relations.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { expect, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -42,24 +43,23 @@ class PostModel extends Model { author?: UserModel } -const schema = gql` - scalar Filter +const schema = gql`scalar Filter - type User { - id: Int! - name: String! - posts: [Post!]! - } +type User { + id: Int! + name: String! + posts: [Post!]! +} - type Post { - id: Int! - text: String! - author: User! - } +type Post { + id: Int! + text: String! + author: User! +} - type Query { - posts: [Post!]! - } +type Query { + posts: [Post!]! +} ` const graph = r.graph( @@ -110,18 +110,17 @@ test("filters", async () => { ) expect( - await client.request(gql` - { - posts { - id - text - author { - id - name - } - } - } - `), + await client.request(gql`{ + posts { + id + text + author { + id + name + } + } +} +`), ).toMatchInlineSnapshot(` { "posts": [ @@ -154,22 +153,21 @@ test("filters", async () => { `) expect( - await client.request(gql` - { - posts { - id - text - author { - id - name - posts { - id - text - } - } - } + await client.request(gql`{ + posts { + id + text + author { + id + name + posts { + id + text } - `), + } + } +} +`), ).toMatchInlineSnapshot(` { "posts": [ diff --git a/packages/objection-graphql-resolver/tests/main/root-pagination.test.ts b/packages/objection-graphql-resolver/tests/main/root-pagination.test.ts index 12c9bbb..e78ba5d 100644 --- a/packages/objection-graphql-resolver/tests/main/root-pagination.test.ts +++ b/packages/objection-graphql-resolver/tests/main/root-pagination.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -12,21 +13,20 @@ class UserModel extends Model { name?: string } -const schema = gql` - type User { - id: Int! - name: String! - } +const schema = gql`type User { + id: Int! + name: String! +} - type UserPage { - nodes: [User!]! - cursor: ID - } +type UserPage { + nodes: [User!]! + cursor: ID +} - type Query { - users(cursor: ID, take: Int): UserPage! - reverse_users(cursor: ID, take: Int): UserPage! - } +type Query { + users(cursor: ID, take: Int): UserPage! + reverse_users(cursor: ID, take: Int): UserPage! +} ` const graph = r.graph({ @@ -54,7 +54,7 @@ const resolvers: Resolvers = { const { client, knex } = await setup({ typeDefs: schema, resolvers }) -await knex.schema.createTable("user", function (table) { +await knex.schema.createTable("user", (table) => { table.increments("id").notNullable().primary() table.string("name").notNullable() }) @@ -85,32 +85,30 @@ test("root pagination", async () => { test_users( "without args", - await client.request(gql` - { - users { - nodes { - name - } - cursor - } - } - `), + await client.request(gql`{ + users { + nodes { + name + } + cursor + } +} +`), [{ name: "Alice" }, { name: "Bob" }], true, ) const take_1_cursor = test_users( "take 1", - await client.request(gql` - { - users(take: 1) { - nodes { - name - } - cursor - } - } - `), + await client.request(gql`{ + users(take: 1) { + nodes { + name + } + cursor + } +} +`), [{ name: "Alice" }], true, ) @@ -118,17 +116,16 @@ test("root pagination", async () => { const take_2_more_after_1_cursor = test_users( "take 2 more after 1", await client.request( - gql` - query more_sections($cursor: ID) { - users(cursor: $cursor, take: 2) { - nodes { - id - name - } - cursor - } - } - `, + gql`query more_sections($cursor: ID) { + users(cursor: $cursor, take: 2) { + nodes { + id + name + } + cursor + } +} +`, { cursor: take_1_cursor, }, @@ -143,17 +140,16 @@ test("root pagination", async () => { test_users( "take the rest", await client.request( - gql` - query more_sections($cursor: ID) { - users(cursor: $cursor) { - nodes { - id - name - } - cursor - } - } - `, + gql`query more_sections($cursor: ID) { + users(cursor: $cursor) { + nodes { + id + name + } + cursor + } +} +`, { cursor: take_2_more_after_1_cursor, }, @@ -164,17 +160,16 @@ test("root pagination", async () => { test_users( "take 4", - await client.request(gql` - { - users(take: 4) { - nodes { - id - name - } - cursor - } - } - `), + await client.request(gql`{ + users(take: 4) { + nodes { + id + name + } + cursor + } +} +`), [ { name: "Alice", id: 1 }, { name: "Bob", id: 3 }, @@ -186,16 +181,15 @@ test("root pagination", async () => { test_users( "take 100", - await client.request(gql` - { - users(take: 100) { - nodes { - name - } - cursor - } - } - `), + await client.request(gql`{ + users(take: 100) { + nodes { + name + } + cursor + } +} +`), [ { name: "Alice" }, { name: "Bob" }, diff --git a/packages/objection-graphql-resolver/tests/main/root-subfield.test.ts b/packages/objection-graphql-resolver/tests/main/root-subfield.test.ts index 75d3d17..520f980 100644 --- a/packages/objection-graphql-resolver/tests/main/root-subfield.test.ts +++ b/packages/objection-graphql-resolver/tests/main/root-subfield.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -12,24 +13,23 @@ class UserModel extends Model { name?: string } -const schema = gql` - type User { - id: Int! - name: String! - } +const schema = gql`type User { + id: Int! + name: String! +} - type Query { - user(id: Int!): User - } +type Query { + user(id: Int!): User +} - type Mutation { - login(id: Int!): LoginResult! - } +type Mutation { + login(id: Int!): LoginResult! +} - type LoginResult { - token: String! - user: User! - } +type LoginResult { + token: String! + user: User! +} ` const graph = r.graph({ @@ -53,7 +53,7 @@ const resolvers: Resolvers = { const { client, knex } = await setup({ typeDefs: schema, resolvers }) -await knex.schema.createTable("user", function (table) { +await knex.schema.createTable("user", (table) => { table.increments("id").notNullable().primary() table.string("name").notNullable() }) @@ -62,28 +62,26 @@ test("root query sub-field", async () => { await UserModel.query().insert({ name: "Alice" }) assert.deepEqual( - await client.request(gql` - mutation { - login(id: 1) { - token - user { - name - } - } - } - `), + await client.request(gql`mutation { + login(id: 1) { + token + user { + name + } + } +} +`), { login: { token: "xyzzy", user: { name: "Alice" } } }, ) // Regression: should not crash when diving to non-requested subfield assert.deepEqual( - await client.request(gql` - mutation { - login(id: 1) { - token - } - } - `), + await client.request(gql`mutation { + login(id: 1) { + token + } +} +`), { login: { token: "xyzzy" } }, ) }) diff --git a/packages/objection-graphql-resolver/tests/main/virtual-fields.test.ts b/packages/objection-graphql-resolver/tests/main/virtual-fields.test.ts index ae12b98..825f7e0 100644 --- a/packages/objection-graphql-resolver/tests/main/virtual-fields.test.ts +++ b/packages/objection-graphql-resolver/tests/main/virtual-fields.test.ts @@ -3,7 +3,8 @@ import { Model, ref } from "objection" import * as r from "objection-graphql-resolver" import { assert, expect, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class UserModel extends Model { static tableName = "user" @@ -22,17 +23,16 @@ class UserModel extends Model { } } -const schema = gql` - type User { - id: Int! - name: String! - url: String! - upper_name: String! - } +const schema = gql`type User { + id: Int! + name: String! + url: String! + upper_name: String! +} - type Query { - user(id: Int!): User - } +type Query { + user(id: Int!): User +} ` const graph = r.graph({ @@ -41,7 +41,7 @@ const graph = r.graph({ id: true, name: true, // Guarded - url: (query) => query.select(ref("user.id")), + url: query => query.select(ref("user.id")), // Naive upper_name: true, }, @@ -58,7 +58,7 @@ const resolvers: Resolvers = { const { client, knex } = await setup({ typeDefs: schema, resolvers }) -await knex.schema.createTable("user", function (table) { +await knex.schema.createTable("user", (table) => { table.increments("id").notNullable().primary() table.string("name").notNullable() }) @@ -67,13 +67,12 @@ test("virtual fields", async () => { await UserModel.query().insert({ name: "Alice" }) assert.deepEqual( - await client.request(gql` - { - user(id: 1) { - url - } - } - `), + await client.request(gql`{ + user(id: 1) { + url + } +} +`), { user: { url: "/user/1" }, }, @@ -81,25 +80,23 @@ test("virtual fields", async () => { ) await expect( - client.request(gql` - { - user(id: 1) { - upper_name - } - } - `), + client.request(gql`{ + user(id: 1) { + upper_name + } +} +`), "break on fetching naive virtual field", ).rejects.toThrow() assert.deepEqual( - await client.request(gql` - { - user(id: 1) { - name - upper_name - } - } - `), + await client.request(gql`{ + user(id: 1) { + name + upper_name + } +} +`), { user: { name: "Alice", upper_name: "ALICE" }, }, diff --git a/packages/objection-graphql-resolver/tests/regressions/issue-1-no-relation-mappings.test.ts b/packages/objection-graphql-resolver/tests/regressions/issue-1-no-relation-mappings.test.ts index 8446094..3d0f692 100644 --- a/packages/objection-graphql-resolver/tests/regressions/issue-1-no-relation-mappings.test.ts +++ b/packages/objection-graphql-resolver/tests/regressions/issue-1-no-relation-mappings.test.ts @@ -5,7 +5,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class CModel extends Model { static tableName = "c" @@ -14,14 +15,13 @@ class CModel extends Model { // no relationMappings defined on purpose } -const schema = gql` - type C { - id: ID! - } +const schema = gql`type C { + id: ID! +} - type Query { - all_c: [C!]! - } +type Query { + all_c: [C!]! +} ` const graph = r.graph({ @@ -45,13 +45,12 @@ test("allow model without relationMappings", async () => { await CModel.query().insert({ id: "foo" }) assert.deepEqual( - await client.request(gql` - { - all_c { - id - } - } - `), + await client.request(gql`{ + all_c { + id + } +} +`), { all_c: [{ id: "foo" }], }, diff --git a/packages/objection-graphql-resolver/tests/regressions/issue-33-relation-alias.test.ts b/packages/objection-graphql-resolver/tests/regressions/issue-33-relation-alias.test.ts index 0d03be6..083b760 100644 --- a/packages/objection-graphql-resolver/tests/regressions/issue-33-relation-alias.test.ts +++ b/packages/objection-graphql-resolver/tests/regressions/issue-33-relation-alias.test.ts @@ -3,7 +3,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { expect, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class PostModel extends Model { static tableName = "post" @@ -31,23 +32,22 @@ class CommentModel extends Model { post_id?: number } -const schema = gql` - scalar Filter +const schema = gql`scalar Filter - type Post { - id: Int! - text: String! - all_comments: [Comment!]! - } +type Post { + id: Int! + text: String! + all_comments: [Comment!]! +} - type Comment { - id: Int! - text: String! - } +type Comment { + id: Int! + text: String! +} - type Query { - post(id: ID!): Post! - } +type Query { + post(id: ID!): Post! +} ` const graph = r.graph( @@ -107,18 +107,17 @@ test("filters", async () => { ) expect( - await client.request(gql` - { - post(id: 1) { - id - text - all_comments { - id - text - } - } - } - `), + await client.request(gql`{ + post(id: 1) { + id + text + all_comments { + id + text + } + } +} +`), ).toMatchInlineSnapshot(` { "post": { diff --git a/packages/objection-graphql-resolver/tests/regressions/issue-7-ambiguous-column-name.test.ts b/packages/objection-graphql-resolver/tests/regressions/issue-7-ambiguous-column-name.test.ts index c43c8a9..6826cea 100644 --- a/packages/objection-graphql-resolver/tests/regressions/issue-7-ambiguous-column-name.test.ts +++ b/packages/objection-graphql-resolver/tests/regressions/issue-7-ambiguous-column-name.test.ts @@ -5,7 +5,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class AuthorModel extends Model { static tableName = "author" @@ -57,22 +58,21 @@ class BookModel extends Model { authors?: AuthorModel[] } -const schema = gql` - type Author { - id: Int! - name: String! - books: [Book!]! - } +const schema = gql`type Author { + id: Int! + name: String! + books: [Book!]! +} - type Book { - id: Int! - title: String! - authors: [Author!]! - } +type Book { + id: Int! + title: String! + authors: [Author!]! +} - type Query { - books: [Book!]! - } +type Query { + books: [Book!]! +} ` const graph = r.graph({ @@ -119,12 +119,12 @@ test("m2m: naming clash with column in relation table", async () => { { id: 1, title: "1984", - authors: [{ "#id": "George Orwell", name: "George Orwell" }], + authors: [{ "#id": "George Orwell", "name": "George Orwell" }], }, { id: 2, title: "Tom Sawyer", - authors: [{ "#id": "Mark Twain", name: "Mark Twain" }], + authors: [{ "#id": "Mark Twain", "name": "Mark Twain" }], }, { id: 3, @@ -136,18 +136,17 @@ test("m2m: naming clash with column in relation table", async () => { ) assert.deepEqual( - await client.request(gql` - { - books { - id - title - authors { - id - name - } - } - } - `), + await client.request(gql`{ + books { + id + title + authors { + id + name + } + } +} +`), { books: [ { id: 1, title: "1984", authors: [{ id: 1, name: "George Orwell" }] }, diff --git a/packages/objection-graphql-resolver/tests/regressions/issue-9-deep-nested-filter.test.ts b/packages/objection-graphql-resolver/tests/regressions/issue-9-deep-nested-filter.test.ts index d0db800..e3f08e8 100644 --- a/packages/objection-graphql-resolver/tests/regressions/issue-9-deep-nested-filter.test.ts +++ b/packages/objection-graphql-resolver/tests/regressions/issue-9-deep-nested-filter.test.ts @@ -5,7 +5,8 @@ import { Model } from "objection" import * as r from "objection-graphql-resolver" import { assert, test } from "vitest" -import { Resolvers, setup } from "../setup" +import type { Resolvers } from "../setup" +import { setup } from "../setup" class CompanyModel extends Model { static tableName = "company" @@ -78,36 +79,35 @@ class ExpenseModel extends Model { status?: "pending" | "complete" } -const schema = gql` - type Company { - id: Int! - name: String! - offices: [Office!]! - } +const schema = gql`type Company { + id: Int! + name: String! + offices: [Office!]! +} - type Office { - id: Int! - name: String! - staffMembers: [Staff!]! - } +type Office { + id: Int! + name: String! + staffMembers: [Staff!]! +} - type Staff { - id: Int! - name: String! - expenses(filter: Filter): [Expense!]! - } +type Staff { + id: Int! + name: String! + expenses(filter: Filter): [Expense!]! +} - type Expense { - id: Int! - amount: Float! - status: String! - } +type Expense { + id: Int! + amount: Float! + status: String! +} - type Query { - companies: [Company!]! - } +type Query { + companies: [Company!]! +} - scalar Filter +scalar Filter ` const graph = r.graph({ @@ -190,21 +190,20 @@ test("filter expenses", async () => { ]) assert.deepEqual( - await client.request(gql` - query { - companies { - offices { - staffMembers { - name - expenses(filter: { status: "pending" }) { - id - status - } - } - } + await client.request(gql`query { + companies { + offices { + staffMembers { + name + expenses(filter: { status: "pending" }) { + id + status } } - `), + } + } +} +`), { companies: [ { diff --git a/packages/objection-graphql-resolver/tests/setup/apollo.ts b/packages/objection-graphql-resolver/tests/setup/apollo.ts index 39efbaa..c02099d 100644 --- a/packages/objection-graphql-resolver/tests/setup/apollo.ts +++ b/packages/objection-graphql-resolver/tests/setup/apollo.ts @@ -1,4 +1,5 @@ -import { ApolloServer, ApolloServerOptions } from "@apollo/server" +import type { ApolloServerOptions } from "@apollo/server" +import { ApolloServer } from "@apollo/server" import { startStandaloneServer } from "@apollo/server/standalone" import { afterAll } from "vitest" diff --git a/packages/objection-graphql-resolver/tests/setup/client.ts b/packages/objection-graphql-resolver/tests/setup/client.ts index 5f79a9a..a293a8e 100644 --- a/packages/objection-graphql-resolver/tests/setup/client.ts +++ b/packages/objection-graphql-resolver/tests/setup/client.ts @@ -1,6 +1,7 @@ import { GraphQLClient } from "graphql-request" -import { create_server, ServerConfig } from "./apollo" +import type { ServerConfig } from "./apollo" +import { create_server } from "./apollo" export async function create_client(config: ServerConfig) { const url = await create_server(config) diff --git a/packages/objection-graphql-resolver/tests/setup/setup.ts b/packages/objection-graphql-resolver/tests/setup/setup.ts index 345ed4c..daa3694 100644 --- a/packages/objection-graphql-resolver/tests/setup/setup.ts +++ b/packages/objection-graphql-resolver/tests/setup/setup.ts @@ -1,4 +1,4 @@ -import { ServerConfig } from "./apollo" +import type { ServerConfig } from "./apollo" import { create_client } from "./client" import { setup_db } from "./db" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 01ccff2..6174654 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,36 +8,30 @@ importers: .: devDependencies: + '@antfu/eslint-config': + specifier: ^2.21.1 + version: 2.21.1(@vue/compiler-sfc@3.4.29)(eslint-plugin-format@0.1.2)(eslint@9.5.0)(typescript@5.3.3) '@changesets/cli': - specifier: ~2.27.1 + specifier: ^2.27.1 version: 2.27.1 + '@graphql-eslint/eslint-plugin': + specifier: ^3.20.1 + version: 3.20.1(@babel/core@7.24.7)(graphql@16.6.0) eslint: - specifier: ~8.56.0 - version: 8.56.0 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) - eslint-plugin-prettier: - specifier: ~5.1.3 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5) - eslint-plugin-simple-import-sort: - specifier: ~12.0.0 - version: 12.0.0(eslint@8.56.0) + specifier: ^9.5.0 + version: 9.5.0 + eslint-plugin-format: + specifier: ^0.1.2 + version: 0.1.2(eslint@9.5.0) husky: - specifier: ~9.0.11 + specifier: ^9.0.11 version: 9.0.11 lint-staged: - specifier: ~15.2.2 + specifier: ^15.2.2 version: 15.2.2 - prettier: - specifier: ^3.2.5 - version: 3.2.5 typescript: - specifier: ~5.3.3 + specifier: ^5.3.3 version: 5.3.3 - typescript-eslint: - specifier: ~7.0.2 - version: 7.0.2(eslint@8.56.0)(typescript@5.3.3) packages/graphql-orm: dependencies: @@ -149,9 +143,113 @@ importers: packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@antfu/eslint-config@2.21.1(@vue/compiler-sfc@3.4.29)(eslint-plugin-format@0.1.2)(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-CG7U7nihU73zufrxe5Rr4pxsHrW60GXl9yzRpRY+ImGQ2CVhd0eb3fqJYdNwDJBgKgqHGWX4p1ovYvno/jfWHA==} + hasBin: true + peerDependencies: + '@eslint-react/eslint-plugin': ^1.5.8 + '@prettier/plugin-xml': ^3.4.1 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^1.0.2 + eslint: '>=8.40.0' + eslint-plugin-astro: ^1.2.0 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react-hooks: ^4.6.0 + eslint-plugin-react-refresh: ^0.4.4 + eslint-plugin-solid: ^0.13.2 + eslint-plugin-svelte: '>=2.35.1' + prettier-plugin-astro: ^0.13.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: ^0.33.1 + peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true + '@prettier/plugin-xml': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true + dependencies: + '@antfu/install-pkg': 0.3.3 + '@clack/prompts': 0.7.0 + '@stylistic/eslint-plugin': 2.2.2(eslint@9.5.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1)(eslint@9.5.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.3.3) + eslint: 9.5.0 + eslint-config-flat-gitignore: 0.1.5 + eslint-flat-config-utils: 0.2.5 + eslint-merge-processors: 0.1.0(eslint@9.5.0) + eslint-plugin-antfu: 2.3.3(eslint@9.5.0) + eslint-plugin-command: 0.2.3(eslint@9.5.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.5.0) + eslint-plugin-format: 0.1.2(eslint@9.5.0) + eslint-plugin-import-x: 0.5.1(eslint@9.5.0)(typescript@5.3.3) + eslint-plugin-jsdoc: 48.2.12(eslint@9.5.0) + eslint-plugin-jsonc: 2.16.0(eslint@9.5.0) + eslint-plugin-markdown: 5.0.0(eslint@9.5.0) + eslint-plugin-n: 17.9.0(eslint@9.5.0) + eslint-plugin-no-only-tests: 3.1.0 + eslint-plugin-perfectionist: 2.11.0(eslint@9.5.0)(typescript@5.3.3)(vue-eslint-parser@9.4.3) + eslint-plugin-regexp: 2.6.0(eslint@9.5.0) + eslint-plugin-toml: 0.11.0(eslint@9.5.0) + eslint-plugin-unicorn: 53.0.0(eslint@9.5.0) + eslint-plugin-unused-imports: 3.2.0(@typescript-eslint/eslint-plugin@7.13.1)(eslint@9.5.0) + eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@7.13.1)(eslint@9.5.0)(typescript@5.3.3) + eslint-plugin-vue: 9.26.0(eslint@9.5.0) + eslint-plugin-yml: 1.14.0(eslint@9.5.0) + eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.4.29)(eslint@9.5.0) + globals: 15.6.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 0.5.0 + parse-gitignore: 2.0.0 + picocolors: 1.0.1 + toml-eslint-parser: 0.9.3 + vue-eslint-parser: 9.4.3(eslint@9.5.0) + yaml-eslint-parser: 1.2.3 + yargs: 17.7.2 + transitivePeerDependencies: + - '@vue/compiler-sfc' + - supports-color + - svelte + - typescript + - vitest + dev: true + + /@antfu/install-pkg@0.3.3: + resolution: {integrity: sha512-nHHsk3NXQ6xkCfiRRC8Nfrg8pU5kkr3P3Y9s9dKqiuRmBD0Yap7fymNDjGFKeWhZQHqqbCS5CfeMy9wtExM24w==} + dependencies: + '@jsdevtools/ez-spawn': 3.0.4 + dev: true + + /@antfu/utils@0.7.8: + resolution: {integrity: sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==} dev: true /@apollo/cache-control-types@1.0.2(graphql@16.6.0): @@ -334,6 +432,15 @@ packages: engines: {node: '>=14'} dev: true + /@ardatan/sync-fetch@0.0.1: + resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} + engines: {node: '>=14'} + dependencies: + node-fetch: 2.6.11 + transitivePeerDependencies: + - encoding + dev: true + /@babel/code-frame@7.21.4: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} @@ -341,18 +448,191 @@ packages: '@babel/highlight': 7.18.6 dev: true - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + dev: true + + /@babel/compat-data@7.24.7: + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.24.7: + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.24.7: + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.24.7: + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 + browserslist: 4.23.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + dev: true + + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 + dev: true + + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + dev: true + + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.24.7: + resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.7 + dev: true + + /@babel/helper-string-parser@7.24.7: + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.24.7: + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.24.7: + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 dev: true /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 + picocolors: 1.0.1 + dev: true + + /@babel/parser@7.24.7: + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.7 + dev: true + + /@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.7 dev: true /@babel/runtime@7.22.3: @@ -362,6 +642,42 @@ packages: regenerator-runtime: 0.13.11 dev: true + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + dev: true + + /@babel/traverse@7.24.7: + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.24.7: + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + dev: true + /@changesets/apply-release-plan@7.0.0: resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} dependencies: @@ -377,7 +693,7 @@ packages: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.2 dev: true /@changesets/assemble-release-plan@6.0.0: @@ -388,7 +704,7 @@ packages: '@changesets/get-dependents-graph': 2.0.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.0 + semver: 7.6.2 dev: true /@changesets/changelog-git@0.2.0: @@ -429,7 +745,7 @@ packages: p-limit: 2.3.0 preferred-pm: 3.0.3 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.2 spawndamnit: 2.0.0 term-size: 2.2.1 tty-table: 4.2.1 @@ -460,7 +776,7 @@ packages: '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.6.0 + semver: 7.6.2 dev: true /@changesets/get-release-plan@4.0.0: @@ -545,6 +861,47 @@ packages: prettier: 2.8.8 dev: true + /@clack/core@0.3.4: + resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} + dependencies: + picocolors: 1.0.1 + sisteransi: 1.0.5 + dev: true + + /@clack/prompts@0.7.0: + resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} + dependencies: + '@clack/core': 0.3.4 + picocolors: 1.0.1 + sisteransi: 1.0.5 + dev: true + bundledDependencies: + - is-unicode-supported + + /@dprint/formatter@0.3.0: + resolution: {integrity: sha512-N9fxCxbaBOrDkteSOzaCqwWjso5iAe+WJPsHC021JfHNj2ThInPNEF13ORDKta3llq5D1TlclODCvOvipH7bWQ==} + dev: true + + /@dprint/markdown@0.17.1: + resolution: {integrity: sha512-Mk9C9tHHSScB3JOUd2PEP3keWnJZ8Kqcd99qaVhknzhxgZF/gGTx0CMyd+lpsIV+Moe+OtbRnqAjp+hKVtT1zQ==} + dev: true + + /@dprint/toml@0.6.2: + resolution: {integrity: sha512-Mk5unEANsL/L+WHYU3NpDXt1ARU5bNU5k5OZELxaJodDycKG6RoRnSlZXpW6+7UN2PSnETAFVUdKrh937ZwtHA==} + dev: true + + /@es-joy/jsdoccomment@0.43.1: + resolution: {integrity: sha512-I238eDtOolvCuvtxrnqtlBaw0BwdQuYqK7eA6XIonicMdOOOb75mqdIzkGDUbS04+1Di007rgm9snFRNeVrOog==} + engines: {node: '>=16'} + dependencies: + '@types/eslint': 8.56.10 + '@types/estree': 1.0.5 + '@typescript-eslint/types': 7.13.1 + comment-parser: 1.4.1 + esquery: 1.5.0 + jsdoc-type-pratt-parser: 4.0.0 + dev: true + /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -752,29 +1109,40 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.5.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.56.0 + eslint: 9.5.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + /@eslint-community/regexpp@4.10.1: + resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/config-array@0.16.0: + resolution: {integrity: sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/eslintrc@3.1.0: + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.6.1 - globals: 13.20.0 + espree: 10.1.0 + globals: 14.0.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -784,9 +1152,14 @@ packages: - supports-color dev: true - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/js@9.5.0: + resolution: {integrity: sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@eslint/object-schema@2.1.4: + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true /@gar/promisify@1.1.3: @@ -795,6 +1168,207 @@ packages: dev: true optional: true + /@graphql-eslint/eslint-plugin@3.20.1(@babel/core@7.24.7)(graphql@16.6.0): + resolution: {integrity: sha512-RbwVlz1gcYG62sECR1u0XqMh8w5e5XMCCZoMvPQ3nJzEBCTfXLGX727GBoRmSvY1x4gJmqNZ1lsOX7lZY14RIw==} + engines: {node: '>=12'} + 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/code-frame': 7.21.4 + '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.24.7)(graphql@16.6.0) + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.24.7)(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + chalk: 4.1.2 + debug: 4.3.4 + fast-glob: 3.2.12 + graphql: 16.6.0 + graphql-config: 4.5.0(graphql@16.6.0) + graphql-depth-limit: 1.1.0(graphql@16.6.0) + lodash.lowercase: 4.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - encoding + - supports-color + - utf-8-validate + dev: true + + /@graphql-tools/batch-execute@8.5.22(graphql@16.6.0): + resolution: {integrity: sha512-hcV1JaY6NJQFQEwCKrYhpfLK8frSXDbtNMoTur98u10Cmecy1zrqNKSqhEyGetpgHxaJRqszGzKeI3RuroDN6A==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + dataloader: 2.2.2 + graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/code-file-loader@7.3.23(@babel/core@7.24.7)(graphql@16.6.0): + resolution: {integrity: sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.24.7)(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + globby: 11.1.0 + graphql: 16.6.0 + tslib: 2.6.2 + unixify: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/delegate@9.0.35(graphql@16.6.0): + resolution: {integrity: sha512-jwPu8NJbzRRMqi4Vp/5QX1vIUeUPpWmlQpOkXQD2r1X45YsVceyUUBnktCrlJlDB4jPRVy7JQGwmYo3KFiOBMA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/batch-execute': 8.5.22(graphql@16.6.0) + '@graphql-tools/executor': 0.0.20(graphql@16.6.0) + '@graphql-tools/schema': 9.0.19(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + dataloader: 2.2.2 + graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/executor-graphql-ws@0.0.14(graphql@16.6.0): + resolution: {integrity: sha512-P2nlkAsPZKLIXImFhj0YTtny5NQVGSsKnhi7PzXiaHSXc6KkzqbWZHKvikD4PObanqg+7IO58rKFpGXP7eeO+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@repeaterjs/repeater': 3.0.4 + '@types/ws': 8.5.10 + graphql: 16.6.0 + graphql-ws: 5.12.1(graphql@16.6.0) + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.6.2 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@graphql-tools/executor-http@0.1.10(graphql@16.6.0): + resolution: {integrity: sha512-hnAfbKv0/lb9s31LhWzawQ5hghBfHS+gYWtqxME6Rl0Aufq9GltiiLBcl7OVVOnkLF0KhwgbYP1mB5VKmgTGpg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/fetch': 0.8.8 + dset: 3.1.3 + extract-files: 11.0.0 + graphql: 16.6.0 + meros: 1.3.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@graphql-tools/executor-legacy-ws@0.0.11(graphql@16.6.0): + resolution: {integrity: sha512-4ai+NnxlNfvIQ4c70hWFvOZlSUN8lt7yc+ZsrwtNFbFPH/EroIzFMapAxM9zwyv9bH38AdO3TQxZ5zNxgBdvUw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@types/ws': 8.5.10 + graphql: 16.6.0 + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.6.2 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@graphql-tools/executor@0.0.20(graphql@16.6.0): + resolution: {integrity: sha512-GdvNc4vszmfeGvUqlcaH1FjBoguvMYzxAfT6tDd4/LgwymepHhinqLNA5otqwVLW+JETcDaK7xGENzFomuE6TA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) + '@repeaterjs/repeater': 3.0.6 + graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/graphql-file-loader@7.5.17(graphql@16.6.0): + resolution: {integrity: sha512-hVwwxPf41zOYgm4gdaZILCYnKB9Zap7Ys9OhY1hbwuAuC4MMNY9GpUjoTU3CQc3zUiPoYStyRtUGkHSJZ3HxBw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/import': 6.7.18(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + globby: 11.1.0 + graphql: 16.6.0 + tslib: 2.6.2 + unixify: 1.0.0 + dev: true + + /@graphql-tools/graphql-tag-pluck@7.5.2(@babel/core@7.24.7)(graphql@16.6.0): + resolution: {integrity: sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@babel/parser': 7.24.7 + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.7) + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/import@6.7.18(graphql@16.6.0): + resolution: {integrity: sha512-XQDdyZTp+FYmT7as3xRWH/x8dx0QZA2WZqfMF5EWb36a0PiH7WwlRQYIdyYXj8YCLpiWkeBXgBRHmMnwEYR8iQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + resolve-from: 5.0.0 + tslib: 2.6.2 + dev: true + + /@graphql-tools/json-file-loader@7.4.18(graphql@16.6.0): + resolution: {integrity: sha512-AJ1b6Y1wiVgkwsxT5dELXhIVUPs/u3VZ8/0/oOtpcoyO/vAeM5rOvvWegzicOOnQw8G45fgBRMkkRfeuwVt6+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + globby: 11.1.0 + graphql: 16.6.0 + tslib: 2.6.2 + unixify: 1.0.0 + dev: true + + /@graphql-tools/load@7.8.14(graphql@16.6.0): + resolution: {integrity: sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/schema': 9.0.19(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + graphql: 16.6.0 + p-limit: 3.1.0 + tslib: 2.6.2 + dev: true + /@graphql-tools/merge@8.4.2(graphql@16.6.0): resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} peerDependencies: @@ -817,6 +1391,32 @@ packages: value-or-promise: 1.0.12 dev: true + /@graphql-tools/url-loader@7.17.18(graphql@16.6.0): + resolution: {integrity: sha512-ear0CiyTj04jCVAxi7TvgbnGDIN2HgqzXzwsfcqiVg9cvjT40NcMlZ2P1lZDgqMkZ9oyLTV8Bw6j+SyG6A+xPw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/delegate': 9.0.35(graphql@16.6.0) + '@graphql-tools/executor-graphql-ws': 0.0.14(graphql@16.6.0) + '@graphql-tools/executor-http': 0.1.10(graphql@16.6.0) + '@graphql-tools/executor-legacy-ws': 0.0.11(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-tools/wrap': 9.4.2(graphql@16.6.0) + '@types/ws': 8.5.10 + '@whatwg-node/fetch': 0.8.8 + graphql: 16.6.0 + isomorphic-ws: 5.0.0(ws@8.17.1) + tslib: 2.6.2 + value-or-promise: 1.0.12 + ws: 8.17.1 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: true + /@graphql-tools/utils@9.2.1(graphql@16.6.0): resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} peerDependencies: @@ -827,23 +1427,25 @@ packages: tslib: 2.6.2 dev: true - /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + /@graphql-tools/wrap@9.4.2(graphql@16.6.0): + resolution: {integrity: sha512-DFcd9r51lmcEKn0JW43CWkkI2D6T9XI1juW/Yo86i04v43O9w2/k4/nx2XTJv4Yv+iXwUw7Ok81PGltwGJSDSA==} 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 || ^17.0.0 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: + '@graphql-tools/delegate': 9.0.35(graphql@16.6.0) + '@graphql-tools/schema': 9.0.19(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 + tslib: 2.6.2 + value-or-promise: 1.0.12 dev: true - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} + /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + 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 || ^17.0.0 dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + graphql: 16.6.0 dev: true /@humanwhocodes/module-importer@1.0.1: @@ -851,8 +1453,9 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@humanwhocodes/retry@0.3.0: + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} dev: true /@jest/schemas@29.6.3: @@ -875,6 +1478,15 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} @@ -885,6 +1497,11 @@ packages: engines: {node: '>=6.0.0'} dev: true + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true @@ -900,6 +1517,23 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@jsdevtools/ez-spawn@3.0.4: + resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} + engines: {node: '>=10'} + dependencies: + call-me-maybe: 1.0.2 + cross-spawn: 7.0.3 + string-argv: 0.3.2 + type-detect: 4.0.8 + dev: true + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: @@ -979,6 +1613,32 @@ packages: dev: true optional: true + /@peculiar/asn1-schema@2.3.8: + resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} + dependencies: + asn1js: 3.0.5 + pvtsutils: 1.3.5 + tslib: 2.6.2 + dev: true + + /@peculiar/json-schema@1.1.12: + resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} + engines: {node: '>=8.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@peculiar/webcrypto@1.5.0: + resolution: {integrity: sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==} + engines: {node: '>=10.12.0'} + dependencies: + '@peculiar/asn1-schema': 2.3.8 + '@peculiar/json-schema': 1.1.12 + pvtsutils: 1.3.5 + tslib: 2.6.2 + webcrypto-core: 1.8.0 + dev: true + /@pkgr/core@0.1.1: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -1027,6 +1687,14 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: true + /@repeaterjs/repeater@3.0.4: + resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} + dev: true + + /@repeaterjs/repeater@3.0.6: + resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} + dev: true + /@rollup/rollup-android-arm-eabi@4.12.0: resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} cpu: [arm] @@ -1135,6 +1803,77 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true + /@stylistic/eslint-plugin-js@2.2.2(eslint@9.5.0): + resolution: {integrity: sha512-Vj2Q1YHVvJw+ThtOvmk5Yx7wZanVrIBRUTT89horLDb4xdP9GA1um9XOYQC6j67VeUC2gjZQnz5/RVJMzaOhtw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@types/eslint': 8.56.10 + acorn: 8.11.3 + eslint: 9.5.0 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 + dev: true + + /@stylistic/eslint-plugin-jsx@2.2.2(eslint@9.5.0): + resolution: {integrity: sha512-xfIMdLivoMV1wV+5Tl0PtkLN/oUwjIt7LuIu48vhrZfJ2jCXwjlTGPGSoM7dnLZYD65XjtrHHIFAvPuvvvjlaw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 2.2.2(eslint@9.5.0) + '@types/eslint': 8.56.10 + eslint: 9.5.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + dev: true + + /@stylistic/eslint-plugin-plus@2.2.2(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-oeqPs01yAH4ad4bSchGtx8Jf5XTbxRx++A0joNYiOoq3EBTAUHE/ZB7dVv3BhNuCKiwojOQduLkUCXI5UMHoSw==} + peerDependencies: + eslint: '*' + dependencies: + '@types/eslint': 8.56.10 + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.3.3) + eslint: 9.5.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@stylistic/eslint-plugin-ts@2.2.2(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-n6cYMSWTDDcrQLLxEKIrL/ihQ1lyyq6+gGp0g5VdstBElmImSRsQkCq+g3jRoDJIUo7tGO9lwQtGnuJ7oGB4kg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 2.2.2(eslint@9.5.0) + '@types/eslint': 8.56.10 + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.3.3) + eslint: 9.5.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@stylistic/eslint-plugin@2.2.2(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-GNRtyhhPsc9I9FNTaU2L0V/4LdSPAciQNEdYo6NBRdAz7sdiaxgEJKLNSXeXSQAuO9JBWWjZBs/57+WvrU0Iug==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + '@stylistic/eslint-plugin-js': 2.2.2(eslint@9.5.0) + '@stylistic/eslint-plugin-jsx': 2.2.2(eslint@9.5.0) + '@stylistic/eslint-plugin-plus': 2.2.2(eslint@9.5.0)(typescript@5.3.3) + '@stylistic/eslint-plugin-ts': 2.2.2(eslint@9.5.0)(typescript@5.3.3) + '@types/eslint': 8.56.10 + eslint: 9.5.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} @@ -1155,6 +1894,13 @@ packages: '@types/node': 20.2.5 dev: true + /@types/eslint@8.56.10: + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -1185,6 +1931,12 @@ packages: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: true + /@types/mdast@3.0.15: + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + dependencies: + '@types/unist': 2.0.10 + dev: true + /@types/mime@1.3.2: resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} dev: true @@ -1250,9 +2002,19 @@ packages: '@types/node': 20.2.5 dev: true - /@typescript-eslint/eslint-plugin@7.0.2(@typescript-eslint/parser@7.0.2)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-/XtVZJtbaphtdrWjr+CJclaCVGPtOdBpFEnvtNf/jRV0IiEemRrL0qABex/nEt8isYcnFacm3nPHYQwL+Wb7qg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + dev: true + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.2.5 + dev: true + + /@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1)(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 eslint: ^8.56.0 @@ -1261,27 +2023,25 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.0.2(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 7.0.2 - '@typescript-eslint/type-utils': 7.0.2(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.2(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.2 - debug: 4.3.4 - eslint: 8.56.0 + '@eslint-community/regexpp': 4.10.1 + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/type-utils': 7.13.1(eslint@9.5.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.13.1 + eslint: 9.5.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@7.0.2(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-GdwfDglCxSmU+QTS9vhz2Sop46ebNCXpPPvsByK7hu0rFGRHL+AusKQJ7SoN+LbLh6APFpQwHKmDSwN35Z700Q==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 typescript: '*' @@ -1289,28 +2049,28 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.0.2 - '@typescript-eslint/types': 7.0.2 - '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 7.0.2 + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.13.1 debug: 4.3.4 - eslint: 8.56.0 + eslint: 9.5.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@7.0.2: - resolution: {integrity: sha512-l6sa2jF3h+qgN2qUMjVR3uCNGjWw4ahGfzIYsCtFrQJCjhbrDPdiihYT8FnnqFwsWX+20hK592yX9I2rxKTP4g==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@7.13.1: + resolution: {integrity: sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.0.2 - '@typescript-eslint/visitor-keys': 7.0.2 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 dev: true - /@typescript-eslint/type-utils@7.0.2(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-IKKDcFsKAYlk8Rs4wiFfEwJTQlHcdn8CLwLaxwd6zb8HNiMcQIFX9sWax2k4Cjj7l7mGS5N1zl7RCHOVwHq2VQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@7.13.1(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 typescript: '*' @@ -1318,72 +2078,65 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) - '@typescript-eslint/utils': 7.0.2(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.3.3) + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.56.0 - ts-api-utils: 1.2.1(typescript@5.3.3) + eslint: 9.5.0 + ts-api-utils: 1.3.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@7.0.2: - resolution: {integrity: sha512-ZzcCQHj4JaXFjdOql6adYV4B/oFOFjPOC9XYwCaZFRvqN8Llfvv4gSxrkQkd2u4Ci62i2c6W6gkDwQJDaRc4nA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@7.13.1: + resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} + engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@7.0.2(typescript@5.3.3): - resolution: {integrity: sha512-3AMc8khTcELFWcKcPc0xiLviEvvfzATpdPj/DXuOGIdQIIFybf4DMT1vKRbuAEOFMwhWt7NFLXRkbjsvKZQyvw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@7.13.1(typescript@5.3.3): + resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.0.2 - '@typescript-eslint/visitor-keys': 7.0.2 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/visitor-keys': 7.13.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 + minimatch: 9.0.4 semver: 7.6.0 - ts-api-utils: 1.2.1(typescript@5.3.3) + ts-api-utils: 1.3.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@7.0.2(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-PZPIONBIB/X684bhT1XlrkjNZJIEevwkKDsdwfiu1WeqBxYEEdIgVDgm8/bbKHVu+6YOpeRqcfImTdImx/4Bsw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@7.13.1(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.7 - '@typescript-eslint/scope-manager': 7.0.2 - '@typescript-eslint/types': 7.0.2 - '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) - eslint: 8.56.0 - semver: 7.6.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@typescript-eslint/scope-manager': 7.13.1 + '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.3.3) + eslint: 9.5.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@7.0.2: - resolution: {integrity: sha512-8Y+YiBmqPighbm5xA2k4wKTxRzx9EkBu7Rlw+WHqMvRJ3RPz/BMBO9b2ru0LUNmXg120PHUXD5+SWFy2R8DqlQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@7.13.1: + resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.0.2 - eslint-visitor-keys: 3.4.3 - dev: true - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@typescript-eslint/types': 7.13.1 + eslint-visitor-keys: 3.4.3 dev: true /@vitest/expect@1.3.1: @@ -1425,6 +2178,72 @@ packages: pretty-format: 29.7.0 dev: true + /@vue/compiler-core@3.4.29: + resolution: {integrity: sha512-TFKiRkKKsRCKvg/jTSSKK7mYLJEQdUiUfykbG49rubC9SfDyvT2JrzTReopWlz2MxqeLyxh9UZhvxEIBgAhtrg==} + dependencies: + '@babel/parser': 7.24.7 + '@vue/shared': 3.4.29 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + dev: true + + /@vue/compiler-dom@3.4.29: + resolution: {integrity: sha512-A6+iZ2fKIEGnfPJejdB7b1FlJzgiD+Y/sxxKwJWg1EbJu6ZPgzaPQQ51ESGNv0CP6jm6Z7/pO6Ia8Ze6IKrX7w==} + dependencies: + '@vue/compiler-core': 3.4.29 + '@vue/shared': 3.4.29 + dev: true + + /@vue/compiler-sfc@3.4.29: + resolution: {integrity: sha512-zygDcEtn8ZimDlrEQyLUovoWgKQic6aEQqRXce2WXBvSeHbEbcAsXyCk9oG33ZkyWH4sl9D3tkYc1idoOkdqZQ==} + dependencies: + '@babel/parser': 7.24.7 + '@vue/compiler-core': 3.4.29 + '@vue/compiler-dom': 3.4.29 + '@vue/compiler-ssr': 3.4.29 + '@vue/shared': 3.4.29 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.38 + source-map-js: 1.2.0 + dev: true + + /@vue/compiler-ssr@3.4.29: + resolution: {integrity: sha512-rFbwCmxJ16tDp3N8XCx5xSQzjhidYjXllvEcqX/lopkoznlNPz3jyy0WGJCyhAaVQK677WWFt3YO/WUEkMMUFQ==} + dependencies: + '@vue/compiler-dom': 3.4.29 + '@vue/shared': 3.4.29 + dev: true + + /@vue/shared@3.4.29: + resolution: {integrity: sha512-hQ2gAQcBO/CDpC82DCrinJNgOHI2v+FA7BDW4lMSPeBpQ7sRe2OLHWe5cph1s7D8DUQAwRt18dBDfJJ220APEA==} + dev: true + + /@whatwg-node/events@0.0.3: + resolution: {integrity: sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==} + dev: true + + /@whatwg-node/fetch@0.8.8: + resolution: {integrity: sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==} + dependencies: + '@peculiar/webcrypto': 1.5.0 + '@whatwg-node/node-fetch': 0.3.6 + busboy: 1.6.0 + urlpattern-polyfill: 8.0.2 + web-streams-polyfill: 3.3.3 + dev: true + + /@whatwg-node/node-fetch@0.3.6: + resolution: {integrity: sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==} + dependencies: + '@whatwg-node/events': 0.0.3 + busboy: 1.6.0 + fast-querystring: 1.1.2 + fast-url-parser: 1.1.3 + tslib: 2.6.2 + dev: true + /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} requiresBuild: true @@ -1446,6 +2265,14 @@ packages: acorn: 8.11.3 dev: true + /acorn-jsx@5.3.2(acorn@8.12.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.12.0 + dev: true + /acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} @@ -1457,6 +2284,12 @@ packages: hasBin: true dev: true + /acorn@8.12.0: + resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -1569,6 +2402,11 @@ packages: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} dev: true + /are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + dev: true + /are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} @@ -1628,6 +2466,15 @@ packages: engines: {node: '>=0.10.0'} dev: true + /asn1js@3.0.5: + resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} + engines: {node: '>=12.0.0'} + dependencies: + pvtsutils: 1.3.5 + pvutils: 1.1.3 + tslib: 2.6.2 + dev: true + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -1703,6 +2550,10 @@ packages: - supports-color 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: @@ -1729,11 +2580,27 @@ packages: wcwidth: 1.0.1 dev: true + /browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001636 + electron-to-chromium: 1.4.807 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.1) + dev: true + /buffer-writer@2.0.0: resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} engines: {node: '>=4'} dev: true + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + /bundle-require@4.0.1(esbuild@0.19.12): resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1744,6 +2611,13 @@ packages: load-tsconfig: 0.2.5 dev: true + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: true + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -1789,6 +2663,10 @@ packages: get-intrinsic: 1.2.1 dev: true + /call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1808,6 +2686,10 @@ packages: engines: {node: '>=6'} dev: true + /caniuse-lite@1.0.30001636: + resolution: {integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==} + dev: true + /chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} @@ -1843,6 +2725,18 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true @@ -1878,6 +2772,18 @@ packages: engines: {node: '>=8'} dev: true + /ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + dev: true + + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -1978,6 +2884,11 @@ packages: engines: {node: ^12.20.0 || >=14} dev: true + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + dev: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -1998,6 +2909,10 @@ packages: engines: {node: '>= 0.6'} dev: true + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true @@ -2007,6 +2922,12 @@ packages: engines: {node: '>= 0.6'} dev: true + /core-js-compat@3.37.1: + resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} + dependencies: + browserslist: 4.23.1 + dev: true + /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -2015,6 +2936,16 @@ packages: vary: 1.1.2 dev: true + /cosmiconfig@8.0.0: + resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + engines: {node: '>=14'} + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + dev: true + /cross-fetch@3.1.6: resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} dependencies: @@ -2040,6 +2971,12 @@ packages: which: 2.0.2 dev: true + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true @@ -2062,6 +2999,10 @@ packages: stream-transform: 2.1.3 dev: true + /dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + dev: true + /db-errors@0.2.3: resolution: {integrity: sha512-OOgqgDuCavHXjYSJoV2yGhv6SeG8nk42aoCSoyXLZUH7VwFG27rxbavU1z+VrZbZjphw5UkDQwUlD21MwZpUng==} dev: true @@ -2077,6 +3018,17 @@ packages: ms: 2.0.0 dev: true + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -2174,10 +3126,19 @@ packages: esutils: 2.0.3 dev: true + /dset@3.1.3: + resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} + engines: {node: '>=4'} + dev: true + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true + /electron-to-chromium@1.4.807: + resolution: {integrity: sha512-kSmJl2ZwhNf/bcIuCH/imtNOKlpkLDn2jqT5FJ+/0CXjhnFaOa9cOe9gHKKy71eM49izwuQjZhKk+lWQ1JxB7A==} + dev: true + /emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} dev: true @@ -2200,6 +3161,14 @@ packages: dev: true optional: true + /enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -2207,6 +3176,11 @@ packages: ansi-colors: 4.1.3 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'} @@ -2275,107 +3249,447 @@ packages: has-tostringtag: 1.0.0 dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /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==} + engines: {node: '>=10'} + dev: true + + /eslint-compat-utils@0.5.1(eslint@9.5.0): + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 9.5.0 + semver: 7.6.0 + dev: true + + /eslint-config-flat-gitignore@0.1.5: + resolution: {integrity: sha512-hEZLwuZjDBGDERA49c2q7vxc8sCGv8EdBp6PQYzGOMcHIgrfG9YOM6s/4jx24zhD+wnK9AI8mgN5RxSss5nClQ==} + dependencies: + find-up: 7.0.0 + parse-gitignore: 2.0.0 + dev: true + + /eslint-flat-config-utils@0.2.5: + resolution: {integrity: sha512-iO+yLZtC/LKgACerkpvsZ6NoRVB2sxT04mOpnNcEM1aTwKy+6TsT46PUvrML4y2uVBS6I67hRCd2JiKAPaL/Uw==} + dependencies: + '@types/eslint': 8.56.10 + pathe: 1.1.2 + dev: true + + /eslint-formatting-reporter@0.0.0(eslint@9.5.0): + resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} + peerDependencies: + eslint: '>=8.40.0' + dependencies: + eslint: 9.5.0 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-merge-processors@0.1.0(eslint@9.5.0): + resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} + peerDependencies: + eslint: '*' + dependencies: + eslint: 9.5.0 + dev: true + + /eslint-parser-plain@0.1.0: + resolution: {integrity: sha512-oOeA6FWU0UJT/Rxc3XF5Cq0nbIZbylm7j8+plqq0CZoE6m4u32OXJrR+9iy4srGMmF6v6pmgvP1zPxSRIGh3sg==} + dev: true + + /eslint-plugin-antfu@2.3.3(eslint@9.5.0): + resolution: {integrity: sha512-TAgYNuc20QyKw8NXtpzR3LeMTTv1qAJVKkjCVzjRSGiSR1EetEY7LRgQVhcgP/C1FnI87isQERAIkKvkYyLq0Q==} + peerDependencies: + eslint: '*' + dependencies: + '@antfu/utils': 0.7.8 + eslint: 9.5.0 + dev: true + + /eslint-plugin-command@0.2.3(eslint@9.5.0): + resolution: {integrity: sha512-1bBYNfjZg60N2ZpLV5ATYSYyueIJ+zl5yKrTs0UFDdnyu07dNSZ7Xplnc+Wb6SXTdc1sIaoIrnuyhvztcltX6A==} + peerDependencies: + eslint: '*' + dependencies: + '@es-joy/jsdoccomment': 0.43.1 + eslint: 9.5.0 + dev: true + + /eslint-plugin-es-x@7.7.0(eslint@9.5.0): + resolution: {integrity: sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@eslint-community/regexpp': 4.10.1 + eslint: 9.5.0 + eslint-compat-utils: 0.5.1(eslint@9.5.0) + dev: true + + /eslint-plugin-eslint-comments@3.2.0(eslint@9.5.0): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + escape-string-regexp: 1.0.5 + eslint: 9.5.0 + ignore: 5.2.4 + dev: true + + /eslint-plugin-format@0.1.2(eslint@9.5.0): + resolution: {integrity: sha512-ZrcO3aiumgJ6ENAv65IWkPjtW77ML/5mp0YrRK0jdvvaZJb+4kKWbaQTMr/XbJo6CtELRmCApAziEKh7L2NbdQ==} + peerDependencies: + eslint: ^8.40.0 || ^9.0.0 + dependencies: + '@dprint/formatter': 0.3.0 + '@dprint/markdown': 0.17.1 + '@dprint/toml': 0.6.2 + eslint: 9.5.0 + eslint-formatting-reporter: 0.0.0(eslint@9.5.0) + eslint-parser-plain: 0.1.0 + prettier: 3.3.2 + synckit: 0.9.0 + dev: true + + /eslint-plugin-import-x@0.5.1(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-2JK8bbFOLes+gG6tgdnM8safCxMAj4u2wjX8X1BRFPfnY7Ct2hFYESoIcVwABX/DDcdpQFLGtKmzbNEWJZD9iQ==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^8.56.0 || ^9.0.0-0 + dependencies: + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.3.3) + debug: 4.3.4 + doctrine: 3.0.0 + eslint: 9.5.0 + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.7.5 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jsdoc@48.2.12(eslint@9.5.0): + resolution: {integrity: sha512-sO9sKkJx5ovWoRk9hV0YiNzXQ4Z6j27CqE/po2E3wddZVuy9wvKPSTiIhpxMTrP/qURvKayJIDB2+o9kyCW1Fw==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + dependencies: + '@es-joy/jsdoccomment': 0.43.1 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.3.4 + escape-string-regexp: 4.0.0 + eslint: 9.5.0 + esquery: 1.5.0 + semver: 7.6.2 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-jsonc@2.16.0(eslint@9.5.0): + resolution: {integrity: sha512-Af/ZL5mgfb8FFNleH6KlO4/VdmDuTqmM+SPnWcdoWywTetv7kq+vQe99UyQb9XO3b0OWLVuTH7H0d/PXYCMdSg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' dependencies: - has: 1.0.3 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + eslint: 9.5.0 + eslint-compat-utils: 0.5.1(eslint@9.5.0) + espree: 9.6.1 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + synckit: 0.6.2 dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + /eslint-plugin-markdown@5.0.0(eslint@9.5.0): + resolution: {integrity: sha512-kY2u9yDhzvfZ0kmRTsvgm3mTnvZgTSGIIPeHg3yesSx4R5CTCnITUjCPhzCD1MUhNcqHU5Tr6lzx+02EclVPbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8' dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + eslint: 9.5.0 + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color dev: true - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 + /eslint-plugin-n@17.9.0(eslint@9.5.0): + resolution: {integrity: sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + enhanced-resolve: 5.17.0 + eslint: 9.5.0 + eslint-plugin-es-x: 7.7.0(eslint@9.5.0) + get-tsconfig: 4.7.5 + globals: 15.6.0 + ignore: 5.2.4 + minimatch: 9.0.4 + semver: 7.6.0 dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + /eslint-plugin-no-only-tests@3.1.0: + resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} + engines: {node: '>=5.0.0'} dev: true - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + /eslint-plugin-perfectionist@2.11.0(eslint@9.5.0)(typescript@5.3.3)(vue-eslint-parser@9.4.3): + resolution: {integrity: sha512-XrtBtiu5rbQv88gl+1e2RQud9te9luYNvKIgM9emttQ2zutHPzY/AQUucwxscDKV4qlTkvLTxjOFvxqeDpPorw==} + peerDependencies: + astro-eslint-parser: ^1.0.2 + eslint: '>=8.0.0' + svelte: '>=3.0.0' + svelte-eslint-parser: ^0.37.0 + vue-eslint-parser: '>=9.0.0' + peerDependenciesMeta: + astro-eslint-parser: + optional: true + svelte: + optional: true + svelte-eslint-parser: + optional: true + vue-eslint-parser: + optional: true + dependencies: + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.3.3) + eslint: 9.5.0 + minimatch: 9.0.4 + natural-compare-lite: 1.4.0 + vue-eslint-parser: 9.4.3(eslint@9.5.0) + transitivePeerDependencies: + - supports-color + - typescript dev: true - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + /eslint-plugin-regexp@2.6.0(eslint@9.5.0): + resolution: {integrity: sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@eslint-community/regexpp': 4.10.1 + comment-parser: 1.4.1 + eslint: 9.5.0 + jsdoc-type-pratt-parser: 4.0.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 dev: true - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + /eslint-plugin-toml@0.11.0(eslint@9.5.0): + resolution: {integrity: sha512-sau+YvPU4fWTjB+qtBt3n8WS87aoDCs+BVbSUAemGaIsRNbvR9uEk+Tt892iLHTGvp/DPWYoCX4/8DoyAbB+sQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 9.5.0 + eslint-compat-utils: 0.5.1(eslint@9.5.0) + lodash: 4.17.21 + toml-eslint-parser: 0.9.3 + transitivePeerDependencies: + - supports-color dev: true - /eslint-config-prettier@9.1.0(eslint@8.56.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true + /eslint-plugin-unicorn@53.0.0(eslint@9.5.0): + resolution: {integrity: sha512-kuTcNo9IwwUCfyHGwQFOK/HjJAYzbODHN3wP0PgqbW+jbXqpNWxNVpVhj2tO9SixBwuAdmal8rVcWKBxwFnGuw==} + engines: {node: '>=18.18'} + peerDependencies: + eslint: '>=8.56.0' + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@eslint/eslintrc': 3.1.0 + ci-info: 4.0.0 + clean-regexp: 1.0.0 + core-js-compat: 3.37.1 + eslint: 9.5.0 + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.10.0 + semver: 7.6.2 + strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-unused-imports@3.2.0(@typescript-eslint/eslint-plugin@7.13.1)(eslint@9.5.0): + resolution: {integrity: sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: '>=7.0.0' + '@typescript-eslint/eslint-plugin': 6 - 7 + eslint: '8' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true dependencies: - eslint: 8.56.0 + '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1)(eslint@9.5.0)(typescript@5.3.3) + eslint: 9.5.0 + eslint-rule-composer: 0.3.0 dev: true - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5): - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} + /eslint-plugin-vitest@0.5.4(@typescript-eslint/eslint-plugin@7.13.1)(eslint@9.5.0)(typescript@5.3.3): + resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} + engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' + '@typescript-eslint/eslint-plugin': '*' + eslint: ^8.57.0 || ^9.0.0 + vitest: '*' peerDependenciesMeta: - '@types/eslint': + '@typescript-eslint/eslint-plugin': optional: true - eslint-config-prettier: + vitest: optional: true dependencies: - eslint: 8.56.0 - eslint-config-prettier: 9.1.0(eslint@8.56.0) - prettier: 3.2.5 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 + '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1)(eslint@9.5.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.3.3) + eslint: 9.5.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-vue@9.26.0(eslint@9.5.0): + resolution: {integrity: sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + eslint: 9.5.0 + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.0 + semver: 7.6.0 + vue-eslint-parser: 9.4.3(eslint@9.5.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-yml@1.14.0(eslint@9.5.0): + resolution: {integrity: sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 9.5.0 + eslint-compat-utils: 0.5.1(eslint@9.5.0) + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 1.2.3 + transitivePeerDependencies: + - supports-color dev: true - /eslint-plugin-simple-import-sort@12.0.0(eslint@8.56.0): - resolution: {integrity: sha512-8o0dVEdAkYap0Cn5kNeklaKcT1nUsa3LITWEuFk3nJifOoD+5JQGoyDUW2W/iPWwBsNBJpyJS9y4je/BgxLcyQ==} + /eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.29)(eslint@9.5.0): + resolution: {integrity: sha512-PfpJ4uKHnqeL/fXUnzYkOax3aIenlwewXRX8jFinA1a2yCFnLgMuiH3xvCgvHHUlV2xJWQHbCTdiJWGwb3NqpQ==} peerDependencies: - eslint: '>=5.0.0' + '@vue/compiler-sfc': ^3.3.0 + eslint: ^8.50.0 || ^9.0.0 dependencies: - eslint: 8.56.0 + '@vue/compiler-sfc': 3.4.29 + eslint: 9.5.0 + dev: true + + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} dev: true /eslint-scope@7.2.2: @@ -2386,52 +3700,61 @@ packages: estraverse: 5.3.0 dev: true + /eslint-scope@8.0.1: + resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /eslint@9.5.0: + resolution: {integrity: sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) + '@eslint-community/regexpp': 4.10.1 + '@eslint/config-array': 0.16.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.5.0 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 - graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -2443,6 +3766,15 @@ packages: engines: {node: '>=6'} dev: true + /espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) + eslint-visitor-keys: 4.0.0 + dev: true + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2477,6 +3809,10 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: @@ -2579,6 +3915,15 @@ packages: tmp: 0.0.33 dev: true + /extract-files@11.0.0: + resolution: {integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==} + engines: {node: ^12.20 || >= 14.13} + dev: true + + /fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -2606,17 +3951,29 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + dependencies: + fast-decode-uri-component: 1.0.1 + dev: true + + /fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + dependencies: + punycode: 1.4.1 + dev: true + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: - flat-cache: 3.0.4 + flat-cache: 4.0.1 dev: true /fill-range@7.0.1: @@ -2657,6 +4014,15 @@ packages: path-exists: 4.0.0 dev: true + /find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + dev: true + /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: @@ -2664,16 +4030,16 @@ packages: pkg-dir: 4.2.0 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} dependencies: - flatted: 3.2.7 - rimraf: 3.0.2 + flatted: 3.3.1 + keyv: 4.5.4 dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true /for-each@0.3.3: @@ -2742,6 +4108,10 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} @@ -2787,6 +4157,11 @@ packages: dev: true optional: true + /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.*} @@ -2833,6 +4208,12 @@ packages: get-intrinsic: 1.2.1 dev: true + /get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /getopts@2.3.0: resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} dev: true @@ -2874,13 +4255,28 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /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==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: true + + /globals@15.6.0: + resolution: {integrity: sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==} + engines: {node: '>=18'} + dev: true + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -2922,6 +4318,45 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /graphql-config@4.5.0(graphql@16.6.0): + resolution: {integrity: sha512-x6D0/cftpLUJ0Ch1e5sj1TZn6Wcxx4oMfmhaG9shM0DKajA9iR+j1z86GSTQ19fShbGvrSSvbIQsHku6aQ6BBw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + dependencies: + '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.6.0) + '@graphql-tools/json-file-loader': 7.4.18(graphql@16.6.0) + '@graphql-tools/load': 7.8.14(graphql@16.6.0) + '@graphql-tools/merge': 8.4.2(graphql@16.6.0) + '@graphql-tools/url-loader': 7.17.18(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + cosmiconfig: 8.0.0 + graphql: 16.6.0 + jiti: 1.17.1 + minimatch: 4.2.3 + string-env-interpolation: 1.0.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: true + + /graphql-depth-limit@1.1.0(graphql@16.6.0): + resolution: {integrity: sha512-+3B2BaG8qQ8E18kzk9yiSdAa75i/hnnOwgSeAxVJctGQPvmeiLtqKOYF6HETCyRjiF7Xfsyal0HbLlxCQkgkrw==} + engines: {node: '>=6.0.0'} + peerDependencies: + graphql: '*' + dependencies: + arrify: 1.0.1 + graphql: 16.6.0 + dev: true + /graphql-parse-resolve-info@4.13.0(graphql@16.6.0): resolution: {integrity: sha512-VVJ1DdHYcR7hwOGQKNH+QTzuNgsLA8l/y436HtP9YHoX6nmwXRWq3xWthU3autMysXdm0fQUbhTZCx0W9ICozw==} engines: {node: '>=8.6'} @@ -2957,6 +4392,15 @@ packages: tslib: 2.6.2 dev: true + /graphql-ws@5.12.1(graphql@16.6.0): + resolution: {integrity: sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg==} + engines: {node: '>=10'} + peerDependencies: + graphql: '>=0.11 <=16' + dependencies: + graphql: 16.6.0 + dev: true + /graphql@16.6.0: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} @@ -3014,6 +4458,13 @@ packages: function-bind: 1.1.1 dev: true + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -3107,6 +4558,11 @@ packages: engines: {node: '>= 4'} dev: true + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -3118,6 +4574,7 @@ packages: /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + requiresBuild: true dev: true /indent-string@4.0.0: @@ -3172,6 +4629,17 @@ packages: engines: {node: '>= 0.10'} dev: true + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true + + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true + /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: @@ -3205,6 +4673,13 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -3216,6 +4691,12 @@ packages: has: 1.0.3 dev: true + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 + dev: true + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -3223,6 +4704,10 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3253,6 +4738,10 @@ packages: is-extglob: 2.1.1 dev: true + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} requiresBuild: true @@ -3357,6 +4846,27 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true + /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.17.1): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.17.1 + dev: true + + /jiti@1.17.1: + resolution: {integrity: sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw==} + hasBin: true + dev: true + /joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -3373,16 +4883,42 @@ packages: /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + engines: {node: '>=12.0.0'} + dev: true + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} hasBin: true - dependencies: - argparse: 2.0.1 + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true /json-parse-even-better-errors@2.3.1: @@ -3401,6 +4937,22 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.6.0 + dev: true + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true @@ -3411,6 +4963,12 @@ packages: graceful-fs: 4.2.11 dev: true + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -3558,6 +5116,17 @@ 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: true + + /lodash.lowercase@4.3.0: + resolution: {integrity: sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA==} + dev: true + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -3607,6 +5176,12 @@ packages: yallist: 2.1.2 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==} engines: {node: '>=10'} @@ -3619,6 +5194,12 @@ packages: engines: {node: '>=12'} dev: true + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /magic-string@0.30.7: resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} engines: {node: '>=12'} @@ -3670,6 +5251,22 @@ packages: engines: {node: '>=8'} dev: true + /mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -3705,11 +5302,30 @@ packages: engines: {node: '>= 8'} dev: true + /meros@1.3.0: + resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true + dev: true + /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} dev: true + /micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + dependencies: + debug: 4.3.4 + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -3757,8 +5373,15 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + /minimatch@4.2.3: + resolution: {integrity: sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -3887,6 +5510,10 @@ packages: hasBin: true dev: true + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -3938,6 +5565,10 @@ packages: dev: true optional: true + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -3955,6 +5586,13 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3995,6 +5633,12 @@ packages: dev: true optional: true + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -4061,16 +5705,16 @@ packages: mimic-fn: 4.0.0 dev: true - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 dev: true /orchid-core@0.12.0: @@ -4121,6 +5765,13 @@ packages: yocto-queue: 0.1.0 dev: true + /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: true + /p-limit@5.0.0: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} @@ -4142,6 +5793,13 @@ 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: true + /p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} @@ -4172,6 +5830,22 @@ packages: callsites: 3.1.0 dev: true + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + + /parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + dev: true + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -4192,6 +5866,11 @@ 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: true + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -4318,11 +5997,20 @@ packages: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: true + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true + /picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + dev: true + /pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} @@ -4354,6 +6042,11 @@ packages: pathe: 1.1.2 dev: true + /pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + /postcss-load-config@4.0.2: resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} @@ -4370,6 +6063,14 @@ packages: yaml: 2.3.4 dev: true + /postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + /postcss@8.4.35: resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} engines: {node: ^10 || ^12 || >=14} @@ -4379,6 +6080,15 @@ packages: source-map-js: 1.0.2 dev: true + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + dev: true + /postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -4465,8 +6175,8 @@ packages: hasBin: true dev: true - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + /prettier@3.3.2: + resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} engines: {node: '>=14'} hasBin: true dev: true @@ -4521,11 +6231,26 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: true + /pvtsutils@1.3.5: + resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==} + dependencies: + tslib: 2.6.2 + dev: true + + /pvutils@1.1.3: + resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} + engines: {node: '>=6.0.0'} + dev: true + /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} @@ -4631,10 +6356,30 @@ packages: strip-indent: 3.0.0 dev: true + /refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dependencies: + '@eslint-community/regexpp': 4.10.1 + dev: true + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true + /regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dependencies: + '@eslint-community/regexpp': 4.10.1 + refa: 0.12.1 + dev: true + + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} @@ -4644,6 +6389,17 @@ packages: functions-have-names: 1.2.3 dev: true + /regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: true + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -4668,6 +6424,10 @@ packages: engines: {node: '>=8'} dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true @@ -4677,6 +6437,15 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4758,6 +6527,15 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true + /scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} + dependencies: + '@eslint-community/regexpp': 4.10.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + dev: true + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -4768,6 +6546,11 @@ packages: hasBin: true dev: true + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + /semver@7.6.0: resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} engines: {node: '>=10'} @@ -4776,6 +6559,12 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + dev: true + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -4943,6 +6732,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: true + /source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} @@ -4975,6 +6769,13 @@ packages: spdx-license-ids: 3.0.13 dev: true + /spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.13 + dev: true + /spdx-license-ids@3.0.13: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true @@ -5031,11 +6832,20 @@ packages: mixme: 0.5.9 dev: true + /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==} engines: {node: '>=0.6.19'} dev: true + /string-env-interpolation@1.0.1: + resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} + dev: true + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -5166,14 +6976,26 @@ packages: engines: {node: '>= 0.4'} dev: true - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + /synckit@0.6.2: + resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} + engines: {node: '>=12.20'} + dependencies: + tslib: 2.6.2 + dev: true + + /synckit@0.9.0: + resolution: {integrity: sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 tslib: 2.6.2 dev: true + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + /tar@6.1.15: resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} engines: {node: '>=10'} @@ -5239,6 +7061,11 @@ packages: os-tmpdir: 1.0.2 dev: true + /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==} engines: {node: '>=8.0'} @@ -5251,6 +7078,13 @@ packages: engines: {node: '>=0.6'} dev: true + /toml-eslint-parser@0.9.3: + resolution: {integrity: sha512-moYoCvkNUAPCxSW9jmHmRElhm4tVJpHL8ItC/+uYD0EpPSFXbck7yREz9tNdJVTSpHVod8+HoipcpbQ0oE6gsw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + dev: true + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true @@ -5271,8 +7105,8 @@ packages: engines: {node: '>=8'} dev: true - /ts-api-utils@1.2.1(typescript@5.3.3): - resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + /ts-api-utils@1.3.0(typescript@5.3.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -5410,24 +7244,6 @@ packages: is-typed-array: 1.1.10 dev: true - /typescript-eslint@7.0.2(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-Nsb+Dfi897ErE3CtVJYBECBQWPGEpCXLqLCQarBhFtyJsHnhA7O39GmtAmN3dmZ6bIp8tP5T+AOUrEdE07SBVg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 7.0.2(@typescript-eslint/parser@7.0.2)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 7.0.2(eslint@8.56.0)(typescript@5.3.3) - eslint: 8.56.0 - typescript: 5.3.3 - transitivePeerDependencies: - - supports-color - dev: true - /typescript@5.3.3: resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} @@ -5447,6 +7263,11 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + /unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} requiresBuild: true @@ -5463,22 +7284,50 @@ packages: dev: true optional: true + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.10 + dev: true + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true + /unixify@1.0.0: + resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} + engines: {node: '>=0.10.0'} + dependencies: + normalize-path: 2.1.1 + dev: true + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true + /update-browserslist-db@1.0.16(browserslist@4.23.1): + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.1 + escalade: 3.1.2 + picocolors: 1.0.1 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 dev: true + /urlpattern-polyfill@8.0.2: + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + dev: true + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} requiresBuild: true @@ -5639,12 +7488,45 @@ packages: - terser dev: true + /vue-eslint-parser@9.4.3(eslint@9.5.0): + resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 9.5.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true + /web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + dev: true + + /webcrypto-core@1.8.0: + resolution: {integrity: sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw==} + dependencies: + '@peculiar/asn1-schema': 2.3.8 + '@peculiar/json-schema': 1.1.12 + asn1js: 3.0.5 + pvtsutils: 1.3.5 + tslib: 2.6.2 + dev: true + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true @@ -5737,6 +7619,11 @@ packages: string-width: 4.2.3 dev: true + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -5768,6 +7655,37 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true + /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.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + 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 + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -5786,10 +7704,23 @@ packages: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yaml-eslint-parser@1.2.3: + resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.3.4 + dev: true + /yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'}