├── .gitignore ├── .eslintignore ├── src ├── cli │ ├── to-strict.ts │ └── to-nullable.ts ├── cli.ts └── index.ts ├── __tests__ ├── graphql15.test.mjs ├── graphql16.test.mjs ├── graphql17.test.mjs ├── graphql-pr-4192.test.mjs ├── schema.test.graphql ├── snapshots │ ├── schema.nullable.graphql │ ├── schema.strict.graphql │ ├── schema-with-directive.nullable.graphql │ ├── schema-with-directive-only.nullable.graphql │ ├── schema-with-directive.strict.graphql │ └── schema-with-directive-only.strict.graphql ├── schema-with-directive-only.test.graphql ├── schema-with-directive.test.graphql └── runTest.mjs ├── tsconfig.json ├── .github └── workflows │ └── ci.yml ├── .eslintrc.js ├── package.json ├── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /dist 3 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /dist 3 | /__tests__/**/*.graphql 4 | -------------------------------------------------------------------------------- /src/cli/to-strict.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import { main } from "../cli.js"; 3 | 4 | main(true); 5 | -------------------------------------------------------------------------------- /__tests__/graphql15.test.mjs: -------------------------------------------------------------------------------- 1 | import { runTest } from "./runTest.mjs"; 2 | 3 | runTest("graphql15"); 4 | -------------------------------------------------------------------------------- /__tests__/graphql16.test.mjs: -------------------------------------------------------------------------------- 1 | import { runTest } from "./runTest.mjs"; 2 | 3 | runTest("graphql16"); 4 | -------------------------------------------------------------------------------- /__tests__/graphql17.test.mjs: -------------------------------------------------------------------------------- 1 | import { runTest } from "./runTest.mjs"; 2 | 3 | runTest("graphql17"); 4 | -------------------------------------------------------------------------------- /src/cli/to-nullable.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import { main } from "../cli.js"; 3 | 4 | main(false); 5 | -------------------------------------------------------------------------------- /__tests__/graphql-pr-4192.test.mjs: -------------------------------------------------------------------------------- 1 | import { runTest } from "./runTest.mjs"; 2 | 3 | runTest("graphql-pr-4192"); 4 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/recommended/tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "rootDir": "src", 6 | "declarationDir": "./dist", 7 | "outDir": "./dist" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /__tests__/schema.test.graphql: -------------------------------------------------------------------------------- 1 | type Query { 2 | allThings(includingArchived: Boolean, first: Int!): ThingConnection* 3 | } 4 | 5 | type ThingConnection { 6 | pageInfo: PageInfo! 7 | nodes: [Thing*]* 8 | } 9 | 10 | type PageInfo { 11 | startCursor: String* 12 | endCursor: String* 13 | hasNextPage: Boolean* 14 | hasPreviousPage: Boolean* 15 | } 16 | 17 | interface Thing { 18 | id: ID! 19 | name: String* 20 | description: String 21 | } 22 | 23 | type Book implements Thing { 24 | id: ID! 25 | name: String* 26 | description: String 27 | pages: Int! 28 | } 29 | 30 | type Car implements Thing { 31 | id: ID! 32 | name: String* 33 | description: String 34 | mileage: Float* 35 | } 36 | -------------------------------------------------------------------------------- /__tests__/snapshots/schema.nullable.graphql: -------------------------------------------------------------------------------- 1 | type Query { 2 | allThings(includingArchived: Boolean, first: Int!): ThingConnection 3 | } 4 | 5 | type ThingConnection { 6 | pageInfo: PageInfo! 7 | nodes: [Thing] 8 | } 9 | 10 | type PageInfo { 11 | startCursor: String 12 | endCursor: String 13 | hasNextPage: Boolean 14 | hasPreviousPage: Boolean 15 | } 16 | 17 | interface Thing { 18 | id: ID! 19 | name: String 20 | description: String 21 | } 22 | 23 | type Book implements Thing { 24 | id: ID! 25 | name: String 26 | description: String 27 | pages: Int! 28 | } 29 | 30 | type Car implements Thing { 31 | id: ID! 32 | name: String 33 | description: String 34 | mileage: Float 35 | } 36 | -------------------------------------------------------------------------------- /__tests__/snapshots/schema.strict.graphql: -------------------------------------------------------------------------------- 1 | type Query { 2 | allThings(includingArchived: Boolean, first: Int!): ThingConnection! 3 | } 4 | 5 | type ThingConnection { 6 | pageInfo: PageInfo! 7 | nodes: [Thing!]! 8 | } 9 | 10 | type PageInfo { 11 | startCursor: String! 12 | endCursor: String! 13 | hasNextPage: Boolean! 14 | hasPreviousPage: Boolean! 15 | } 16 | 17 | interface Thing { 18 | id: ID! 19 | name: String! 20 | description: String 21 | } 22 | 23 | type Book implements Thing { 24 | id: ID! 25 | name: String! 26 | description: String 27 | pages: Int! 28 | } 29 | 30 | type Car implements Thing { 31 | id: ID! 32 | name: String! 33 | description: String 34 | mileage: Float! 35 | } 36 | -------------------------------------------------------------------------------- /__tests__/snapshots/schema-with-directive.nullable.graphql: -------------------------------------------------------------------------------- 1 | type Query { 2 | allThings(includingArchived: Boolean, first: Int!): ThingConnection 3 | } 4 | 5 | type ThingConnection { 6 | pageInfo: PageInfo! 7 | nodes: [Thing] 8 | } 9 | 10 | type PageInfo { 11 | startCursor: String 12 | endCursor: String 13 | hasNextPage: Boolean 14 | hasPreviousPage: Boolean 15 | } 16 | 17 | interface Thing { 18 | id: ID! 19 | name: String 20 | description: String 21 | } 22 | 23 | type Book implements Thing { 24 | id: ID! 25 | name: String 26 | description: String 27 | pages: Int! 28 | } 29 | 30 | type Car implements Thing { 31 | id: ID! 32 | name: String 33 | description: String 34 | mileage: Float 35 | } 36 | -------------------------------------------------------------------------------- /__tests__/snapshots/schema-with-directive-only.nullable.graphql: -------------------------------------------------------------------------------- 1 | type Query { 2 | allThings(includingArchived: Boolean, first: Int!): ThingConnection 3 | } 4 | 5 | type ThingConnection { 6 | pageInfo: PageInfo! 7 | nodes: [Thing] 8 | } 9 | 10 | type PageInfo { 11 | startCursor: String 12 | endCursor: String 13 | hasNextPage: Boolean 14 | hasPreviousPage: Boolean 15 | } 16 | 17 | interface Thing { 18 | id: ID! 19 | name: String 20 | description: String 21 | } 22 | 23 | type Book implements Thing { 24 | id: ID! 25 | name: String 26 | description: String 27 | pages: Int! 28 | } 29 | 30 | type Car implements Thing { 31 | id: ID! 32 | name: String 33 | description: String 34 | mileage: Float 35 | } 36 | -------------------------------------------------------------------------------- /__tests__/snapshots/schema-with-directive.strict.graphql: -------------------------------------------------------------------------------- 1 | type Query { 2 | allThings(includingArchived: Boolean, first: Int!): ThingConnection! 3 | } 4 | 5 | type ThingConnection { 6 | pageInfo: PageInfo! 7 | nodes: [Thing!]! 8 | } 9 | 10 | type PageInfo { 11 | startCursor: String! 12 | endCursor: String! 13 | hasNextPage: Boolean! 14 | hasPreviousPage: Boolean! 15 | } 16 | 17 | interface Thing { 18 | id: ID! 19 | name: String! 20 | description: String 21 | } 22 | 23 | type Book implements Thing { 24 | id: ID! 25 | name: String! 26 | description: String 27 | pages: Int! 28 | } 29 | 30 | type Car implements Thing { 31 | id: ID! 32 | name: String! 33 | description: String 34 | mileage: Float! 35 | } 36 | -------------------------------------------------------------------------------- /__tests__/snapshots/schema-with-directive-only.strict.graphql: -------------------------------------------------------------------------------- 1 | type Query { 2 | allThings(includingArchived: Boolean, first: Int!): ThingConnection! 3 | } 4 | 5 | type ThingConnection { 6 | pageInfo: PageInfo! 7 | nodes: [Thing!]! 8 | } 9 | 10 | type PageInfo { 11 | startCursor: String! 12 | endCursor: String! 13 | hasNextPage: Boolean! 14 | hasPreviousPage: Boolean! 15 | } 16 | 17 | interface Thing { 18 | id: ID! 19 | name: String! 20 | description: String 21 | } 22 | 23 | type Book implements Thing { 24 | id: ID! 25 | name: String! 26 | description: String 27 | pages: Int! 28 | } 29 | 30 | type Car implements Thing { 31 | id: ID! 32 | name: String! 33 | description: String 34 | mileage: Float! 35 | } 36 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [push, pull_request] 4 | 5 | env: 6 | CI: true 7 | NODE_OPTIONS: "--disable-proto=delete" 8 | 9 | jobs: 10 | test: 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [20.x, 22.x] 16 | 17 | steps: 18 | - uses: actions/checkout@v3 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v3 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | - run: yarn --frozen-lockfile 24 | - run: yarn prepack 25 | - run: yarn test 26 | 27 | lint: 28 | runs-on: ubuntu-latest 29 | 30 | strategy: 31 | matrix: 32 | node-version: [20.x] 33 | 34 | steps: 35 | - uses: actions/checkout@v3 36 | - name: Use Node.js ${{ matrix.node-version }} 37 | uses: actions/setup-node@v3 38 | with: 39 | node-version: ${{ matrix.node-version }} 40 | - run: yarn --frozen-lockfile 41 | - run: yarn lint 42 | -------------------------------------------------------------------------------- /__tests__/schema-with-directive-only.test.graphql: -------------------------------------------------------------------------------- 1 | directive @semanticNonNull(levels: [Int!]) on FIELD_DEFINITION 2 | 3 | type Query { 4 | allThings(includingArchived: Boolean, first: Int!): ThingConnection 5 | @semanticNonNull 6 | } 7 | 8 | type ThingConnection { 9 | pageInfo: PageInfo! 10 | nodes: [Thing] @semanticNonNull(levels: [0, 1]) 11 | } 12 | 13 | type PageInfo { 14 | startCursor: String @semanticNonNull(levels: [0]) 15 | endCursor: String @semanticNonNull 16 | hasNextPage: Boolean @semanticNonNull 17 | hasPreviousPage: Boolean @semanticNonNull 18 | } 19 | 20 | interface Thing { 21 | id: ID! 22 | name: String @semanticNonNull 23 | description: String 24 | } 25 | 26 | type Book implements Thing { 27 | id: ID! 28 | name: String @semanticNonNull 29 | description: String 30 | # Test that this non-null is retained 31 | pages: Int! @semanticNonNull 32 | } 33 | 34 | type Car implements Thing { 35 | id: ID! 36 | name: String @semanticNonNull 37 | description: String 38 | mileage: Float @semanticNonNull 39 | } 40 | -------------------------------------------------------------------------------- /__tests__/schema-with-directive.test.graphql: -------------------------------------------------------------------------------- 1 | directive @semanticNonNull(levels: [Int!]) on FIELD_DEFINITION 2 | 3 | type Query { 4 | allThings(includingArchived: Boolean, first: Int!): ThingConnection 5 | @semanticNonNull 6 | } 7 | 8 | type ThingConnection { 9 | pageInfo: PageInfo! 10 | nodes: [Thing] @semanticNonNull(levels: [0, 1]) 11 | } 12 | 13 | type PageInfo { 14 | startCursor: String @semanticNonNull(levels: [0]) 15 | endCursor: String @semanticNonNull 16 | hasNextPage: Boolean @semanticNonNull 17 | hasPreviousPage: Boolean @semanticNonNull 18 | } 19 | 20 | interface Thing { 21 | id: ID! 22 | name: String @semanticNonNull 23 | description: String 24 | } 25 | 26 | type Book implements Thing { 27 | id: ID! 28 | # Test that this semantic-non-null doesn't cause issues 29 | name: String* @semanticNonNull 30 | description: String 31 | # Test that this non-null is retained 32 | pages: Int! @semanticNonNull 33 | } 34 | 35 | type Car implements Thing { 36 | id: ID! 37 | name: String @semanticNonNull 38 | description: String 39 | mileage: Float @semanticNonNull 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/cli.ts: -------------------------------------------------------------------------------- 1 | import { readFile, writeFile } from "node:fs/promises"; 2 | import { parseArgs } from "node:util"; 3 | 4 | import { buildSchema, printSchema, validateSchema } from "graphql"; 5 | 6 | import { semanticToNullable, semanticToStrict } from "./index.js"; 7 | 8 | export async function main(toStrict = false) { 9 | const { 10 | values: { input, output }, 11 | } = parseArgs({ 12 | options: { 13 | input: { 14 | type: "string", 15 | short: "i", 16 | }, 17 | output: { 18 | type: "string", 19 | short: "o", 20 | }, 21 | }, 22 | }); 23 | if (!input) { 24 | throw new Error("Please specify an --input schema"); 25 | } 26 | if (!output) { 27 | throw new Error("Please specify an --output location"); 28 | } 29 | 30 | const sdl = await readFile(input, "utf8"); 31 | const schema = buildSchema(sdl); 32 | const errors = validateSchema(schema); 33 | if (errors.length > 0) { 34 | console.dir(errors); 35 | throw new Error("Invalid schema"); 36 | } 37 | 38 | const derivedSchema = toStrict 39 | ? semanticToStrict(schema) 40 | : semanticToNullable(schema); 41 | 42 | const newSdl = printSchema(derivedSchema); 43 | await writeFile(output, newSdl + "\n"); 44 | } 45 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parser: "@typescript-eslint/parser", 3 | extends: [ 4 | "eslint:recommended", 5 | "plugin:@typescript-eslint/eslint-recommended", 6 | "plugin:@typescript-eslint/recommended", 7 | "plugin:import/errors", 8 | "plugin:import/typescript", 9 | "prettier", 10 | ], 11 | plugins: ["@typescript-eslint", "simple-import-sort", "import"], 12 | parserOptions: { 13 | ecmaVersion: 2018, 14 | sourceType: "module", 15 | }, 16 | env: { 17 | node: true, 18 | es6: true, 19 | }, 20 | globals: { 21 | NodeJS: false, // For TypeScript 22 | }, 23 | rules: { 24 | "no-unused-vars": 0, 25 | "@typescript-eslint/no-unused-vars": [ 26 | "error", 27 | { 28 | argsIgnorePattern: "^_", 29 | varsIgnorePattern: "^_", 30 | args: "after-used", 31 | ignoreRestSiblings: true, 32 | }, 33 | ], 34 | curly: "error", 35 | "no-else-return": 0, 36 | "no-return-assign": [2, "except-parens"], 37 | "no-underscore-dangle": 0, 38 | camelcase: 0, 39 | "prefer-arrow-callback": [ 40 | "error", 41 | { 42 | allowNamedFunctions: true, 43 | }, 44 | ], 45 | "class-methods-use-this": 0, 46 | "no-restricted-syntax": 0, 47 | "no-param-reassign": [ 48 | "error", 49 | { 50 | props: false, 51 | }, 52 | ], 53 | 54 | "arrow-body-style": 0, 55 | "no-nested-ternary": 0, 56 | 57 | /* 58 | * simple-import-sort seems to be the most stable import sorting currently, 59 | * disable others 60 | */ 61 | "simple-import-sort/imports": "error", 62 | "simple-import-sort/exports": "error", 63 | "sort-imports": "off", 64 | "import/order": "off", 65 | 66 | "import/no-deprecated": "warn", 67 | "import/no-duplicates": "error", 68 | // Doesn't support 'exports'? 69 | "import/no-unresolved": "off", 70 | "@typescript-eslint/ban-ts-comment": "off", 71 | "@typescript-eslint/no-namespace": "off", 72 | }, 73 | overrides: [ 74 | { 75 | files: ["__tests__/**/*", "test.js"], 76 | rules: { 77 | "@typescript-eslint/no-explicit-any": 0, 78 | "@typescript-eslint/explicit-function-return-type": 0, 79 | "@typescript-eslint/no-var-requires": 0, 80 | "@typescript-eslint/ban-ts-comment": 0, 81 | }, 82 | }, 83 | { 84 | files: ["perfTest/**/*", "examples/**/*"], 85 | rules: { 86 | "@typescript-eslint/no-var-requires": 0, 87 | }, 88 | }, 89 | ], 90 | }; 91 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "graphql-sock", 3 | "version": "1.0.1", 4 | "description": "GraphQL Semantic Output Conversion Kit - converts a cutting edge SDL file that supports semantic nullability into a more traditional SDL file legacy tools can support.", 5 | "main": "dist/index.js", 6 | "bin": { 7 | "semantic-to-nullable": "dist/cli/to-nullable.js", 8 | "semantic-to-strict": "dist/cli/to-strict.js" 9 | }, 10 | "scripts": { 11 | "prepack": "tsc && chmod +x dist/cli/*.js", 12 | "test": "node --test --experimental-test-module-mocks", 13 | "watch": "tsc --watch", 14 | "lint": "yarn prettier:check && eslint --ext .js,.jsx,.ts,.tsx,.graphql .", 15 | "lint:fix": "eslint --ext .js,.jsx,.ts,.tsx,.graphql . --fix; prettier --cache --ignore-path .eslintignore --write '**/*.{js,jsx,ts,tsx,graphql,md,json}'", 16 | "prettier:check": "prettier --cache --ignore-path .eslintignore --check '**/*.{js,jsx,ts,tsx,graphql,md,json}'" 17 | }, 18 | "repository": { 19 | "type": "git", 20 | "url": "https+git://github.com/graphile/graphql-sock.git" 21 | }, 22 | "bugs": { 23 | "url": "https://github.com/graphile/graphql-sock/issues" 24 | }, 25 | "homepage": "https://github.com/graphile/graphql-sock", 26 | "keywords": [ 27 | "graphql", 28 | "throw", 29 | "error", 30 | "errors", 31 | "raise", 32 | "exception", 33 | "semantic", 34 | "null", 35 | "non-null", 36 | "nullability", 37 | "null", 38 | "only", 39 | "on", 40 | "error", 41 | "sdl", 42 | "schema", 43 | "convert", 44 | "strip" 45 | ], 46 | "author": "Benjie Gillam ", 47 | "license": "MIT", 48 | "peerDependencies": { 49 | "graphql": "15.x || 16.x || 17.x" 50 | }, 51 | "devDependencies": { 52 | "@tsconfig/recommended": "^1.0.7", 53 | "@types/node": "^22.5.4", 54 | "@typescript-eslint/eslint-plugin": "^6.8.0", 55 | "@typescript-eslint/parser": "^6.8.0", 56 | "eslint": "^8.51.0", 57 | "eslint-config-prettier": "^9.0.0", 58 | "eslint-plugin-import": "^2.28.1", 59 | "eslint-plugin-simple-import-sort": "^10.0.0", 60 | "eslint_d": "^13.0.0", 61 | "graphql": "15.x | 16.x | 17.x", 62 | "graphql-pr-4192": "npm:graphql@16.9.0-canary.pr.4192.1813397076f44a55e5798478e7321db9877de97a", 63 | "graphql15": "npm:graphql@15.x", 64 | "graphql16": "npm:graphql@16.x", 65 | "graphql17": "npm:graphql@17.x", 66 | "prettier": "^3.3.3", 67 | "typescript": "^5.6.2" 68 | }, 69 | "prettier": { 70 | "proseWrap": "always" 71 | }, 72 | "files": [ 73 | "dist" 74 | ] 75 | } 76 | -------------------------------------------------------------------------------- /__tests__/runTest.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | 3 | import * as assert from "node:assert"; 4 | import { readdir, readFile } from "node:fs/promises"; 5 | import { test } from "node:test"; 6 | 7 | const TEST_DIR = import.meta.dirname; 8 | const files = await readdir(TEST_DIR); 9 | const skip = test.skip.bind(test); 10 | 11 | /** @param graphqlModuleName {string} */ 12 | export const runTest = async (graphqlModuleName) => { 13 | test(graphqlModuleName, async (t) => { 14 | const mod = await import(graphqlModuleName); 15 | const { default: defaultExport, ...namedExports } = mod; 16 | const mockGraphql = t.mock.module("graphql", { 17 | cache: true, 18 | defaultExport, 19 | namedExports, 20 | }); 21 | const graphql = await import("graphql"); 22 | const { buildSchema, printSchema } = graphql; 23 | const isSemanticNonNullType = /** @type {any} */ (graphql) 24 | .isSemanticNonNullType; 25 | 26 | const { semanticToNullable, semanticToStrict } = await import( 27 | `../dist/index.js?graphql=${graphqlModuleName}` 28 | ); 29 | 30 | for (const file of files) { 31 | if (file.endsWith(".test.graphql") && !file.startsWith(".")) { 32 | const pureDirective = 33 | file === "schema-with-directive-only.test.graphql"; 34 | const maybeTest = 35 | pureDirective || isSemanticNonNullType != null ? test : skip; 36 | await maybeTest(file.replace(/\.test\.graphql$/, ""), async () => { 37 | const sdl = await readFile(TEST_DIR + "/" + file, "utf8"); 38 | const schema = buildSchema(sdl); 39 | await test("semantic-to-strict", async () => { 40 | const expectedSdl = await readFile( 41 | TEST_DIR + "/snapshots/" + file.replace(".test.", ".strict."), 42 | "utf8", 43 | ); 44 | const converted = semanticToStrict(schema); 45 | assert.equal( 46 | printSchema(converted).trim(), 47 | expectedSdl.trim(), 48 | "Expected semantic-to-strict to match", 49 | ); 50 | }); 51 | await test("semantic-to-nullable", async () => { 52 | const expectedSdl = await readFile( 53 | TEST_DIR + "/snapshots/" + file.replace(".test.", ".nullable."), 54 | "utf8", 55 | ); 56 | const converted = semanticToNullable(schema); 57 | assert.equal( 58 | printSchema(converted).trim(), 59 | expectedSdl.trim(), 60 | "Expected semantic-to-nullable to match", 61 | ); 62 | }); 63 | }); 64 | } 65 | } 66 | mockGraphql.restore(); 67 | }); 68 | }; 69 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | GraphQLFieldConfig, 3 | GraphQLFieldConfigMap, 4 | GraphQLInterfaceType, 5 | GraphQLList, 6 | GraphQLNamedType, 7 | GraphQLNonNull, 8 | GraphQLNullableType, 9 | GraphQLObjectType, 10 | GraphQLOutputType, 11 | GraphQLSchema, 12 | GraphQLType, 13 | GraphQLUnionType, 14 | isInterfaceType, 15 | isListType, 16 | isNonNullType, 17 | isObjectType, 18 | isUnionType, 19 | Kind, 20 | } from "graphql"; 21 | import * as graphql from "graphql"; 22 | 23 | type Maybe = null | undefined | T; 24 | 25 | // If GraphQL doesn't have this helper function, then it doesn't natively support GraphQLSemanticNonNull 26 | const isSemanticNonNullType: ( 27 | t: unknown, 28 | ) => t is { ofType: GraphQLNullableType } = 29 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 30 | (graphql as any).isSemanticNonNullType ?? (() => false); 31 | 32 | function convertSchema(schema: GraphQLSchema, toStrict: boolean) { 33 | const config = schema.toConfig(); 34 | const convertType = makeConvertType(toStrict); 35 | const derivedSchema = new GraphQLSchema({ 36 | ...config, 37 | query: convertType(config.query), 38 | mutation: convertType(config.mutation), 39 | subscription: convertType(config.subscription), 40 | types: config.types 41 | .filter((t) => !t.name.startsWith("__")) 42 | .map((t) => convertType(t)), 43 | directives: config.directives.filter((d) => d.name !== "semanticNonNull"), 44 | }); 45 | return derivedSchema; 46 | } 47 | 48 | export function semanticToNullable(schema: GraphQLSchema) { 49 | return convertSchema(schema, false); 50 | } 51 | 52 | export function semanticToStrict(schema: GraphQLSchema) { 53 | return convertSchema(schema, true); 54 | } 55 | 56 | function makeConvertType(toStrict: boolean) { 57 | const cache = new Map(); 58 | 59 | function convertFields(fields: GraphQLFieldConfigMap) { 60 | return () => { 61 | return Object.fromEntries( 62 | Object.entries(fields).map(([fieldName, inSpec]) => { 63 | const spec = convertFieldConfig(inSpec, toStrict); 64 | return [ 65 | fieldName, 66 | { 67 | ...spec, 68 | type: convertType(spec.type), 69 | }, 70 | ]; 71 | }), 72 | ) as GraphQLFieldConfigMap; 73 | }; 74 | } 75 | 76 | function convertTypes( 77 | types: readonly GraphQLInterfaceType[] | null | undefined, 78 | ): undefined | (() => readonly GraphQLInterfaceType[]); 79 | function convertTypes( 80 | types: readonly GraphQLObjectType[], 81 | ): () => readonly GraphQLObjectType[]; 82 | function convertTypes( 83 | types: readonly GraphQLNamedType[], 84 | ): undefined | (() => readonly GraphQLNamedType[]); 85 | function convertTypes( 86 | types: readonly GraphQLNamedType[] | undefined, 87 | ): undefined | (() => readonly GraphQLNamedType[]); 88 | function convertTypes( 89 | types: readonly GraphQLNamedType[] | null | undefined, 90 | ): undefined | (() => readonly GraphQLNamedType[]) { 91 | if (!types) { 92 | return undefined; 93 | } 94 | return () => types.map((t) => convertType(t)); 95 | } 96 | 97 | function convertType(type: null | undefined): null | undefined; 98 | function convertType(type: GraphQLObjectType): GraphQLObjectType; 99 | function convertType( 100 | type: Maybe, 101 | ): Maybe; 102 | function convertType(type: GraphQLNamedType): GraphQLNamedType; 103 | function convertType(type: GraphQLType): GraphQLType; 104 | function convertType(type: GraphQLType | null | undefined) { 105 | if (!type) { 106 | return type; 107 | } 108 | if (isSemanticNonNullType(type)) { 109 | const unwrapped = convertType(type.ofType); 110 | // Here's where we do our thing! 111 | if (toStrict) { 112 | return new GraphQLNonNull(unwrapped); 113 | } else { 114 | return unwrapped; 115 | } 116 | } else if (isNonNullType(type)) { 117 | return new GraphQLNonNull( 118 | convertType(type.ofType as GraphQLNullableType), 119 | ); 120 | } else if (isListType(type)) { 121 | return new GraphQLList(convertType(type.ofType as GraphQLType)); 122 | } 123 | if (type.name.startsWith("__")) { 124 | return null; 125 | } 126 | if (cache.has(type.name)) { 127 | return cache.get(type.name); 128 | } 129 | const newType = (() => { 130 | if (isObjectType(type)) { 131 | const config = type.toConfig(); 132 | return new GraphQLObjectType({ 133 | ...config, 134 | fields: convertFields(config.fields), 135 | interfaces: convertTypes(config.interfaces), 136 | }); 137 | } else if (isInterfaceType(type)) { 138 | const config = type.toConfig(); 139 | return new GraphQLInterfaceType({ 140 | ...config, 141 | fields: convertFields(config.fields), 142 | interfaces: convertTypes(config.interfaces), 143 | }); 144 | } else if (isUnionType(type)) { 145 | const config = type.toConfig(); 146 | return new GraphQLUnionType({ 147 | ...config, 148 | types: convertTypes(config.types), 149 | }); 150 | } else { 151 | return type; 152 | } 153 | })(); 154 | cache.set(type.name, newType); 155 | return newType; 156 | } 157 | 158 | return convertType; 159 | } 160 | 161 | /** 162 | * Takes a GraphQL field config and checks to see if the `@semanticNonNull` 163 | * directive was applied; if so, converts to a field config that adds 164 | * GraphQLNonNull wrapper types in the relevant places if `toStrict` is true. 165 | * 166 | * @see {@url https://www.apollographql.com/docs/kotlin/advanced/nullability/#semanticnonnull} 167 | */ 168 | export function convertFieldConfig( 169 | spec: GraphQLFieldConfig, 170 | toStrict: boolean, 171 | ): GraphQLFieldConfig { 172 | const directive = spec.astNode?.directives?.find( 173 | (d) => d.name.value === "semanticNonNull", 174 | ); 175 | if (!directive) { 176 | return spec; 177 | } 178 | 179 | /** The AST node with the semanticNonNull directive removed */ 180 | const filteredAstNode = { 181 | ...spec.astNode!, 182 | directives: spec.astNode!.directives!.filter( 183 | (d) => d.name.value !== "semanticNonNull", 184 | ), 185 | }; 186 | 187 | const levelsArg = directive.arguments?.find((a) => a.name.value === "levels"); 188 | const levels = 189 | levelsArg?.value?.kind === Kind.LIST 190 | ? levelsArg.value.values 191 | .filter((v) => v.kind === Kind.INT) 192 | .map((v) => Number(v.value)) 193 | : [0]; 194 | function recurse(type: GraphQLOutputType, level: number): GraphQLOutputType { 195 | if (isSemanticNonNullType(type)) { 196 | // Strip semantic-non-null types; this should never happen but if someone 197 | // uses both semantic-non-null and the `@semanticNonNull` directive, we 198 | // want the directive to win (I guess?) 199 | return recurse(type.ofType, level); 200 | } else if (isNonNullType(type)) { 201 | const inner = recurse(type.ofType, level); 202 | if (isNonNullType(inner)) { 203 | return inner; 204 | } else { 205 | // Carry the non-null through no matter what semantic says 206 | return new GraphQLNonNull(inner); 207 | } 208 | } else if (isListType(type)) { 209 | const inner = new GraphQLList(recurse(type.ofType, level + 1)); 210 | if (toStrict && levels.includes(level)) { 211 | return new GraphQLNonNull(inner); 212 | } else { 213 | return inner; 214 | } 215 | } else { 216 | if (toStrict && levels.includes(level)) { 217 | return new GraphQLNonNull(type); 218 | } else { 219 | return type; 220 | } 221 | } 222 | } 223 | 224 | return { 225 | ...spec, 226 | type: recurse(spec.type, 0), 227 | astNode: filteredAstNode, 228 | }; 229 | } 230 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GraphQL SOCK 2 | 3 | SOCK: **Semantic Output Conversion Kit** - converting semantic-nullability 4 | schemas into traditional schemas to support existing tooling (e.g. codegen). 5 | 6 | ## What is it? 7 | 8 | **Takes as input a GraphQL SDL and outputs a derived SDL wherein all 9 | semantic-non-null type modifiers have either been removed (semantic to nullable) 10 | or have been replaced with strict (traditional) non-null modifiers (semantic to 11 | strict).** 12 | 13 | ### Semantic nullability 14 | 15 | In the latest proposals around semantic nullability, we introduce a new 16 | "Semantic Non Null" type modifier that means that the value is "null only on 17 | error" (i.e. it will never be `null` unless an error has occurred). However, not 18 | all tools support this yet, so this library contains tools to convert a schema 19 | or SDL that supports semantic nullability into a more traditional one, to be 20 | used for code generation and other such functionality. 21 | 22 | Which command you use will depend on your setup; if you're using a client that 23 | prevents you from reading error nulls (e.g. by throwing when you read from an 24 | errored field like [`graphql-toe`](https://github.com/graphile/graphql-toe) 25 | does, or otherwise) then you'll want `semantic-to-strict` to really capitalize 26 | on the benefits of semantic nullability. 27 | 28 | If you just want to use a semantic nullability SDL with traditional tools and 29 | clients that don't yet understand semantic nullability, then 30 | `semantic-to-nullable` will just strip out the semantic-non-null types for you. 31 | 32 | This library supports both the `@semanticNonNull` directive (which should work 33 | universally, but is likely to be a temporary placeholder), and the 34 | `GraphQLSemanticNonNull` wrapper type (if your version of GraphQL.js supports 35 | it, otherwise it will degrade gracefully to only supporting the directive). 36 | 37 | ### `@semanticNonNull` directive 38 | 39 | For the directive, the two conversions work like this: 40 | 41 | | Mode | Input type | Output type | 42 | | -------------------- | --------------------------------------- | ----------- | 43 | | semantic-to-nullable | `Int @semanticNonNull` | `Int` | 44 | | semantic-to-strict | `Int @semanticNonNull` | `Int!` | 45 | | semantic-to-nullable | `[Int] @semanticNonNull(levels: [1])` | `[Int]` | 46 | | semantic-to-strict | `[Int] @semanticNonNull(levels: [1])` | `[Int!]` | 47 | | semantic-to-nullable | `[Int] @semanticNonNull(levels: [0,1])` | `[Int]` | 48 | | semantic-to-strict | `[Int] @semanticNonNull(levels: [0,1])` | `[Int!]!` | 49 | 50 | > [!NOTE] 51 | > 52 | > An existing strictly non-nullable type (`Int!`) will remain unchanged whether 53 | > or not `@semanticNonNull` applies to that level. 54 | 55 | ### `GraphQLSemanticNonNull` wrapper type 56 | 57 | How the `GraphQLSemanticNonNull` type is represented syntactically in SDL is yet 58 | to be determined by the working group, but this library doesn't care about that 59 | since it uses the schema directly. For the sake of this README we'll use the 60 | originally proposed 61 | [asterisk syntax](https://github.com/graphql/graphql-spec/pull/1065). 62 | 63 | The above examples using asterisk syntax would be: 64 | 65 | | Mode | Input type | Output type | 66 | | -------------------- | ---------- | ----------- | 67 | | semantic-to-nullable | `Int*` | `Int` | 68 | | semantic-to-strict | `Int*` | `Int!` | 69 | | semantic-to-nullable | `[Int*]` | `[Int]` | 70 | | semantic-to-strict | `[Int*]` | `[Int!]` | 71 | | semantic-to-nullable | `[Int*]*` | `[Int]` | 72 | | semantic-to-strict | `[Int*]*` | `[Int!]!` | 73 | 74 | ## Installation 75 | 76 | You must install both `graphql-sock` and `graphql`; pick the line that relates 77 | to your package manager: 78 | 79 | ```bash 80 | npm install --save graphql-sock graphql 81 | yarn add graphql-sock graphql 82 | pnpm install --save graphql-sock graphql 83 | ``` 84 | 85 | > [!NOTE] 86 | > 87 | > To support the `*` syntax, install `graphql@canary-pr-4192` 88 | 89 | ## Usage 90 | 91 | Consider this "input schema" which uses both the `@semanticNonNull` directive 92 | and the `*` syntax (for syntax support, you will need to be running a 93 | [compatible version of graphql.js](https://github.com/graphql/graphql-js/pull/4192#issuecomment-2351103549)): 94 | 95 | ### Input schema 96 | 97 | ```graphql 98 | directive @semanticNonNull(levels: [Int!]! = [0]) on FIELD_DEFINITION 99 | 100 | type Query { 101 | someList: [Int] @semanticNonNull(levels: [0, 1]) 102 | someOtherList: [String*]* 103 | } 104 | ``` 105 | 106 | ### Semantic to nullable 107 | 108 | **If a value is "null only on error" then it _can_ be null.** 109 | 110 | This conversion strips all semantic-non-null type wrappers from the SDL, making 111 | a schema that appears as it traditionally would. This means that you won't reap 112 | any of the benefits of semantic nullability, but you can support existing tools 113 | and clients without needing to update their code. 114 | 115 | #### Output schema 116 | 117 | The input schema would have all the semantic non-null types removed: 118 | 119 | ```graphql 120 | type Query { 121 | someList: [Int] 122 | someOtherList: [String] 123 | } 124 | ``` 125 | 126 | #### CLI 127 | 128 | From the CLI, use the `semantic-to-nullable` command to convert an SDL with 129 | semantic nullability into an SDL without semantic nullability, where all 130 | semantic non-null positions have been removed: 131 | 132 | ``` 133 | semantic-to-nullable -i input.graphql -o output.graphql 134 | ``` 135 | 136 | #### Library 137 | 138 | Use the `semanticToNullable` export to create a copy of a schema with all the 139 | semantic non-null types removed: 140 | 141 | ```ts 142 | import { semanticToNullable } from "graphql-sock"; 143 | import { sourceSchema as inputSchema } from "./my-schema"; 144 | 145 | export const outputSchema = semanticToNullable(inputSchema); 146 | ``` 147 | 148 | ### Semantic to strict 149 | 150 | **Error handling clients prevent users from reading "error-nulls" (e.g. by 151 | throwing an error), so semantically non-nullable positions are non-nullable for 152 | these clients.** 153 | 154 | If you're using "Throw On Error" (e.g. via 155 | [graphql-toe](https://github.com/graphile/graphql-toe)) or a similar technique 156 | then when you read from an errored field an error will be thrown, preventing you 157 | from reading the underlying `null`. 158 | 159 | **Think of semantically non-null fields as "null only on error;" if you throw on 160 | errors, then they're never null!** 161 | 162 | As such, this position becomes equivalent to a traditional non-null for you, so 163 | this conversion converts all semantic-non-null type wrappers into traditional 164 | (strict) non-null wrappers. Your type generators can therefore generate fewer 165 | nullables, and your frontend engineers have to do fewer null checks and are 166 | therefore happier. 167 | 168 | #### Output schema 169 | 170 | The input schema would become: 171 | 172 | ```graphql 173 | type Query { 174 | someList: [Int!]! 175 | someOtherList: [String!]! 176 | } 177 | ``` 178 | 179 | #### CLI 180 | 181 | From the CLI, use the `semantic-to-strict` command to convert an SDL with 182 | semantic nullability into an SDL without semantic nullability, where all 183 | semantic non-null positions have become strictly non-null: 184 | 185 | ``` 186 | semantic-to-strict -i input.graphql -o output.graphql 187 | ``` 188 | 189 | #### Library 190 | 191 | Use the `semanticToStrict` export to create a copy of a schema with all the 192 | semantic non-null types replaced with strict (traditional) non-null types: 193 | 194 | ```ts 195 | import { semanticToStrict } from "graphql-sock"; 196 | import { schema as sourceSchema } from "./my-schema"; 197 | 198 | export const schema = semanticToStrict(sourceSchema); 199 | ``` 200 | 201 | ## Advanced usage 202 | 203 | If you just want to convert a single `GraphQLFieldConfig` you can use the 204 | `convertFieldConfig` method, passing the field config and `true` to convert 205 | semantic non-null positions to strict non-nulls, or `false` if you want to 206 | convert to nullable: 207 | 208 | ```ts 209 | const strictFieldConfig = convertFieldConfig(fieldConfig, true); 210 | const nullableFieldConfig = convertFieldConfig(fieldConfig, false); 211 | ``` 212 | 213 | > [!NOTE] 214 | > 215 | > This method assumes that the fieldConfig has come from parsing an SDL string, 216 | > and thus has an `astNode` that includes a `@semanticNonNull` directive. 217 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": 6 | version "4.4.0" 7 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" 8 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== 9 | dependencies: 10 | eslint-visitor-keys "^3.3.0" 11 | 12 | "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": 13 | version "4.11.1" 14 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" 15 | integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== 16 | 17 | "@eslint/eslintrc@^2.1.4": 18 | version "2.1.4" 19 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" 20 | integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== 21 | dependencies: 22 | ajv "^6.12.4" 23 | debug "^4.3.2" 24 | espree "^9.6.0" 25 | globals "^13.19.0" 26 | ignore "^5.2.0" 27 | import-fresh "^3.2.1" 28 | js-yaml "^4.1.0" 29 | minimatch "^3.1.2" 30 | strip-json-comments "^3.1.1" 31 | 32 | "@eslint/js@8.57.1": 33 | version "8.57.1" 34 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" 35 | integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== 36 | 37 | "@humanwhocodes/config-array@^0.13.0": 38 | version "0.13.0" 39 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" 40 | integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== 41 | dependencies: 42 | "@humanwhocodes/object-schema" "^2.0.3" 43 | debug "^4.3.1" 44 | minimatch "^3.0.5" 45 | 46 | "@humanwhocodes/module-importer@^1.0.1": 47 | version "1.0.1" 48 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 49 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 50 | 51 | "@humanwhocodes/object-schema@^2.0.3": 52 | version "2.0.3" 53 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" 54 | integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== 55 | 56 | "@nodelib/fs.scandir@2.1.5": 57 | version "2.1.5" 58 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 59 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 60 | dependencies: 61 | "@nodelib/fs.stat" "2.0.5" 62 | run-parallel "^1.1.9" 63 | 64 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 65 | version "2.0.5" 66 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 67 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 68 | 69 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": 70 | version "1.2.8" 71 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 72 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 73 | dependencies: 74 | "@nodelib/fs.scandir" "2.1.5" 75 | fastq "^1.6.0" 76 | 77 | "@rtsao/scc@^1.1.0": 78 | version "1.1.0" 79 | resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" 80 | integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== 81 | 82 | "@tsconfig/recommended@^1.0.7": 83 | version "1.0.7" 84 | resolved "https://registry.yarnpkg.com/@tsconfig/recommended/-/recommended-1.0.7.tgz#fdd95fc2c8d643c8b4a8ca45fd68eea248512407" 85 | integrity sha512-xiNMgCuoy4mCL4JTywk9XFs5xpRUcKxtWEcMR6FNMtsgewYTIgIR+nvlP4A4iRCAzRsHMnPhvTRrzp4AGcRTEA== 86 | 87 | "@types/json-schema@^7.0.12": 88 | version "7.0.15" 89 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" 90 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 91 | 92 | "@types/json5@^0.0.29": 93 | version "0.0.29" 94 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 95 | integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== 96 | 97 | "@types/node@^22.5.4": 98 | version "22.5.5" 99 | resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.5.tgz#52f939dd0f65fc552a4ad0b392f3c466cc5d7a44" 100 | integrity sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA== 101 | dependencies: 102 | undici-types "~6.19.2" 103 | 104 | "@types/semver@^7.5.0": 105 | version "7.5.8" 106 | resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" 107 | integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== 108 | 109 | "@typescript-eslint/eslint-plugin@^6.8.0": 110 | version "6.21.0" 111 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" 112 | integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== 113 | dependencies: 114 | "@eslint-community/regexpp" "^4.5.1" 115 | "@typescript-eslint/scope-manager" "6.21.0" 116 | "@typescript-eslint/type-utils" "6.21.0" 117 | "@typescript-eslint/utils" "6.21.0" 118 | "@typescript-eslint/visitor-keys" "6.21.0" 119 | debug "^4.3.4" 120 | graphemer "^1.4.0" 121 | ignore "^5.2.4" 122 | natural-compare "^1.4.0" 123 | semver "^7.5.4" 124 | ts-api-utils "^1.0.1" 125 | 126 | "@typescript-eslint/parser@^6.8.0": 127 | version "6.21.0" 128 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" 129 | integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== 130 | dependencies: 131 | "@typescript-eslint/scope-manager" "6.21.0" 132 | "@typescript-eslint/types" "6.21.0" 133 | "@typescript-eslint/typescript-estree" "6.21.0" 134 | "@typescript-eslint/visitor-keys" "6.21.0" 135 | debug "^4.3.4" 136 | 137 | "@typescript-eslint/scope-manager@6.21.0": 138 | version "6.21.0" 139 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" 140 | integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== 141 | dependencies: 142 | "@typescript-eslint/types" "6.21.0" 143 | "@typescript-eslint/visitor-keys" "6.21.0" 144 | 145 | "@typescript-eslint/type-utils@6.21.0": 146 | version "6.21.0" 147 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" 148 | integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== 149 | dependencies: 150 | "@typescript-eslint/typescript-estree" "6.21.0" 151 | "@typescript-eslint/utils" "6.21.0" 152 | debug "^4.3.4" 153 | ts-api-utils "^1.0.1" 154 | 155 | "@typescript-eslint/types@6.21.0": 156 | version "6.21.0" 157 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" 158 | integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== 159 | 160 | "@typescript-eslint/typescript-estree@6.21.0": 161 | version "6.21.0" 162 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" 163 | integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== 164 | dependencies: 165 | "@typescript-eslint/types" "6.21.0" 166 | "@typescript-eslint/visitor-keys" "6.21.0" 167 | debug "^4.3.4" 168 | globby "^11.1.0" 169 | is-glob "^4.0.3" 170 | minimatch "9.0.3" 171 | semver "^7.5.4" 172 | ts-api-utils "^1.0.1" 173 | 174 | "@typescript-eslint/utils@6.21.0": 175 | version "6.21.0" 176 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" 177 | integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== 178 | dependencies: 179 | "@eslint-community/eslint-utils" "^4.4.0" 180 | "@types/json-schema" "^7.0.12" 181 | "@types/semver" "^7.5.0" 182 | "@typescript-eslint/scope-manager" "6.21.0" 183 | "@typescript-eslint/types" "6.21.0" 184 | "@typescript-eslint/typescript-estree" "6.21.0" 185 | semver "^7.5.4" 186 | 187 | "@typescript-eslint/visitor-keys@6.21.0": 188 | version "6.21.0" 189 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" 190 | integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== 191 | dependencies: 192 | "@typescript-eslint/types" "6.21.0" 193 | eslint-visitor-keys "^3.4.1" 194 | 195 | "@ungap/structured-clone@^1.2.0": 196 | version "1.2.0" 197 | resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" 198 | integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== 199 | 200 | acorn-jsx@^5.3.2: 201 | version "5.3.2" 202 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 203 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 204 | 205 | acorn@^8.9.0: 206 | version "8.12.1" 207 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" 208 | integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== 209 | 210 | ajv@^6.12.4: 211 | version "6.12.6" 212 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 213 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 214 | dependencies: 215 | fast-deep-equal "^3.1.1" 216 | fast-json-stable-stringify "^2.0.0" 217 | json-schema-traverse "^0.4.1" 218 | uri-js "^4.2.2" 219 | 220 | ansi-regex@^5.0.1: 221 | version "5.0.1" 222 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 223 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 224 | 225 | ansi-styles@^4.1.0: 226 | version "4.3.0" 227 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 228 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 229 | dependencies: 230 | color-convert "^2.0.1" 231 | 232 | argparse@^2.0.1: 233 | version "2.0.1" 234 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 235 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 236 | 237 | array-buffer-byte-length@^1.0.1: 238 | version "1.0.1" 239 | resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" 240 | integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== 241 | dependencies: 242 | call-bind "^1.0.5" 243 | is-array-buffer "^3.0.4" 244 | 245 | array-includes@^3.1.8: 246 | version "3.1.8" 247 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" 248 | integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== 249 | dependencies: 250 | call-bind "^1.0.7" 251 | define-properties "^1.2.1" 252 | es-abstract "^1.23.2" 253 | es-object-atoms "^1.0.0" 254 | get-intrinsic "^1.2.4" 255 | is-string "^1.0.7" 256 | 257 | array-union@^2.1.0: 258 | version "2.1.0" 259 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 260 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 261 | 262 | array.prototype.findlastindex@^1.2.5: 263 | version "1.2.5" 264 | resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" 265 | integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== 266 | dependencies: 267 | call-bind "^1.0.7" 268 | define-properties "^1.2.1" 269 | es-abstract "^1.23.2" 270 | es-errors "^1.3.0" 271 | es-object-atoms "^1.0.0" 272 | es-shim-unscopables "^1.0.2" 273 | 274 | array.prototype.flat@^1.3.2: 275 | version "1.3.2" 276 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" 277 | integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== 278 | dependencies: 279 | call-bind "^1.0.2" 280 | define-properties "^1.2.0" 281 | es-abstract "^1.22.1" 282 | es-shim-unscopables "^1.0.0" 283 | 284 | array.prototype.flatmap@^1.3.2: 285 | version "1.3.2" 286 | resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" 287 | integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== 288 | dependencies: 289 | call-bind "^1.0.2" 290 | define-properties "^1.2.0" 291 | es-abstract "^1.22.1" 292 | es-shim-unscopables "^1.0.0" 293 | 294 | arraybuffer.prototype.slice@^1.0.3: 295 | version "1.0.3" 296 | resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" 297 | integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== 298 | dependencies: 299 | array-buffer-byte-length "^1.0.1" 300 | call-bind "^1.0.5" 301 | define-properties "^1.2.1" 302 | es-abstract "^1.22.3" 303 | es-errors "^1.2.1" 304 | get-intrinsic "^1.2.3" 305 | is-array-buffer "^3.0.4" 306 | is-shared-array-buffer "^1.0.2" 307 | 308 | available-typed-arrays@^1.0.7: 309 | version "1.0.7" 310 | resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" 311 | integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== 312 | dependencies: 313 | possible-typed-array-names "^1.0.0" 314 | 315 | balanced-match@^1.0.0: 316 | version "1.0.2" 317 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 318 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 319 | 320 | brace-expansion@^1.1.7: 321 | version "1.1.11" 322 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 323 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 324 | dependencies: 325 | balanced-match "^1.0.0" 326 | concat-map "0.0.1" 327 | 328 | brace-expansion@^2.0.1: 329 | version "2.0.1" 330 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 331 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 332 | dependencies: 333 | balanced-match "^1.0.0" 334 | 335 | braces@^3.0.3: 336 | version "3.0.3" 337 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 338 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 339 | dependencies: 340 | fill-range "^7.1.1" 341 | 342 | call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: 343 | version "1.0.7" 344 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" 345 | integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== 346 | dependencies: 347 | es-define-property "^1.0.0" 348 | es-errors "^1.3.0" 349 | function-bind "^1.1.2" 350 | get-intrinsic "^1.2.4" 351 | set-function-length "^1.2.1" 352 | 353 | callsites@^3.0.0: 354 | version "3.1.0" 355 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 356 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 357 | 358 | chalk@^4.0.0: 359 | version "4.1.2" 360 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 361 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 362 | dependencies: 363 | ansi-styles "^4.1.0" 364 | supports-color "^7.1.0" 365 | 366 | color-convert@^2.0.1: 367 | version "2.0.1" 368 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 369 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 370 | dependencies: 371 | color-name "~1.1.4" 372 | 373 | color-name@~1.1.4: 374 | version "1.1.4" 375 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 376 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 377 | 378 | concat-map@0.0.1: 379 | version "0.0.1" 380 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 381 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 382 | 383 | core_d@^6.0.0: 384 | version "6.1.0" 385 | resolved "https://registry.yarnpkg.com/core_d/-/core_d-6.1.0.tgz#a288dc94eb85261cf444357c92fc5fafd7eab96d" 386 | integrity sha512-vYgenhJ8CYCj+7LPbPdyFo2u0Doavfbi/vhFpR/BsW9/iUAhuKd+sw2l4CHXhaXIo4/058p2nlsAtbL7iswm5A== 387 | dependencies: 388 | supports-color "^8.1.0" 389 | 390 | cross-spawn@^7.0.2: 391 | version "7.0.3" 392 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 393 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 394 | dependencies: 395 | path-key "^3.1.0" 396 | shebang-command "^2.0.0" 397 | which "^2.0.1" 398 | 399 | data-view-buffer@^1.0.1: 400 | version "1.0.1" 401 | resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" 402 | integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== 403 | dependencies: 404 | call-bind "^1.0.6" 405 | es-errors "^1.3.0" 406 | is-data-view "^1.0.1" 407 | 408 | data-view-byte-length@^1.0.1: 409 | version "1.0.1" 410 | resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" 411 | integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== 412 | dependencies: 413 | call-bind "^1.0.7" 414 | es-errors "^1.3.0" 415 | is-data-view "^1.0.1" 416 | 417 | data-view-byte-offset@^1.0.0: 418 | version "1.0.0" 419 | resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" 420 | integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== 421 | dependencies: 422 | call-bind "^1.0.6" 423 | es-errors "^1.3.0" 424 | is-data-view "^1.0.1" 425 | 426 | debug@^3.2.7: 427 | version "3.2.7" 428 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 429 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 430 | dependencies: 431 | ms "^2.1.1" 432 | 433 | debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: 434 | version "4.3.7" 435 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" 436 | integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== 437 | dependencies: 438 | ms "^2.1.3" 439 | 440 | deep-is@^0.1.3: 441 | version "0.1.4" 442 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 443 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 444 | 445 | define-data-property@^1.0.1, define-data-property@^1.1.4: 446 | version "1.1.4" 447 | resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" 448 | integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== 449 | dependencies: 450 | es-define-property "^1.0.0" 451 | es-errors "^1.3.0" 452 | gopd "^1.0.1" 453 | 454 | define-properties@^1.2.0, define-properties@^1.2.1: 455 | version "1.2.1" 456 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" 457 | integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== 458 | dependencies: 459 | define-data-property "^1.0.1" 460 | has-property-descriptors "^1.0.0" 461 | object-keys "^1.1.1" 462 | 463 | dir-glob@^3.0.1: 464 | version "3.0.1" 465 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 466 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 467 | dependencies: 468 | path-type "^4.0.0" 469 | 470 | doctrine@^2.1.0: 471 | version "2.1.0" 472 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 473 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 474 | dependencies: 475 | esutils "^2.0.2" 476 | 477 | doctrine@^3.0.0: 478 | version "3.0.0" 479 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 480 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 481 | dependencies: 482 | esutils "^2.0.2" 483 | 484 | es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: 485 | version "1.23.3" 486 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" 487 | integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== 488 | dependencies: 489 | array-buffer-byte-length "^1.0.1" 490 | arraybuffer.prototype.slice "^1.0.3" 491 | available-typed-arrays "^1.0.7" 492 | call-bind "^1.0.7" 493 | data-view-buffer "^1.0.1" 494 | data-view-byte-length "^1.0.1" 495 | data-view-byte-offset "^1.0.0" 496 | es-define-property "^1.0.0" 497 | es-errors "^1.3.0" 498 | es-object-atoms "^1.0.0" 499 | es-set-tostringtag "^2.0.3" 500 | es-to-primitive "^1.2.1" 501 | function.prototype.name "^1.1.6" 502 | get-intrinsic "^1.2.4" 503 | get-symbol-description "^1.0.2" 504 | globalthis "^1.0.3" 505 | gopd "^1.0.1" 506 | has-property-descriptors "^1.0.2" 507 | has-proto "^1.0.3" 508 | has-symbols "^1.0.3" 509 | hasown "^2.0.2" 510 | internal-slot "^1.0.7" 511 | is-array-buffer "^3.0.4" 512 | is-callable "^1.2.7" 513 | is-data-view "^1.0.1" 514 | is-negative-zero "^2.0.3" 515 | is-regex "^1.1.4" 516 | is-shared-array-buffer "^1.0.3" 517 | is-string "^1.0.7" 518 | is-typed-array "^1.1.13" 519 | is-weakref "^1.0.2" 520 | object-inspect "^1.13.1" 521 | object-keys "^1.1.1" 522 | object.assign "^4.1.5" 523 | regexp.prototype.flags "^1.5.2" 524 | safe-array-concat "^1.1.2" 525 | safe-regex-test "^1.0.3" 526 | string.prototype.trim "^1.2.9" 527 | string.prototype.trimend "^1.0.8" 528 | string.prototype.trimstart "^1.0.8" 529 | typed-array-buffer "^1.0.2" 530 | typed-array-byte-length "^1.0.1" 531 | typed-array-byte-offset "^1.0.2" 532 | typed-array-length "^1.0.6" 533 | unbox-primitive "^1.0.2" 534 | which-typed-array "^1.1.15" 535 | 536 | es-define-property@^1.0.0: 537 | version "1.0.0" 538 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" 539 | integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== 540 | dependencies: 541 | get-intrinsic "^1.2.4" 542 | 543 | es-errors@^1.2.1, es-errors@^1.3.0: 544 | version "1.3.0" 545 | resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" 546 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 547 | 548 | es-object-atoms@^1.0.0: 549 | version "1.0.0" 550 | resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" 551 | integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== 552 | dependencies: 553 | es-errors "^1.3.0" 554 | 555 | es-set-tostringtag@^2.0.3: 556 | version "2.0.3" 557 | resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" 558 | integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== 559 | dependencies: 560 | get-intrinsic "^1.2.4" 561 | has-tostringtag "^1.0.2" 562 | hasown "^2.0.1" 563 | 564 | es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: 565 | version "1.0.2" 566 | resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" 567 | integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== 568 | dependencies: 569 | hasown "^2.0.0" 570 | 571 | es-to-primitive@^1.2.1: 572 | version "1.2.1" 573 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 574 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 575 | dependencies: 576 | is-callable "^1.1.4" 577 | is-date-object "^1.0.1" 578 | is-symbol "^1.0.2" 579 | 580 | escape-string-regexp@^4.0.0: 581 | version "4.0.0" 582 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 583 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 584 | 585 | eslint-config-prettier@^9.0.0: 586 | version "9.1.0" 587 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" 588 | integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== 589 | 590 | eslint-import-resolver-node@^0.3.9: 591 | version "0.3.9" 592 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" 593 | integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== 594 | dependencies: 595 | debug "^3.2.7" 596 | is-core-module "^2.13.0" 597 | resolve "^1.22.4" 598 | 599 | eslint-module-utils@^2.9.0: 600 | version "2.11.1" 601 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.11.1.tgz#6d5a05f09af98f4d238a819ae4c23626a75fa65b" 602 | integrity sha512-EwcbfLOhwVMAfatfqLecR2yv3dE5+kQ8kx+Rrt0DvDXEVwW86KQ/xbMDQhtp5l42VXukD5SOF8mQQHbaNtO0CQ== 603 | dependencies: 604 | debug "^3.2.7" 605 | 606 | eslint-plugin-import@^2.28.1: 607 | version "2.30.0" 608 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449" 609 | integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw== 610 | dependencies: 611 | "@rtsao/scc" "^1.1.0" 612 | array-includes "^3.1.8" 613 | array.prototype.findlastindex "^1.2.5" 614 | array.prototype.flat "^1.3.2" 615 | array.prototype.flatmap "^1.3.2" 616 | debug "^3.2.7" 617 | doctrine "^2.1.0" 618 | eslint-import-resolver-node "^0.3.9" 619 | eslint-module-utils "^2.9.0" 620 | hasown "^2.0.2" 621 | is-core-module "^2.15.1" 622 | is-glob "^4.0.3" 623 | minimatch "^3.1.2" 624 | object.fromentries "^2.0.8" 625 | object.groupby "^1.0.3" 626 | object.values "^1.2.0" 627 | semver "^6.3.1" 628 | tsconfig-paths "^3.15.0" 629 | 630 | eslint-plugin-simple-import-sort@^10.0.0: 631 | version "10.0.0" 632 | resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz#cc4ceaa81ba73252427062705b64321946f61351" 633 | integrity sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw== 634 | 635 | eslint-scope@^7.2.2: 636 | version "7.2.2" 637 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" 638 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== 639 | dependencies: 640 | esrecurse "^4.3.0" 641 | estraverse "^5.2.0" 642 | 643 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: 644 | version "3.4.3" 645 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 646 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 647 | 648 | eslint@^8.50.0, eslint@^8.51.0: 649 | version "8.57.1" 650 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" 651 | integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== 652 | dependencies: 653 | "@eslint-community/eslint-utils" "^4.2.0" 654 | "@eslint-community/regexpp" "^4.6.1" 655 | "@eslint/eslintrc" "^2.1.4" 656 | "@eslint/js" "8.57.1" 657 | "@humanwhocodes/config-array" "^0.13.0" 658 | "@humanwhocodes/module-importer" "^1.0.1" 659 | "@nodelib/fs.walk" "^1.2.8" 660 | "@ungap/structured-clone" "^1.2.0" 661 | ajv "^6.12.4" 662 | chalk "^4.0.0" 663 | cross-spawn "^7.0.2" 664 | debug "^4.3.2" 665 | doctrine "^3.0.0" 666 | escape-string-regexp "^4.0.0" 667 | eslint-scope "^7.2.2" 668 | eslint-visitor-keys "^3.4.3" 669 | espree "^9.6.1" 670 | esquery "^1.4.2" 671 | esutils "^2.0.2" 672 | fast-deep-equal "^3.1.3" 673 | file-entry-cache "^6.0.1" 674 | find-up "^5.0.0" 675 | glob-parent "^6.0.2" 676 | globals "^13.19.0" 677 | graphemer "^1.4.0" 678 | ignore "^5.2.0" 679 | imurmurhash "^0.1.4" 680 | is-glob "^4.0.0" 681 | is-path-inside "^3.0.3" 682 | js-yaml "^4.1.0" 683 | json-stable-stringify-without-jsonify "^1.0.1" 684 | levn "^0.4.1" 685 | lodash.merge "^4.6.2" 686 | minimatch "^3.1.2" 687 | natural-compare "^1.4.0" 688 | optionator "^0.9.3" 689 | strip-ansi "^6.0.1" 690 | text-table "^0.2.0" 691 | 692 | eslint_d@^13.0.0: 693 | version "13.1.2" 694 | resolved "https://registry.yarnpkg.com/eslint_d/-/eslint_d-13.1.2.tgz#08b20e2540f8f2755a14a7690ed50ce80565a673" 695 | integrity sha512-kRQ6oxtY9TL+NtHaLrPPmqHmZ4bY9iE+A2LACQ9CMzzbatZbIXq55X8Tz76KaTlH2NQ1F2vccQ8UEKvL49zPOg== 696 | dependencies: 697 | core_d "^6.0.0" 698 | eslint "^8.50.0" 699 | nanolru "^1.0.0" 700 | optionator "^0.9.3" 701 | 702 | espree@^9.6.0, espree@^9.6.1: 703 | version "9.6.1" 704 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" 705 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== 706 | dependencies: 707 | acorn "^8.9.0" 708 | acorn-jsx "^5.3.2" 709 | eslint-visitor-keys "^3.4.1" 710 | 711 | esquery@^1.4.2: 712 | version "1.6.0" 713 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" 714 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== 715 | dependencies: 716 | estraverse "^5.1.0" 717 | 718 | esrecurse@^4.3.0: 719 | version "4.3.0" 720 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 721 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 722 | dependencies: 723 | estraverse "^5.2.0" 724 | 725 | estraverse@^5.1.0, estraverse@^5.2.0: 726 | version "5.3.0" 727 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 728 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 729 | 730 | esutils@^2.0.2: 731 | version "2.0.3" 732 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 733 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 734 | 735 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 736 | version "3.1.3" 737 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 738 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 739 | 740 | fast-glob@^3.2.9: 741 | version "3.3.2" 742 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" 743 | integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== 744 | dependencies: 745 | "@nodelib/fs.stat" "^2.0.2" 746 | "@nodelib/fs.walk" "^1.2.3" 747 | glob-parent "^5.1.2" 748 | merge2 "^1.3.0" 749 | micromatch "^4.0.4" 750 | 751 | fast-json-stable-stringify@^2.0.0: 752 | version "2.1.0" 753 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 754 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 755 | 756 | fast-levenshtein@^2.0.6: 757 | version "2.0.6" 758 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 759 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 760 | 761 | fastq@^1.6.0: 762 | version "1.17.1" 763 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" 764 | integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== 765 | dependencies: 766 | reusify "^1.0.4" 767 | 768 | file-entry-cache@^6.0.1: 769 | version "6.0.1" 770 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 771 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 772 | dependencies: 773 | flat-cache "^3.0.4" 774 | 775 | fill-range@^7.1.1: 776 | version "7.1.1" 777 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 778 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 779 | dependencies: 780 | to-regex-range "^5.0.1" 781 | 782 | find-up@^5.0.0: 783 | version "5.0.0" 784 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 785 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 786 | dependencies: 787 | locate-path "^6.0.0" 788 | path-exists "^4.0.0" 789 | 790 | flat-cache@^3.0.4: 791 | version "3.2.0" 792 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" 793 | integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== 794 | dependencies: 795 | flatted "^3.2.9" 796 | keyv "^4.5.3" 797 | rimraf "^3.0.2" 798 | 799 | flatted@^3.2.9: 800 | version "3.3.1" 801 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" 802 | integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== 803 | 804 | for-each@^0.3.3: 805 | version "0.3.3" 806 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 807 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 808 | dependencies: 809 | is-callable "^1.1.3" 810 | 811 | fs.realpath@^1.0.0: 812 | version "1.0.0" 813 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 814 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 815 | 816 | function-bind@^1.1.2: 817 | version "1.1.2" 818 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 819 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 820 | 821 | function.prototype.name@^1.1.6: 822 | version "1.1.6" 823 | resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" 824 | integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== 825 | dependencies: 826 | call-bind "^1.0.2" 827 | define-properties "^1.2.0" 828 | es-abstract "^1.22.1" 829 | functions-have-names "^1.2.3" 830 | 831 | functions-have-names@^1.2.3: 832 | version "1.2.3" 833 | resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" 834 | integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== 835 | 836 | get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: 837 | version "1.2.4" 838 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" 839 | integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== 840 | dependencies: 841 | es-errors "^1.3.0" 842 | function-bind "^1.1.2" 843 | has-proto "^1.0.1" 844 | has-symbols "^1.0.3" 845 | hasown "^2.0.0" 846 | 847 | get-symbol-description@^1.0.2: 848 | version "1.0.2" 849 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" 850 | integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== 851 | dependencies: 852 | call-bind "^1.0.5" 853 | es-errors "^1.3.0" 854 | get-intrinsic "^1.2.4" 855 | 856 | glob-parent@^5.1.2: 857 | version "5.1.2" 858 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 859 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 860 | dependencies: 861 | is-glob "^4.0.1" 862 | 863 | glob-parent@^6.0.2: 864 | version "6.0.2" 865 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 866 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 867 | dependencies: 868 | is-glob "^4.0.3" 869 | 870 | glob@^7.1.3: 871 | version "7.2.3" 872 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 873 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 874 | dependencies: 875 | fs.realpath "^1.0.0" 876 | inflight "^1.0.4" 877 | inherits "2" 878 | minimatch "^3.1.1" 879 | once "^1.3.0" 880 | path-is-absolute "^1.0.0" 881 | 882 | globals@^13.19.0: 883 | version "13.24.0" 884 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" 885 | integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== 886 | dependencies: 887 | type-fest "^0.20.2" 888 | 889 | globalthis@^1.0.3: 890 | version "1.0.4" 891 | resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" 892 | integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== 893 | dependencies: 894 | define-properties "^1.2.1" 895 | gopd "^1.0.1" 896 | 897 | globby@^11.1.0: 898 | version "11.1.0" 899 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 900 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 901 | dependencies: 902 | array-union "^2.1.0" 903 | dir-glob "^3.0.1" 904 | fast-glob "^3.2.9" 905 | ignore "^5.2.0" 906 | merge2 "^1.4.1" 907 | slash "^3.0.0" 908 | 909 | gopd@^1.0.1: 910 | version "1.0.1" 911 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 912 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 913 | dependencies: 914 | get-intrinsic "^1.1.3" 915 | 916 | graphemer@^1.4.0: 917 | version "1.4.0" 918 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" 919 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 920 | 921 | "graphql-pr-4192@npm:graphql@16.9.0-canary.pr.4192.1813397076f44a55e5798478e7321db9877de97a": 922 | version "16.9.0-canary.pr.4192.1813397076f44a55e5798478e7321db9877de97a" 923 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.9.0-canary.pr.4192.1813397076f44a55e5798478e7321db9877de97a.tgz#c5bbcdb258959b98352bcd9ea7f17790647113ae" 924 | integrity sha512-P8UYoxSUI1KGr9O5f+AMA3TuLYxOcELoQebxGrnVAIUHM6HCpiLDT+CylrBWEBmvcc7S0xRFRiwvgwzChzLTyQ== 925 | 926 | "graphql15@npm:graphql@15.x": 927 | version "15.10.1" 928 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.10.1.tgz#e9ff3bb928749275477f748b14aa5c30dcad6f2f" 929 | integrity sha512-BL/Xd/T9baO6NFzoMpiMD7YUZ62R6viR5tp/MULVEnbYJXZA//kRNW7J0j1w/wXArgL0sCxhDfK5dczSKn3+cg== 930 | 931 | "graphql16@npm:graphql@16.x": 932 | version "16.10.0" 933 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.10.0.tgz#24c01ae0af6b11ea87bf55694429198aaa8e220c" 934 | integrity sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ== 935 | 936 | "graphql17@npm:graphql@17.x": 937 | version "17.0.0-alpha.8" 938 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-17.0.0-alpha.8.tgz#dba4a0cbe3efe8243666726f1b4ffd65f87d9b06" 939 | integrity sha512-j9Jn56NCWVaLMt1hSNkMDoCuAisBwY3bxp/5tbrJuPtNtHg9dAf4NjKnlVDCksVP3jBVcipFaEXKWsdNxTlcyg== 940 | 941 | "graphql@15.x | 16.x | 17.x": 942 | version "17.0.0-alpha.8" 943 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-17.0.0-alpha.8.tgz#dba4a0cbe3efe8243666726f1b4ffd65f87d9b06" 944 | integrity sha512-j9Jn56NCWVaLMt1hSNkMDoCuAisBwY3bxp/5tbrJuPtNtHg9dAf4NjKnlVDCksVP3jBVcipFaEXKWsdNxTlcyg== 945 | 946 | has-bigints@^1.0.1, has-bigints@^1.0.2: 947 | version "1.0.2" 948 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" 949 | integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== 950 | 951 | has-flag@^4.0.0: 952 | version "4.0.0" 953 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 954 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 955 | 956 | has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: 957 | version "1.0.2" 958 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" 959 | integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== 960 | dependencies: 961 | es-define-property "^1.0.0" 962 | 963 | has-proto@^1.0.1, has-proto@^1.0.3: 964 | version "1.0.3" 965 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" 966 | integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== 967 | 968 | has-symbols@^1.0.2, has-symbols@^1.0.3: 969 | version "1.0.3" 970 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 971 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 972 | 973 | has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: 974 | version "1.0.2" 975 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" 976 | integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== 977 | dependencies: 978 | has-symbols "^1.0.3" 979 | 980 | hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: 981 | version "2.0.2" 982 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" 983 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 984 | dependencies: 985 | function-bind "^1.1.2" 986 | 987 | ignore@^5.2.0, ignore@^5.2.4: 988 | version "5.3.2" 989 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" 990 | integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== 991 | 992 | import-fresh@^3.2.1: 993 | version "3.3.0" 994 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 995 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 996 | dependencies: 997 | parent-module "^1.0.0" 998 | resolve-from "^4.0.0" 999 | 1000 | imurmurhash@^0.1.4: 1001 | version "0.1.4" 1002 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1003 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1004 | 1005 | inflight@^1.0.4: 1006 | version "1.0.6" 1007 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1008 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1009 | dependencies: 1010 | once "^1.3.0" 1011 | wrappy "1" 1012 | 1013 | inherits@2: 1014 | version "2.0.4" 1015 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1016 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1017 | 1018 | internal-slot@^1.0.7: 1019 | version "1.0.7" 1020 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" 1021 | integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== 1022 | dependencies: 1023 | es-errors "^1.3.0" 1024 | hasown "^2.0.0" 1025 | side-channel "^1.0.4" 1026 | 1027 | is-array-buffer@^3.0.4: 1028 | version "3.0.4" 1029 | resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" 1030 | integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== 1031 | dependencies: 1032 | call-bind "^1.0.2" 1033 | get-intrinsic "^1.2.1" 1034 | 1035 | is-bigint@^1.0.1: 1036 | version "1.0.4" 1037 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 1038 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 1039 | dependencies: 1040 | has-bigints "^1.0.1" 1041 | 1042 | is-boolean-object@^1.1.0: 1043 | version "1.1.2" 1044 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 1045 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 1046 | dependencies: 1047 | call-bind "^1.0.2" 1048 | has-tostringtag "^1.0.0" 1049 | 1050 | is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: 1051 | version "1.2.7" 1052 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" 1053 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== 1054 | 1055 | is-core-module@^2.13.0, is-core-module@^2.15.1: 1056 | version "2.15.1" 1057 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" 1058 | integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== 1059 | dependencies: 1060 | hasown "^2.0.2" 1061 | 1062 | is-data-view@^1.0.1: 1063 | version "1.0.1" 1064 | resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" 1065 | integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== 1066 | dependencies: 1067 | is-typed-array "^1.1.13" 1068 | 1069 | is-date-object@^1.0.1: 1070 | version "1.0.5" 1071 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 1072 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 1073 | dependencies: 1074 | has-tostringtag "^1.0.0" 1075 | 1076 | is-extglob@^2.1.1: 1077 | version "2.1.1" 1078 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1079 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1080 | 1081 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 1082 | version "4.0.3" 1083 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1084 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1085 | dependencies: 1086 | is-extglob "^2.1.1" 1087 | 1088 | is-negative-zero@^2.0.3: 1089 | version "2.0.3" 1090 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" 1091 | integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== 1092 | 1093 | is-number-object@^1.0.4: 1094 | version "1.0.7" 1095 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" 1096 | integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== 1097 | dependencies: 1098 | has-tostringtag "^1.0.0" 1099 | 1100 | is-number@^7.0.0: 1101 | version "7.0.0" 1102 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1103 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1104 | 1105 | is-path-inside@^3.0.3: 1106 | version "3.0.3" 1107 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 1108 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 1109 | 1110 | is-regex@^1.1.4: 1111 | version "1.1.4" 1112 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 1113 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 1114 | dependencies: 1115 | call-bind "^1.0.2" 1116 | has-tostringtag "^1.0.0" 1117 | 1118 | is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: 1119 | version "1.0.3" 1120 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" 1121 | integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== 1122 | dependencies: 1123 | call-bind "^1.0.7" 1124 | 1125 | is-string@^1.0.5, is-string@^1.0.7: 1126 | version "1.0.7" 1127 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 1128 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 1129 | dependencies: 1130 | has-tostringtag "^1.0.0" 1131 | 1132 | is-symbol@^1.0.2, is-symbol@^1.0.3: 1133 | version "1.0.4" 1134 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 1135 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 1136 | dependencies: 1137 | has-symbols "^1.0.2" 1138 | 1139 | is-typed-array@^1.1.13: 1140 | version "1.1.13" 1141 | resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" 1142 | integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== 1143 | dependencies: 1144 | which-typed-array "^1.1.14" 1145 | 1146 | is-weakref@^1.0.2: 1147 | version "1.0.2" 1148 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 1149 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 1150 | dependencies: 1151 | call-bind "^1.0.2" 1152 | 1153 | isarray@^2.0.5: 1154 | version "2.0.5" 1155 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" 1156 | integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== 1157 | 1158 | isexe@^2.0.0: 1159 | version "2.0.0" 1160 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1161 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1162 | 1163 | js-yaml@^4.1.0: 1164 | version "4.1.0" 1165 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1166 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1167 | dependencies: 1168 | argparse "^2.0.1" 1169 | 1170 | json-buffer@3.0.1: 1171 | version "3.0.1" 1172 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 1173 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 1174 | 1175 | json-schema-traverse@^0.4.1: 1176 | version "0.4.1" 1177 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1178 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1179 | 1180 | json-stable-stringify-without-jsonify@^1.0.1: 1181 | version "1.0.1" 1182 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1183 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1184 | 1185 | json5@^1.0.2: 1186 | version "1.0.2" 1187 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" 1188 | integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== 1189 | dependencies: 1190 | minimist "^1.2.0" 1191 | 1192 | keyv@^4.5.3: 1193 | version "4.5.4" 1194 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" 1195 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 1196 | dependencies: 1197 | json-buffer "3.0.1" 1198 | 1199 | levn@^0.4.1: 1200 | version "0.4.1" 1201 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1202 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1203 | dependencies: 1204 | prelude-ls "^1.2.1" 1205 | type-check "~0.4.0" 1206 | 1207 | locate-path@^6.0.0: 1208 | version "6.0.0" 1209 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1210 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1211 | dependencies: 1212 | p-locate "^5.0.0" 1213 | 1214 | lodash.merge@^4.6.2: 1215 | version "4.6.2" 1216 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1217 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1218 | 1219 | merge2@^1.3.0, merge2@^1.4.1: 1220 | version "1.4.1" 1221 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1222 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1223 | 1224 | micromatch@^4.0.4: 1225 | version "4.0.8" 1226 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" 1227 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 1228 | dependencies: 1229 | braces "^3.0.3" 1230 | picomatch "^2.3.1" 1231 | 1232 | minimatch@9.0.3: 1233 | version "9.0.3" 1234 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" 1235 | integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== 1236 | dependencies: 1237 | brace-expansion "^2.0.1" 1238 | 1239 | minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 1240 | version "3.1.2" 1241 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1242 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1243 | dependencies: 1244 | brace-expansion "^1.1.7" 1245 | 1246 | minimist@^1.2.0, minimist@^1.2.6: 1247 | version "1.2.8" 1248 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 1249 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 1250 | 1251 | ms@^2.1.1, ms@^2.1.3: 1252 | version "2.1.3" 1253 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1254 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1255 | 1256 | nanolru@^1.0.0: 1257 | version "1.0.0" 1258 | resolved "https://registry.yarnpkg.com/nanolru/-/nanolru-1.0.0.tgz#0a5679cd4e4578c4ca3741e610b71c4c9b5afaf8" 1259 | integrity sha512-GyQkE8M32pULhQk7Sko5raoIbPalAk90ICG+An4fq6fCsFHsP6fB2K46WGXVdoJpy4SGMnZ/EKbo123fZJomWg== 1260 | 1261 | natural-compare@^1.4.0: 1262 | version "1.4.0" 1263 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1264 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1265 | 1266 | object-inspect@^1.13.1: 1267 | version "1.13.2" 1268 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" 1269 | integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== 1270 | 1271 | object-keys@^1.1.1: 1272 | version "1.1.1" 1273 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1274 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1275 | 1276 | object.assign@^4.1.5: 1277 | version "4.1.5" 1278 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" 1279 | integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== 1280 | dependencies: 1281 | call-bind "^1.0.5" 1282 | define-properties "^1.2.1" 1283 | has-symbols "^1.0.3" 1284 | object-keys "^1.1.1" 1285 | 1286 | object.fromentries@^2.0.8: 1287 | version "2.0.8" 1288 | resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" 1289 | integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== 1290 | dependencies: 1291 | call-bind "^1.0.7" 1292 | define-properties "^1.2.1" 1293 | es-abstract "^1.23.2" 1294 | es-object-atoms "^1.0.0" 1295 | 1296 | object.groupby@^1.0.3: 1297 | version "1.0.3" 1298 | resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" 1299 | integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== 1300 | dependencies: 1301 | call-bind "^1.0.7" 1302 | define-properties "^1.2.1" 1303 | es-abstract "^1.23.2" 1304 | 1305 | object.values@^1.2.0: 1306 | version "1.2.0" 1307 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" 1308 | integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== 1309 | dependencies: 1310 | call-bind "^1.0.7" 1311 | define-properties "^1.2.1" 1312 | es-object-atoms "^1.0.0" 1313 | 1314 | once@^1.3.0: 1315 | version "1.4.0" 1316 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1317 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1318 | dependencies: 1319 | wrappy "1" 1320 | 1321 | optionator@^0.9.3: 1322 | version "0.9.4" 1323 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" 1324 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== 1325 | dependencies: 1326 | deep-is "^0.1.3" 1327 | fast-levenshtein "^2.0.6" 1328 | levn "^0.4.1" 1329 | prelude-ls "^1.2.1" 1330 | type-check "^0.4.0" 1331 | word-wrap "^1.2.5" 1332 | 1333 | p-limit@^3.0.2: 1334 | version "3.1.0" 1335 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1336 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1337 | dependencies: 1338 | yocto-queue "^0.1.0" 1339 | 1340 | p-locate@^5.0.0: 1341 | version "5.0.0" 1342 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1343 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1344 | dependencies: 1345 | p-limit "^3.0.2" 1346 | 1347 | parent-module@^1.0.0: 1348 | version "1.0.1" 1349 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1350 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1351 | dependencies: 1352 | callsites "^3.0.0" 1353 | 1354 | path-exists@^4.0.0: 1355 | version "4.0.0" 1356 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1357 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1358 | 1359 | path-is-absolute@^1.0.0: 1360 | version "1.0.1" 1361 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1362 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1363 | 1364 | path-key@^3.1.0: 1365 | version "3.1.1" 1366 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1367 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1368 | 1369 | path-parse@^1.0.7: 1370 | version "1.0.7" 1371 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1372 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1373 | 1374 | path-type@^4.0.0: 1375 | version "4.0.0" 1376 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1377 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1378 | 1379 | picomatch@^2.3.1: 1380 | version "2.3.1" 1381 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1382 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1383 | 1384 | possible-typed-array-names@^1.0.0: 1385 | version "1.0.0" 1386 | resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" 1387 | integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== 1388 | 1389 | prelude-ls@^1.2.1: 1390 | version "1.2.1" 1391 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1392 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1393 | 1394 | prettier@^3.3.3: 1395 | version "3.3.3" 1396 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" 1397 | integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== 1398 | 1399 | punycode@^2.1.0: 1400 | version "2.3.1" 1401 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" 1402 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 1403 | 1404 | queue-microtask@^1.2.2: 1405 | version "1.2.3" 1406 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1407 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1408 | 1409 | regexp.prototype.flags@^1.5.2: 1410 | version "1.5.2" 1411 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" 1412 | integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== 1413 | dependencies: 1414 | call-bind "^1.0.6" 1415 | define-properties "^1.2.1" 1416 | es-errors "^1.3.0" 1417 | set-function-name "^2.0.1" 1418 | 1419 | resolve-from@^4.0.0: 1420 | version "4.0.0" 1421 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1422 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1423 | 1424 | resolve@^1.22.4: 1425 | version "1.22.8" 1426 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" 1427 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 1428 | dependencies: 1429 | is-core-module "^2.13.0" 1430 | path-parse "^1.0.7" 1431 | supports-preserve-symlinks-flag "^1.0.0" 1432 | 1433 | reusify@^1.0.4: 1434 | version "1.0.4" 1435 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1436 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1437 | 1438 | rimraf@^3.0.2: 1439 | version "3.0.2" 1440 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1441 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1442 | dependencies: 1443 | glob "^7.1.3" 1444 | 1445 | run-parallel@^1.1.9: 1446 | version "1.2.0" 1447 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1448 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1449 | dependencies: 1450 | queue-microtask "^1.2.2" 1451 | 1452 | safe-array-concat@^1.1.2: 1453 | version "1.1.2" 1454 | resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" 1455 | integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== 1456 | dependencies: 1457 | call-bind "^1.0.7" 1458 | get-intrinsic "^1.2.4" 1459 | has-symbols "^1.0.3" 1460 | isarray "^2.0.5" 1461 | 1462 | safe-regex-test@^1.0.3: 1463 | version "1.0.3" 1464 | resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" 1465 | integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== 1466 | dependencies: 1467 | call-bind "^1.0.6" 1468 | es-errors "^1.3.0" 1469 | is-regex "^1.1.4" 1470 | 1471 | semver@^6.3.1: 1472 | version "6.3.1" 1473 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 1474 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 1475 | 1476 | semver@^7.5.4: 1477 | version "7.6.3" 1478 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" 1479 | integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== 1480 | 1481 | set-function-length@^1.2.1: 1482 | version "1.2.2" 1483 | resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" 1484 | integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== 1485 | dependencies: 1486 | define-data-property "^1.1.4" 1487 | es-errors "^1.3.0" 1488 | function-bind "^1.1.2" 1489 | get-intrinsic "^1.2.4" 1490 | gopd "^1.0.1" 1491 | has-property-descriptors "^1.0.2" 1492 | 1493 | set-function-name@^2.0.1: 1494 | version "2.0.2" 1495 | resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" 1496 | integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== 1497 | dependencies: 1498 | define-data-property "^1.1.4" 1499 | es-errors "^1.3.0" 1500 | functions-have-names "^1.2.3" 1501 | has-property-descriptors "^1.0.2" 1502 | 1503 | shebang-command@^2.0.0: 1504 | version "2.0.0" 1505 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1506 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1507 | dependencies: 1508 | shebang-regex "^3.0.0" 1509 | 1510 | shebang-regex@^3.0.0: 1511 | version "3.0.0" 1512 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1513 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1514 | 1515 | side-channel@^1.0.4: 1516 | version "1.0.6" 1517 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" 1518 | integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== 1519 | dependencies: 1520 | call-bind "^1.0.7" 1521 | es-errors "^1.3.0" 1522 | get-intrinsic "^1.2.4" 1523 | object-inspect "^1.13.1" 1524 | 1525 | slash@^3.0.0: 1526 | version "3.0.0" 1527 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1528 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1529 | 1530 | string.prototype.trim@^1.2.9: 1531 | version "1.2.9" 1532 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" 1533 | integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== 1534 | dependencies: 1535 | call-bind "^1.0.7" 1536 | define-properties "^1.2.1" 1537 | es-abstract "^1.23.0" 1538 | es-object-atoms "^1.0.0" 1539 | 1540 | string.prototype.trimend@^1.0.8: 1541 | version "1.0.8" 1542 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" 1543 | integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== 1544 | dependencies: 1545 | call-bind "^1.0.7" 1546 | define-properties "^1.2.1" 1547 | es-object-atoms "^1.0.0" 1548 | 1549 | string.prototype.trimstart@^1.0.8: 1550 | version "1.0.8" 1551 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" 1552 | integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== 1553 | dependencies: 1554 | call-bind "^1.0.7" 1555 | define-properties "^1.2.1" 1556 | es-object-atoms "^1.0.0" 1557 | 1558 | strip-ansi@^6.0.1: 1559 | version "6.0.1" 1560 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1561 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1562 | dependencies: 1563 | ansi-regex "^5.0.1" 1564 | 1565 | strip-bom@^3.0.0: 1566 | version "3.0.0" 1567 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1568 | integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== 1569 | 1570 | strip-json-comments@^3.1.1: 1571 | version "3.1.1" 1572 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1573 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1574 | 1575 | supports-color@^7.1.0: 1576 | version "7.2.0" 1577 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1578 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1579 | dependencies: 1580 | has-flag "^4.0.0" 1581 | 1582 | supports-color@^8.1.0: 1583 | version "8.1.1" 1584 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1585 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1586 | dependencies: 1587 | has-flag "^4.0.0" 1588 | 1589 | supports-preserve-symlinks-flag@^1.0.0: 1590 | version "1.0.0" 1591 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1592 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1593 | 1594 | text-table@^0.2.0: 1595 | version "0.2.0" 1596 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1597 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 1598 | 1599 | to-regex-range@^5.0.1: 1600 | version "5.0.1" 1601 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1602 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1603 | dependencies: 1604 | is-number "^7.0.0" 1605 | 1606 | ts-api-utils@^1.0.1: 1607 | version "1.3.0" 1608 | resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" 1609 | integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== 1610 | 1611 | tsconfig-paths@^3.15.0: 1612 | version "3.15.0" 1613 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" 1614 | integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== 1615 | dependencies: 1616 | "@types/json5" "^0.0.29" 1617 | json5 "^1.0.2" 1618 | minimist "^1.2.6" 1619 | strip-bom "^3.0.0" 1620 | 1621 | type-check@^0.4.0, type-check@~0.4.0: 1622 | version "0.4.0" 1623 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1624 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1625 | dependencies: 1626 | prelude-ls "^1.2.1" 1627 | 1628 | type-fest@^0.20.2: 1629 | version "0.20.2" 1630 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1631 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1632 | 1633 | typed-array-buffer@^1.0.2: 1634 | version "1.0.2" 1635 | resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" 1636 | integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== 1637 | dependencies: 1638 | call-bind "^1.0.7" 1639 | es-errors "^1.3.0" 1640 | is-typed-array "^1.1.13" 1641 | 1642 | typed-array-byte-length@^1.0.1: 1643 | version "1.0.1" 1644 | resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" 1645 | integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== 1646 | dependencies: 1647 | call-bind "^1.0.7" 1648 | for-each "^0.3.3" 1649 | gopd "^1.0.1" 1650 | has-proto "^1.0.3" 1651 | is-typed-array "^1.1.13" 1652 | 1653 | typed-array-byte-offset@^1.0.2: 1654 | version "1.0.2" 1655 | resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" 1656 | integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== 1657 | dependencies: 1658 | available-typed-arrays "^1.0.7" 1659 | call-bind "^1.0.7" 1660 | for-each "^0.3.3" 1661 | gopd "^1.0.1" 1662 | has-proto "^1.0.3" 1663 | is-typed-array "^1.1.13" 1664 | 1665 | typed-array-length@^1.0.6: 1666 | version "1.0.6" 1667 | resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" 1668 | integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== 1669 | dependencies: 1670 | call-bind "^1.0.7" 1671 | for-each "^0.3.3" 1672 | gopd "^1.0.1" 1673 | has-proto "^1.0.3" 1674 | is-typed-array "^1.1.13" 1675 | possible-typed-array-names "^1.0.0" 1676 | 1677 | typescript@^5.6.2: 1678 | version "5.6.2" 1679 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" 1680 | integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== 1681 | 1682 | unbox-primitive@^1.0.2: 1683 | version "1.0.2" 1684 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" 1685 | integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== 1686 | dependencies: 1687 | call-bind "^1.0.2" 1688 | has-bigints "^1.0.2" 1689 | has-symbols "^1.0.3" 1690 | which-boxed-primitive "^1.0.2" 1691 | 1692 | undici-types@~6.19.2: 1693 | version "6.19.8" 1694 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" 1695 | integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== 1696 | 1697 | uri-js@^4.2.2: 1698 | version "4.4.1" 1699 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1700 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1701 | dependencies: 1702 | punycode "^2.1.0" 1703 | 1704 | which-boxed-primitive@^1.0.2: 1705 | version "1.0.2" 1706 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 1707 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 1708 | dependencies: 1709 | is-bigint "^1.0.1" 1710 | is-boolean-object "^1.1.0" 1711 | is-number-object "^1.0.4" 1712 | is-string "^1.0.5" 1713 | is-symbol "^1.0.3" 1714 | 1715 | which-typed-array@^1.1.14, which-typed-array@^1.1.15: 1716 | version "1.1.15" 1717 | resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" 1718 | integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== 1719 | dependencies: 1720 | available-typed-arrays "^1.0.7" 1721 | call-bind "^1.0.7" 1722 | for-each "^0.3.3" 1723 | gopd "^1.0.1" 1724 | has-tostringtag "^1.0.2" 1725 | 1726 | which@^2.0.1: 1727 | version "2.0.2" 1728 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1729 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1730 | dependencies: 1731 | isexe "^2.0.0" 1732 | 1733 | word-wrap@^1.2.5: 1734 | version "1.2.5" 1735 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" 1736 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== 1737 | 1738 | wrappy@1: 1739 | version "1.0.2" 1740 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1741 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1742 | 1743 | yocto-queue@^0.1.0: 1744 | version "0.1.0" 1745 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1746 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1747 | --------------------------------------------------------------------------------