From 14585cb0e7cd31bde23a9df93ba13228c4cd210b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20Ve=C4=8Derek?= Date: Tue, 19 Mar 2024 16:30:29 +0100 Subject: [PATCH 1/6] fix: add packageManager to the manifest to let corepack take care of yarn version resolution, so that the user does not have to install different versions of yarn on their machine --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 507dd63c5..dfb558b4d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "packages/plugins/other/*", "packages/presets/*" ], + "packageManager": "yarn@1.22.22", "scripts": { "build": "bob build", "ci:lint": "eslint --ext .ts . --output-file eslint_report.json --format json", From 873debdf76aa905ebfd8412c10122b03ea573678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20Ve=C4=8Derek?= Date: Tue, 19 Mar 2024 16:28:39 +0100 Subject: [PATCH 2/6] feat: implement a graphql-codegen plugin that outputs a client SDK written in Effect (#664) --- .changeset/eight-ants-flow.md | 5 + .../plugins/typescript/effect/jest.config.js | 1 + .../plugins/typescript/effect/package.json | 66 + .../plugins/typescript/effect/src/index.ts | 51 + .../plugins/typescript/effect/src/visitor.ts | 198 ++ .../tests/__snapshots__/effect.spec.ts.snap | 1059 +++++++ .../typescript/effect/tests/effect.spec.ts | 285 ++ .../effect/tests/integration.spec.ts | 73 + .../tests/test-files/run-example-query.ts | 16 + yarn.lock | 2819 ++++++++++------- 10 files changed, 3367 insertions(+), 1206 deletions(-) create mode 100644 .changeset/eight-ants-flow.md create mode 100644 packages/plugins/typescript/effect/jest.config.js create mode 100644 packages/plugins/typescript/effect/package.json create mode 100644 packages/plugins/typescript/effect/src/index.ts create mode 100644 packages/plugins/typescript/effect/src/visitor.ts create mode 100644 packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap create mode 100644 packages/plugins/typescript/effect/tests/effect.spec.ts create mode 100644 packages/plugins/typescript/effect/tests/integration.spec.ts create mode 100644 packages/plugins/typescript/effect/tests/test-files/run-example-query.ts diff --git a/.changeset/eight-ants-flow.md b/.changeset/eight-ants-flow.md new file mode 100644 index 000000000..e29a66640 --- /dev/null +++ b/.changeset/eight-ants-flow.md @@ -0,0 +1,5 @@ +--- +'@graphql-codegen/typescript-effect': minor +--- + +Introduces a graphql-codegen plugin for generating a client SDK using Effect diff --git a/packages/plugins/typescript/effect/jest.config.js b/packages/plugins/typescript/effect/jest.config.js new file mode 100644 index 000000000..54863375c --- /dev/null +++ b/packages/plugins/typescript/effect/jest.config.js @@ -0,0 +1 @@ +module.exports = require('../../../../jest.project')({ dirname: __dirname }); diff --git a/packages/plugins/typescript/effect/package.json b/packages/plugins/typescript/effect/package.json new file mode 100644 index 000000000..ae67228ec --- /dev/null +++ b/packages/plugins/typescript/effect/package.json @@ -0,0 +1,66 @@ +{ + "name": "@graphql-codegen/typescript-effect", + "version": "0.0.1", + "type": "module", + "description": "GraphQL Code Generator plugin for generating Effect Platform HTTP Client requests for GraphQL operations", + "repository": { + "type": "git", + "url": "https://github.com/dotansimha/graphql-code-generator-community.git", + "directory": "packages/plugins/typescript/effect" + }, + "license": "MIT", + "engines": { + "node": ">= 16.0.0" + }, + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "exports": { + ".": { + "require": { + "types": "./dist/typings/index.d.cts", + "default": "./dist/cjs/index.js" + }, + "import": { + "types": "./dist/typings/index.d.ts", + "default": "./dist/esm/index.js" + }, + "default": { + "types": "./dist/typings/index.d.ts", + "default": "./dist/esm/index.js" + } + }, + "./package.json": "./package.json" + }, + "typings": "dist/typings/index.d.ts", + "scripts": { + "lint": "eslint **/*.ts", + "test": "jest --no-watchman --config ../../../../jest.config.js" + }, + "peerDependencies": { + "@effect/platform": "~0.48.8", + "effect": "^2.4.7", + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql-tag": "^2.0.0" + }, + "dependencies": { + "@effect/schema": "^0.64.7", + "@graphql-codegen/plugin-helpers": "^3.0.0", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.6.0" + }, + "devDependencies": { + "@effect/platform": "~0.48.8", + "@effect/platform-node": "~0.45.10", + "@graphql-codegen/testing": "1.18.0", + "@graphql-tools/schema": "10.0.3", + "effect": "2.4.7" + }, + "publishConfig": { + "directory": "dist", + "access": "public" + }, + "typescript": { + "definition": "dist/typings/index.d.ts" + } +} diff --git a/packages/plugins/typescript/effect/src/index.ts b/packages/plugins/typescript/effect/src/index.ts new file mode 100644 index 000000000..0d3e65d9c --- /dev/null +++ b/packages/plugins/typescript/effect/src/index.ts @@ -0,0 +1,51 @@ +import { concatAST, type FragmentDefinitionNode, type GraphQLSchema, Kind } from 'graphql'; +import { + oldVisit, + type PluginFunction, + type PluginValidateFn, + type Types, +} from '@graphql-codegen/plugin-helpers'; +import { + type LoadedFragment, + type RawClientSideBasePluginConfig, +} from '@graphql-codegen/visitor-plugin-common'; +import { EffectVisitor } from './visitor.js'; + +export const plugin: PluginFunction<{}> = ( + schema: GraphQLSchema, + documents: Types.DocumentFile[], + config: RawClientSideBasePluginConfig, +) => { + const allAst = concatAST(documents.map(v => v.document)); + const allFragments: LoadedFragment[] = [ + ...( + allAst.definitions.filter( + d => d.kind === Kind.FRAGMENT_DEFINITION, + ) as FragmentDefinitionNode[] + ).map(fragmentDef => ({ + node: fragmentDef, + name: fragmentDef.name.value, + onType: fragmentDef.typeCondition.name.value, + isExternal: false, + })), + ...(config.externalFragments || []), + ]; + const visitor = new EffectVisitor(schema, allFragments, config); + const visitorResult = oldVisit(allAst, { leave: visitor }); + + return { + prepend: visitor.getImports(), + content: [ + visitor.fragments, + ...visitorResult.definitions.filter(t => typeof t === 'string'), + visitor.sdkContent, + ].join('\n'), + }; +}; + +export const validate: PluginValidateFn = async ( + schema: GraphQLSchema, + documents: Types.DocumentFile[], + config: RawClientSideBasePluginConfig, + outputFile: string, +) => {}; diff --git a/packages/plugins/typescript/effect/src/visitor.ts b/packages/plugins/typescript/effect/src/visitor.ts new file mode 100644 index 000000000..a6a5b0724 --- /dev/null +++ b/packages/plugins/typescript/effect/src/visitor.ts @@ -0,0 +1,198 @@ +import autoBind from 'auto-bind'; +import { type GraphQLSchema, type OperationDefinitionNode, print } from 'graphql'; +import { + type ClientSideBasePluginConfig, + ClientSideBaseVisitor, + DocumentMode, + LoadedFragment, + type RawClientSideBasePluginConfig, +} from '@graphql-codegen/visitor-plugin-common'; + +export interface EffectPluginConfig extends ClientSideBasePluginConfig {} + +const additionalStaticContent = (documentMode: DocumentMode) => ` +export type GraphQLSuccessResponse = { + body: ExecutionResult & { data: A }; + headers: Record; +}; + +export type GraphQLErrorResponse = { + body: Omit; + headers: Record; +}; + +export class MissingDataGraphQLResponseError extends Data.TaggedError( + 'MissingDataGraphQLResponseError', +) {} + +export type GraphQLOperationOptions = { + preferredOpName?: string; +}; + +type GraphQLOperationArgs = { + document: ${documentMode === DocumentMode.string ? 'string' : 'DocumentNode'}; + fallbackOperationName: string; +}; + +// https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed +const Accept = 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8'; + +const makeGraphQLClient = Http.client.mapRequest( + Http.request.setHeaders({ Accept, 'Content-Type': 'application/json' }), +); + +const makeGraphQLOperation = + ({ document, fallbackOperationName }: GraphQLOperationArgs) => + (variables: Vars, opts?: GraphQLOperationOptions) => { + const operationName = opts?.preferredOpName ?? fallbackOperationName; + const query = ${documentMode === DocumentMode.string ? 'document' : 'print(document)'}; + + return Effect.flatMap(Http.client.Client, client => + Http.request.post('').pipe( + Http.request.jsonBody({ + query, + operationName, + variables, + }), + Effect.flatMap(Http.client.filterStatusOk(makeGraphQLClient(client))), + Effect.flatMap( + Http.response.schemaJson( + S.struct({ + body: S.any, + headers: S.record(S.string, S.string), + }), + ), + ), + Effect.flatMap(res => { + const body = res.body as ExecutionResult; + const { headers } = res; + + if (body.data) return Effect.succeed(res as GraphQLSuccessResponse); + + return Effect.fail(new MissingDataGraphQLResponseError({ body, headers })); + }), + Effect.scoped, + ), + ); + }; +`; + +export class EffectVisitor extends ClientSideBaseVisitor< + RawClientSideBasePluginConfig, + EffectPluginConfig +> { + private _externalImportPrefix: string; + private _operationsToInclude: { + node: OperationDefinitionNode; + documentVariableName: string; + operationType: string; + operationResultType: string; + operationVariablesTypes: string; + }[] = []; + + constructor( + schema: GraphQLSchema, + fragments: LoadedFragment[], + rawConfig: RawClientSideBasePluginConfig, + ) { + super(schema, fragments, rawConfig, {}); + + autoBind(this); + + type ImportType = 'type' | 'value'; + type Import = [name: string, type: ImportType]; + const createNamedImport = (imports: Import[], from: string) => { + const normalizedImports = imports.map(([name, type]) => + this.config.useTypeImports && type === 'type' ? `type ${name}` : name, + ); + + return `import { ${normalizedImports.join(', ')} } from '${from}';`; + }; + const createNamesaceImport = (namespace: string, from: string, type: ImportType = 'value') => + `import ${type === 'type' ? 'type ' : ''}* as ${namespace} from '${from}';`; + + [ + createNamedImport( + [ + ['Data', 'value'], + ['Effect', 'value'], + ], + 'effect', + ), + createNamedImport( + [ + ['DocumentNode', 'type'], + ['ExecutionResult', 'type'], + ['print', 'value'], + ], + 'graphql', + ), + createNamesaceImport('Http', '@effect/platform/HttpClient'), + createNamesaceImport('S', '@effect/schema/Schema'), + ].forEach(_ => this._additionalImports.push(_)); + + this._externalImportPrefix = this.config.importOperationTypesFrom + ? `${this.config.importOperationTypesFrom}.` + : ''; + } + + public OperationDefinition(node: OperationDefinitionNode) { + const operationName = node.name?.value; + + if (!operationName) { + // eslint-disable-next-line no-console + console.warn( + `Anonymous GraphQL operation was ignored in "typescript-effect", please make sure to name your operation: `, + print(node), + ); + + return null; + } + + return super.OperationDefinition(node); + } + + protected buildOperation( + node: OperationDefinitionNode, + documentVariableName: string, + operationType: string, + operationResultType: string, + operationVariablesTypes: string, + ): string { + operationResultType = this._externalImportPrefix + operationResultType; + operationVariablesTypes = this._externalImportPrefix + operationVariablesTypes; + + this._operationsToInclude.push({ + node, + documentVariableName, + operationType, + operationResultType, + operationVariablesTypes, + }); + + return null; + } + + private getDocumentNodeVariable(documentVariableName: string): string { + return this.config.documentMode === DocumentMode.external + ? `Operations.${documentVariableName}` + : documentVariableName; + } + + public get sdkContent(): string { + const allPossibleOperations = this._operationsToInclude.map( + ({ node, documentVariableName, operationResultType, operationVariablesTypes }) => { + const operationName = node.name.value; + const docVarName = this.getDocumentNodeVariable(documentVariableName); + return `export const ${operationName} = makeGraphQLOperation<${operationVariablesTypes}, ${operationResultType}>({ + document: ${docVarName}, + fallbackOperationName: '${operationName}', +});`; + }, + ); + + return `${additionalStaticContent(this.config.documentMode)}\n${allPossibleOperations.join( + '\n', + )}\n`; + } +} diff --git a/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap b/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap new file mode 100644 index 000000000..eacf3174c --- /dev/null +++ b/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap @@ -0,0 +1,1059 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`effect sdk Should generate the correct content 1`] = ` +"export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +import { Data, Effect } from 'effect'; +import { DocumentNode, ExecutionResult, print } from 'graphql'; +import * as Http from '@effect/platform/HttpClient'; +import * as S from '@effect/schema/Schema'; +import gql from 'graphql-tag'; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; +}; + +export type Query = { + __typename?: 'Query'; + /** A feed of repository submissions */ + feed?: Maybe>>; + /** A single entry */ + entry?: Maybe; + /** Return the currently logged in user, or null if nobody is logged in */ + currentUser?: Maybe; +}; + + +export type QueryFeedArgs = { + type: FeedType; + offset?: InputMaybe; + limit?: InputMaybe; +}; + + +export type QueryEntryArgs = { + repoFullName: Scalars['String']; +}; + +/** A list of options for the sort order of the feed */ +export enum FeedType { + /** Sort by a combination of freshness and score, using Reddit's algorithm */ + Hot = 'HOT', + /** Newest entries first */ + New = 'NEW', + /** Highest score entries first */ + Top = 'TOP' +} + +/** Information about a GitHub repository submitted to GitHunt */ +export type Entry = { + __typename?: 'Entry'; + /** Information about the repository from GitHub */ + repository: Repository; + /** The GitHub user who submitted this entry */ + postedBy: User; + /** A timestamp of when the entry was submitted */ + createdAt: Scalars['Float']; + /** The score of this repository, upvotes - downvotes */ + score: Scalars['Int']; + /** The hot score of this repository */ + hotScore: Scalars['Float']; + /** Comments posted about this repository */ + comments: Array>; + /** The number of comments posted about this repository */ + commentCount: Scalars['Int']; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** XXX to be changed */ + vote: Vote; +}; + + +/** Information about a GitHub repository submitted to GitHunt */ +export type EntryCommentsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; +}; + +/** + * A repository object from the GitHub API. This uses the exact field names returned by the + * GitHub API for simplicity, even though the convention for GraphQL is usually to camel case. + */ +export type Repository = { + __typename?: 'Repository'; + /** Just the name of the repository, e.g. GitHunt-API */ + name: Scalars['String']; + /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */ + full_name: Scalars['String']; + /** The description of the repository */ + description?: Maybe; + /** The link to the repository on GitHub */ + html_url: Scalars['String']; + /** The number of people who have starred this repository on GitHub */ + stargazers_count: Scalars['Int']; + /** The number of open issues on this repository on GitHub */ + open_issues_count?: Maybe; + /** The owner of this repository on GitHub, e.g. apollostack */ + owner?: Maybe; +}; + +/** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ +export type User = { + __typename?: 'User'; + /** The name of the user, e.g. apollostack */ + login: Scalars['String']; + /** The URL to a directly embeddable image for this user's avatar */ + avatar_url: Scalars['String']; + /** The URL of this user's GitHub page */ + html_url: Scalars['String']; +}; + +/** A comment about an entry, submitted by a user */ +export type Comment = { + __typename?: 'Comment'; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** The GitHub user who posted the comment */ + postedBy: User; + /** A timestamp of when the comment was posted */ + createdAt: Scalars['Float']; + /** The text of the comment */ + content: Scalars['String']; + /** The repository which this comment is about */ + repoName: Scalars['String']; +}; + +/** XXX to be removed */ +export type Vote = { + __typename?: 'Vote'; + vote_value: Scalars['Int']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + /** Submit a new repository, returns the new submission */ + submitRepository?: Maybe; + /** Vote on a repository submission, returns the submission that was voted on */ + vote?: Maybe; + /** Comment on a repository, returns the new comment */ + submitComment?: Maybe; +}; + + +export type MutationSubmitRepositoryArgs = { + repoFullName: Scalars['String']; +}; + + +export type MutationVoteArgs = { + repoFullName: Scalars['String']; + type: VoteType; +}; + + +export type MutationSubmitCommentArgs = { + repoFullName: Scalars['String']; + commentContent: Scalars['String']; +}; + +/** The type of vote to record, when submitting a vote */ +export enum VoteType { + Up = 'UP', + Down = 'DOWN', + Cancel = 'CANCEL' +} + +export type Subscription = { + __typename?: 'Subscription'; + /** Subscription fires on every comment added */ + commentAdded?: Maybe; +}; + + +export type SubscriptionCommentAddedArgs = { + repoFullName: Scalars['String']; +}; +export type FeedQueryVariables = Exact<{ [key: string]: never; }>; + + +export type FeedQuery = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number, commentCount: number, repository: { __typename?: 'Repository', owner?: { __typename?: 'User', avatar_url: string } | null } } | null> | null }; + +export type Feed2QueryVariables = Exact<{ + v: Scalars['String']; +}>; + + +export type Feed2Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed3QueryVariables = Exact<{ + v?: InputMaybe; +}>; + + +export type Feed3Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed4QueryVariables = Exact<{ + v?: Scalars['String']; +}>; + + +export type Feed4Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export const FeedDocument = gql\` + query feed { + feed { + id + commentCount + repository { + owner { + avatar_url + } + } + } +} + \`; +export const Feed2Document = gql\` + query feed2($v: String!) { + feed { + id + } +} + \`; +export const Feed3Document = gql\` + query feed3($v: String) { + feed { + id + } +} + \`; +export const Feed4Document = gql\` + query feed4($v: String! = "TEST") { + feed { + id + } +} + \`; + +export type GraphQLSuccessResponse = { + body: ExecutionResult & { data: A }; + headers: Record; +}; + +export type GraphQLErrorResponse = { + body: Omit; + headers: Record; +}; + +export class MissingDataGraphQLResponseError extends Data.TaggedError( + 'MissingDataGraphQLResponseError', +) {} + +export type GraphQLOperationOptions = { + preferredOpName?: string; +}; + +type GraphQLOperationArgs = { + document: DocumentNode; + fallbackOperationName: string; +}; + +// https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed +const Accept = 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8'; + +const makeGraphQLClient = Http.client.mapRequest( + Http.request.setHeaders({ Accept, 'Content-Type': 'application/json' }), +); + +const makeGraphQLOperation = + ({ document, fallbackOperationName }: GraphQLOperationArgs) => + (variables: Vars, opts?: GraphQLOperationOptions) => { + const operationName = opts?.preferredOpName ?? fallbackOperationName; + const query = print(document); + + return Effect.flatMap(Http.client.Client, client => + Http.request.post('').pipe( + Http.request.jsonBody({ + query, + operationName, + variables, + }), + Effect.flatMap(Http.client.filterStatusOk(makeGraphQLClient(client))), + Effect.flatMap( + Http.response.schemaJson( + S.struct({ + body: S.any, + headers: S.record(S.string, S.string), + }), + ), + ), + Effect.flatMap(res => { + const body = res.body as ExecutionResult; + const { headers } = res; + + if (body.data) return Effect.succeed(res as GraphQLSuccessResponse); + + return Effect.fail(new MissingDataGraphQLResponseError({ body, headers })); + }), + Effect.scoped, + ), + ); + }; + +export const feed = makeGraphQLOperation({ + document: FeedDocument, + fallbackOperationName: 'feed', +}); +export const feed2 = makeGraphQLOperation({ + document: Feed2Document, + fallbackOperationName: 'feed2', +}); +export const feed3 = makeGraphQLOperation({ + document: Feed3Document, + fallbackOperationName: 'feed3', +}); +export const feed4 = makeGraphQLOperation({ + document: Feed4Document, + fallbackOperationName: 'feed4', +}); + +import { Layer } from 'effect'; +import { NodeHttpClient } from '@effect/platform-node'; + +const HttpClientLive = Layer.effect( + Http.client.Client, + Effect.map( + Http.client.Client, + Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), + ), +).pipe(Layer.provide(NodeHttpClient.layer)); + +const run = (e: Effect.Effect) => + e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + +async function test() { + await run(feed({})); + await run(feed3({})); + await run(feed4({})); + + const { body: { data } } = await run(feed2({})); + + if (data.feed) { + if (data.feed[0]) { + const id = data.feed[0].id + } + } +} +" +`; + +exports[`effect sdk Should generate the correct content with documentMode=string 1`] = ` +"export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +import { Data, Effect } from 'effect'; +import { DocumentNode, ExecutionResult, print } from 'graphql'; +import * as Http from '@effect/platform/HttpClient'; +import * as S from '@effect/schema/Schema'; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; +}; + +export type Query = { + __typename?: 'Query'; + /** A feed of repository submissions */ + feed?: Maybe>>; + /** A single entry */ + entry?: Maybe; + /** Return the currently logged in user, or null if nobody is logged in */ + currentUser?: Maybe; +}; + + +export type QueryFeedArgs = { + type: FeedType; + offset?: InputMaybe; + limit?: InputMaybe; +}; + + +export type QueryEntryArgs = { + repoFullName: Scalars['String']; +}; + +/** A list of options for the sort order of the feed */ +export enum FeedType { + /** Sort by a combination of freshness and score, using Reddit's algorithm */ + Hot = 'HOT', + /** Newest entries first */ + New = 'NEW', + /** Highest score entries first */ + Top = 'TOP' +} + +/** Information about a GitHub repository submitted to GitHunt */ +export type Entry = { + __typename?: 'Entry'; + /** Information about the repository from GitHub */ + repository: Repository; + /** The GitHub user who submitted this entry */ + postedBy: User; + /** A timestamp of when the entry was submitted */ + createdAt: Scalars['Float']; + /** The score of this repository, upvotes - downvotes */ + score: Scalars['Int']; + /** The hot score of this repository */ + hotScore: Scalars['Float']; + /** Comments posted about this repository */ + comments: Array>; + /** The number of comments posted about this repository */ + commentCount: Scalars['Int']; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** XXX to be changed */ + vote: Vote; +}; + + +/** Information about a GitHub repository submitted to GitHunt */ +export type EntryCommentsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; +}; + +/** + * A repository object from the GitHub API. This uses the exact field names returned by the + * GitHub API for simplicity, even though the convention for GraphQL is usually to camel case. + */ +export type Repository = { + __typename?: 'Repository'; + /** Just the name of the repository, e.g. GitHunt-API */ + name: Scalars['String']; + /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */ + full_name: Scalars['String']; + /** The description of the repository */ + description?: Maybe; + /** The link to the repository on GitHub */ + html_url: Scalars['String']; + /** The number of people who have starred this repository on GitHub */ + stargazers_count: Scalars['Int']; + /** The number of open issues on this repository on GitHub */ + open_issues_count?: Maybe; + /** The owner of this repository on GitHub, e.g. apollostack */ + owner?: Maybe; +}; + +/** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ +export type User = { + __typename?: 'User'; + /** The name of the user, e.g. apollostack */ + login: Scalars['String']; + /** The URL to a directly embeddable image for this user's avatar */ + avatar_url: Scalars['String']; + /** The URL of this user's GitHub page */ + html_url: Scalars['String']; +}; + +/** A comment about an entry, submitted by a user */ +export type Comment = { + __typename?: 'Comment'; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** The GitHub user who posted the comment */ + postedBy: User; + /** A timestamp of when the comment was posted */ + createdAt: Scalars['Float']; + /** The text of the comment */ + content: Scalars['String']; + /** The repository which this comment is about */ + repoName: Scalars['String']; +}; + +/** XXX to be removed */ +export type Vote = { + __typename?: 'Vote'; + vote_value: Scalars['Int']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + /** Submit a new repository, returns the new submission */ + submitRepository?: Maybe; + /** Vote on a repository submission, returns the submission that was voted on */ + vote?: Maybe; + /** Comment on a repository, returns the new comment */ + submitComment?: Maybe; +}; + + +export type MutationSubmitRepositoryArgs = { + repoFullName: Scalars['String']; +}; + + +export type MutationVoteArgs = { + repoFullName: Scalars['String']; + type: VoteType; +}; + + +export type MutationSubmitCommentArgs = { + repoFullName: Scalars['String']; + commentContent: Scalars['String']; +}; + +/** The type of vote to record, when submitting a vote */ +export enum VoteType { + Up = 'UP', + Down = 'DOWN', + Cancel = 'CANCEL' +} + +export type Subscription = { + __typename?: 'Subscription'; + /** Subscription fires on every comment added */ + commentAdded?: Maybe; +}; + + +export type SubscriptionCommentAddedArgs = { + repoFullName: Scalars['String']; +}; +export type FeedQueryVariables = Exact<{ [key: string]: never; }>; + + +export type FeedQuery = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number, commentCount: number, repository: { __typename?: 'Repository', owner?: { __typename?: 'User', avatar_url: string } | null } } | null> | null }; + +export type Feed2QueryVariables = Exact<{ + v: Scalars['String']; +}>; + + +export type Feed2Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed3QueryVariables = Exact<{ + v?: InputMaybe; +}>; + + +export type Feed3Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed4QueryVariables = Exact<{ + v?: Scalars['String']; +}>; + + +export type Feed4Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export const FeedDocument = \` + query feed { + feed { + id + commentCount + repository { + owner { + avatar_url + } + } + } +} + \`; +export const Feed2Document = \` + query feed2($v: String!) { + feed { + id + } +} + \`; +export const Feed3Document = \` + query feed3($v: String) { + feed { + id + } +} + \`; +export const Feed4Document = \` + query feed4($v: String! = "TEST") { + feed { + id + } +} + \`; + +export type GraphQLSuccessResponse = { + body: ExecutionResult & { data: A }; + headers: Record; +}; + +export type GraphQLErrorResponse = { + body: Omit; + headers: Record; +}; + +export class MissingDataGraphQLResponseError extends Data.TaggedError( + 'MissingDataGraphQLResponseError', +) {} + +export type GraphQLOperationOptions = { + preferredOpName?: string; +}; + +type GraphQLOperationArgs = { + document: string; + fallbackOperationName: string; +}; + +// https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed +const Accept = 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8'; + +const makeGraphQLClient = Http.client.mapRequest( + Http.request.setHeaders({ Accept, 'Content-Type': 'application/json' }), +); + +const makeGraphQLOperation = + ({ document, fallbackOperationName }: GraphQLOperationArgs) => + (variables: Vars, opts?: GraphQLOperationOptions) => { + const operationName = opts?.preferredOpName ?? fallbackOperationName; + const query = document; + + return Effect.flatMap(Http.client.Client, client => + Http.request.post('').pipe( + Http.request.jsonBody({ + query, + operationName, + variables, + }), + Effect.flatMap(Http.client.filterStatusOk(makeGraphQLClient(client))), + Effect.flatMap( + Http.response.schemaJson( + S.struct({ + body: S.any, + headers: S.record(S.string, S.string), + }), + ), + ), + Effect.flatMap(res => { + const body = res.body as ExecutionResult; + const { headers } = res; + + if (body.data) return Effect.succeed(res as GraphQLSuccessResponse); + + return Effect.fail(new MissingDataGraphQLResponseError({ body, headers })); + }), + Effect.scoped, + ), + ); + }; + +export const feed = makeGraphQLOperation({ + document: FeedDocument, + fallbackOperationName: 'feed', +}); +export const feed2 = makeGraphQLOperation({ + document: Feed2Document, + fallbackOperationName: 'feed2', +}); +export const feed3 = makeGraphQLOperation({ + document: Feed3Document, + fallbackOperationName: 'feed3', +}); +export const feed4 = makeGraphQLOperation({ + document: Feed4Document, + fallbackOperationName: 'feed4', +}); + +import { Layer } from 'effect'; +import { NodeHttpClient } from '@effect/platform-node'; + +const HttpClientLive = Layer.effect( + Http.client.Client, + Effect.map( + Http.client.Client, + Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), + ), +).pipe(Layer.provide(NodeHttpClient.layer)); + +const run = (e: Effect.Effect) => + e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + +async function test() { + await run(feed({})); + await run(feed3({})); + await run(feed4({})); + + const { body: { data } } = await run(feed2({})); + + if (data.feed) { + if (data.feed[0]) { + const id = data.feed[0].id + } + } +} +" +`; + +exports[`effect sdk Should support useTypeImports 1`] = ` +"export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +import { Data, Effect } from 'effect'; +import { type DocumentNode, type ExecutionResult, print } from 'graphql'; +import * as Http from '@effect/platform/HttpClient'; +import * as S from '@effect/schema/Schema'; +import gql from 'graphql-tag'; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; +}; + +export type Query = { + __typename?: 'Query'; + /** A feed of repository submissions */ + feed?: Maybe>>; + /** A single entry */ + entry?: Maybe; + /** Return the currently logged in user, or null if nobody is logged in */ + currentUser?: Maybe; +}; + + +export type QueryFeedArgs = { + type: FeedType; + offset?: InputMaybe; + limit?: InputMaybe; +}; + + +export type QueryEntryArgs = { + repoFullName: Scalars['String']; +}; + +/** A list of options for the sort order of the feed */ +export enum FeedType { + /** Sort by a combination of freshness and score, using Reddit's algorithm */ + Hot = 'HOT', + /** Newest entries first */ + New = 'NEW', + /** Highest score entries first */ + Top = 'TOP' +} + +/** Information about a GitHub repository submitted to GitHunt */ +export type Entry = { + __typename?: 'Entry'; + /** Information about the repository from GitHub */ + repository: Repository; + /** The GitHub user who submitted this entry */ + postedBy: User; + /** A timestamp of when the entry was submitted */ + createdAt: Scalars['Float']; + /** The score of this repository, upvotes - downvotes */ + score: Scalars['Int']; + /** The hot score of this repository */ + hotScore: Scalars['Float']; + /** Comments posted about this repository */ + comments: Array>; + /** The number of comments posted about this repository */ + commentCount: Scalars['Int']; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** XXX to be changed */ + vote: Vote; +}; + + +/** Information about a GitHub repository submitted to GitHunt */ +export type EntryCommentsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; +}; + +/** + * A repository object from the GitHub API. This uses the exact field names returned by the + * GitHub API for simplicity, even though the convention for GraphQL is usually to camel case. + */ +export type Repository = { + __typename?: 'Repository'; + /** Just the name of the repository, e.g. GitHunt-API */ + name: Scalars['String']; + /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */ + full_name: Scalars['String']; + /** The description of the repository */ + description?: Maybe; + /** The link to the repository on GitHub */ + html_url: Scalars['String']; + /** The number of people who have starred this repository on GitHub */ + stargazers_count: Scalars['Int']; + /** The number of open issues on this repository on GitHub */ + open_issues_count?: Maybe; + /** The owner of this repository on GitHub, e.g. apollostack */ + owner?: Maybe; +}; + +/** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ +export type User = { + __typename?: 'User'; + /** The name of the user, e.g. apollostack */ + login: Scalars['String']; + /** The URL to a directly embeddable image for this user's avatar */ + avatar_url: Scalars['String']; + /** The URL of this user's GitHub page */ + html_url: Scalars['String']; +}; + +/** A comment about an entry, submitted by a user */ +export type Comment = { + __typename?: 'Comment'; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** The GitHub user who posted the comment */ + postedBy: User; + /** A timestamp of when the comment was posted */ + createdAt: Scalars['Float']; + /** The text of the comment */ + content: Scalars['String']; + /** The repository which this comment is about */ + repoName: Scalars['String']; +}; + +/** XXX to be removed */ +export type Vote = { + __typename?: 'Vote'; + vote_value: Scalars['Int']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + /** Submit a new repository, returns the new submission */ + submitRepository?: Maybe; + /** Vote on a repository submission, returns the submission that was voted on */ + vote?: Maybe; + /** Comment on a repository, returns the new comment */ + submitComment?: Maybe; +}; + + +export type MutationSubmitRepositoryArgs = { + repoFullName: Scalars['String']; +}; + + +export type MutationVoteArgs = { + repoFullName: Scalars['String']; + type: VoteType; +}; + + +export type MutationSubmitCommentArgs = { + repoFullName: Scalars['String']; + commentContent: Scalars['String']; +}; + +/** The type of vote to record, when submitting a vote */ +export enum VoteType { + Up = 'UP', + Down = 'DOWN', + Cancel = 'CANCEL' +} + +export type Subscription = { + __typename?: 'Subscription'; + /** Subscription fires on every comment added */ + commentAdded?: Maybe; +}; + + +export type SubscriptionCommentAddedArgs = { + repoFullName: Scalars['String']; +}; +export type FeedQueryVariables = Exact<{ [key: string]: never; }>; + + +export type FeedQuery = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number, commentCount: number, repository: { __typename?: 'Repository', owner?: { __typename?: 'User', avatar_url: string } | null } } | null> | null }; + +export type Feed2QueryVariables = Exact<{ + v: Scalars['String']; +}>; + + +export type Feed2Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed3QueryVariables = Exact<{ + v?: InputMaybe; +}>; + + +export type Feed3Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed4QueryVariables = Exact<{ + v?: Scalars['String']; +}>; + + +export type Feed4Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export const FeedDocument = gql\` + query feed { + feed { + id + commentCount + repository { + owner { + avatar_url + } + } + } +} + \`; +export const Feed2Document = gql\` + query feed2($v: String!) { + feed { + id + } +} + \`; +export const Feed3Document = gql\` + query feed3($v: String) { + feed { + id + } +} + \`; +export const Feed4Document = gql\` + query feed4($v: String! = "TEST") { + feed { + id + } +} + \`; + +export type GraphQLSuccessResponse = { + body: ExecutionResult & { data: A }; + headers: Record; +}; + +export type GraphQLErrorResponse = { + body: Omit; + headers: Record; +}; + +export class MissingDataGraphQLResponseError extends Data.TaggedError( + 'MissingDataGraphQLResponseError', +) {} + +export type GraphQLOperationOptions = { + preferredOpName?: string; +}; + +type GraphQLOperationArgs = { + document: DocumentNode; + fallbackOperationName: string; +}; + +// https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed +const Accept = 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8'; + +const makeGraphQLClient = Http.client.mapRequest( + Http.request.setHeaders({ Accept, 'Content-Type': 'application/json' }), +); + +const makeGraphQLOperation = + ({ document, fallbackOperationName }: GraphQLOperationArgs) => + (variables: Vars, opts?: GraphQLOperationOptions) => { + const operationName = opts?.preferredOpName ?? fallbackOperationName; + const query = print(document); + + return Effect.flatMap(Http.client.Client, client => + Http.request.post('').pipe( + Http.request.jsonBody({ + query, + operationName, + variables, + }), + Effect.flatMap(Http.client.filterStatusOk(makeGraphQLClient(client))), + Effect.flatMap( + Http.response.schemaJson( + S.struct({ + body: S.any, + headers: S.record(S.string, S.string), + }), + ), + ), + Effect.flatMap(res => { + const body = res.body as ExecutionResult; + const { headers } = res; + + if (body.data) return Effect.succeed(res as GraphQLSuccessResponse); + + return Effect.fail(new MissingDataGraphQLResponseError({ body, headers })); + }), + Effect.scoped, + ), + ); + }; + +export const feed = makeGraphQLOperation({ + document: FeedDocument, + fallbackOperationName: 'feed', +}); +export const feed2 = makeGraphQLOperation({ + document: Feed2Document, + fallbackOperationName: 'feed2', +}); +export const feed3 = makeGraphQLOperation({ + document: Feed3Document, + fallbackOperationName: 'feed3', +}); +export const feed4 = makeGraphQLOperation({ + document: Feed4Document, + fallbackOperationName: 'feed4', +}); + +import { Layer } from 'effect'; +import { NodeHttpClient } from '@effect/platform-node'; + +const HttpClientLive = Layer.effect( + Http.client.Client, + Effect.map( + Http.client.Client, + Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), + ), +).pipe(Layer.provide(NodeHttpClient.layer)); + +const run = (e: Effect.Effect) => + e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + +async function test() { + await run(feed({})); + await run(feed3({})); + await run(feed4({})); + + const { body: { data } } = await run(feed2({})); + + if (data.feed) { + if (data.feed[0]) { + const id = data.feed[0].id + } + } +} +" +`; diff --git a/packages/plugins/typescript/effect/tests/effect.spec.ts b/packages/plugins/typescript/effect/tests/effect.spec.ts new file mode 100644 index 000000000..130262524 --- /dev/null +++ b/packages/plugins/typescript/effect/tests/effect.spec.ts @@ -0,0 +1,285 @@ +import { buildClientSchema, type GraphQLSchema, parse } from 'graphql'; +import { mergeOutputs, type Types } from '@graphql-codegen/plugin-helpers'; +import { validateTs } from '@graphql-codegen/testing'; +import { plugin as tsPlugin, type TypeScriptPluginConfig } from '@graphql-codegen/typescript'; +import { + plugin as tsDocumentsPlugin, + type TypeScriptDocumentsPluginConfig, +} from '@graphql-codegen/typescript-operations'; +import { + DocumentMode, + type RawClientSideBasePluginConfig, +} from '@graphql-codegen/visitor-plugin-common'; +import { plugin } from '../src/index.js'; + +describe('effect', () => { + const schema = buildClientSchema(require('../../../../../dev-test/githunt/schema.json')); + const basicDoc = parse(/* GraphQL */ ` + query feed { + feed { + id + commentCount + repository { + owner { + avatar_url + } + } + } + } + + query feed2($v: String!) { + feed { + id + } + } + + query feed3($v: String) { + feed { + id + } + } + + query feed4($v: String! = "TEST") { + feed { + id + } + } + `); + + const validate = async ( + content: Types.PluginOutput, + config: TypeScriptPluginConfig & + TypeScriptDocumentsPluginConfig & + RawClientSideBasePluginConfig, + docs: Types.DocumentFile[], + pluginSchema: GraphQLSchema, + usage: string, + ) => { + const m = mergeOutputs([ + await tsPlugin(pluginSchema, docs, config, { outputFile: '' }), + await tsDocumentsPlugin(pluginSchema, docs, config), + content, + usage, + ]); + + validateTs(m); + + return m; + }; + + describe('sdk', () => { + it('Should generate the correct content', async () => { + const config = {}; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + + const usage = ` +import { Layer } from 'effect'; +import { NodeHttpClient } from '@effect/platform-node'; + +const HttpClientLive = Layer.effect( + Http.client.Client, + Effect.map( + Http.client.Client, + Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), + ), +).pipe(Layer.provide(NodeHttpClient.layer)); + +const run = (e: Effect.Effect) => + e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + +async function test() { + await run(feed({})); + await run(feed3({})); + await run(feed4({})); + + const { body: { data } } = await run(feed2({})); + + if (data.feed) { + if (data.feed[0]) { + const id = data.feed[0].id + } + } +} +`; + + const output = await validate(result, config, docs, schema, usage); + + expect(result.prepend).toContain("import { Data, Effect } from 'effect';"); + expect(result.prepend).toContain( + "import { DocumentNode, ExecutionResult, print } from 'graphql';", + ); + expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); + expect(result.prepend).toContain("import * as S from '@effect/schema/Schema';"); + expect(output).toMatchSnapshot(); + }); + + it('Should generate the correct content with documentMode=string', async () => { + const config = { documentMode: DocumentMode.string }; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + + const usage = ` +import { Layer } from 'effect'; +import { NodeHttpClient } from '@effect/platform-node'; + +const HttpClientLive = Layer.effect( + Http.client.Client, + Effect.map( + Http.client.Client, + Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), + ), +).pipe(Layer.provide(NodeHttpClient.layer)); + +const run = (e: Effect.Effect) => + e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + +async function test() { + await run(feed({})); + await run(feed3({})); + await run(feed4({})); + + const { body: { data } } = await run(feed2({})); + + if (data.feed) { + if (data.feed[0]) { + const id = data.feed[0].id + } + } +} +`; + + const output = await validate(result, config, docs, schema, usage); + + expect(result.prepend).toContain("import { Data, Effect } from 'effect';"); + expect(result.prepend).toContain( + "import { DocumentNode, ExecutionResult, print } from 'graphql';", + ); + expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); + expect(result.prepend).toContain("import * as S from '@effect/schema/Schema';"); + expect(output).toMatchSnapshot(); + }); + + it('Should support useTypeImports', async () => { + const config = { useTypeImports: true }; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + + const usage = ` +import { Layer } from 'effect'; +import { NodeHttpClient } from '@effect/platform-node'; + +const HttpClientLive = Layer.effect( + Http.client.Client, + Effect.map( + Http.client.Client, + Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), + ), +).pipe(Layer.provide(NodeHttpClient.layer)); + +const run = (e: Effect.Effect) => + e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + +async function test() { + await run(feed({})); + await run(feed3({})); + await run(feed4({})); + + const { body: { data } } = await run(feed2({})); + + if (data.feed) { + if (data.feed[0]) { + const id = data.feed[0].id + } + } +} +`; + + const output = await validate(result, config, docs, schema, usage); + + expect(result.prepend).toContain("import { Data, Effect } from 'effect';"); + expect(result.prepend).toContain( + "import { type DocumentNode, type ExecutionResult, print } from 'graphql';", + ); + expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); + expect(result.prepend).toContain("import * as S from '@effect/schema/Schema';"); + expect(output).toMatchSnapshot(); + }); + + it('Should log a warning when an operation is anonymous', async () => { + const doc = parse(/* GraphQL */ ` + query { + feed { + id + } + } + `); + + const warnSpy = jest.spyOn(console, 'warn'); + const docs = [{ location: 'file.graphql', document: doc }]; + const result = (await plugin(schema, docs, {}, {})) as Types.ComplexPluginOutput; + expect(result.content).not.toContain('feed'); + expect(warnSpy.mock.calls.length).toBe(1); + expect(warnSpy.mock.calls[0][0]).toContain('Anonymous GraphQL operation was ignored'); + expect(warnSpy.mock.calls[0][1]).toContain('feed'); + warnSpy.mockRestore(); + }); + + it('Should integrate with importDocumentNodeExternallyFrom', async () => { + const config = { + importDocumentNodeExternallyFrom: './operations', + documentMode: DocumentMode.external, + }; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + const output = await validate(result, config, docs, schema, ''); + + expect(output).toContain(`import * as Operations from './operations';`); + expect(output).toContain(` +export const feed = makeGraphQLOperation({ + document: Operations.FeedDocument, + fallbackOperationName: 'feed', +});`); + expect(output).toContain(` +export const feed2 = makeGraphQLOperation({ + document: Operations.Feed2Document, + fallbackOperationName: 'feed2', +}); +`); + expect(output).toContain(` +export const feed3 = makeGraphQLOperation({ + document: Operations.Feed3Document, + fallbackOperationName: 'feed3', +}); +`); + expect(output).toContain(` +export const feed4 = makeGraphQLOperation({ + document: Operations.Feed4Document, + fallbackOperationName: 'feed4', +}); +`); + }); + + it('Should honor importOperationTypesFrom', async () => { + const config = { importOperationTypesFrom: 'Types' }; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + const output = await validate(result, config, docs, schema, ''); + + expect(output).toContain(`Types.FeedQuery`); + expect(output).toContain(`Types.Feed2Query`); + expect(output).toContain(`Types.Feed3Query`); + expect(output).toContain(`Types.Feed4Query`); + }); + }); +}); diff --git a/packages/plugins/typescript/effect/tests/integration.spec.ts b/packages/plugins/typescript/effect/tests/integration.spec.ts new file mode 100644 index 000000000..195a58f83 --- /dev/null +++ b/packages/plugins/typescript/effect/tests/integration.spec.ts @@ -0,0 +1,73 @@ +import * as path from 'node:path'; +import * as fs from 'fs-extra'; +import { parse } from 'graphql'; +import { codegen } from '@graphql-codegen/core'; +import { mockGraphQLServer } from '@graphql-codegen/testing'; +import * as TypeScriptPlugin from '@graphql-codegen/typescript'; +import * as TypeScriptOperationsPlugin from '@graphql-codegen/typescript-operations'; +import { makeExecutableSchema } from '@graphql-tools/schema'; +import * as EffectPlugin from '../src/index.js'; + +describe('Effect Integration', () => { + it('should send requests correctly', async () => { + const sdkFileName = 'effect-sdk.ts'; + const sdkFilePath = path.join(__dirname, './test-files', sdkFileName); + const typeDefs = parse(/* GraphQL */ ` + type Query { + add(x: Int!, y: Int!): Int! + } + `); + const schema = makeExecutableSchema({ + typeDefs, + resolvers: { + Query: { + add: (_, { x, y }) => x + y, + }, + }, + }); + const exampleQuery = /* GraphQL */ ` + query Add($x: Int!, $y: Int!) { + add(x: $x, y: $y) + } + `; + const sdkCodeString = await codegen({ + schema: typeDefs, + schemaAst: schema, + documents: [ + { + document: parse(exampleQuery), + rawSDL: exampleQuery, + }, + ], + filename: sdkFileName, + pluginMap: { + typescript: TypeScriptPlugin, + 'typescript-operations': TypeScriptOperationsPlugin, + effect: EffectPlugin, + }, + plugins: [ + { + typescript: {}, + }, + { + 'typescript-operations': {}, + }, + { + effect: {}, + }, + ], + config: {}, + }); + await fs.writeFile(sdkFilePath, sdkCodeString, 'utf-8'); + const mockServer = mockGraphQLServer({ + schema, + host: 'http://localhost:4000', + path: '/graphql', + }); + const { runExampleQuery } = require('./test-files/run-example-query'); + const { body } = await runExampleQuery(2, 3); + expect(body.data.add).toBe(5); + mockServer.done(); + await fs.remove(sdkFilePath); + }); +}); diff --git a/packages/plugins/typescript/effect/tests/test-files/run-example-query.ts b/packages/plugins/typescript/effect/tests/test-files/run-example-query.ts new file mode 100644 index 000000000..0a4766f30 --- /dev/null +++ b/packages/plugins/typescript/effect/tests/test-files/run-example-query.ts @@ -0,0 +1,16 @@ +import { Effect, Layer } from 'effect'; +import { NodeHttpClient } from '@effect/platform-node'; +import * as Http from '@effect/platform/HttpClient'; +import { Add } from './effect-sdk.js'; + +const HttpClientLive = Layer.effect( + Http.client.Client, + Effect.map( + Http.client.Client, + Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), + ), +).pipe(Layer.provide(NodeHttpClient.layer)); + +export const runExampleQuery = (x: number, y: number) => { + return Add({ x, y }).pipe(Effect.provide(HttpClientLive), Effect.runPromise); +}; diff --git a/yarn.lock b/yarn.lock index 96f486b08..71529ed83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,13 +7,13 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" "@apollo/client@3.10.3": version "3.10.3" @@ -58,14 +58,22 @@ signedsource "^1.0.0" yargs "^15.3.1" -"@ardatan/sync-fetch@0.0.1": +"@ardatan/sync-fetch@^0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz#3385d3feedceb60a896518a1db857ec1e945348f" integrity sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA== dependencies: node-fetch "^2.6.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.1.tgz#8f4027f85a6e84a695276080e864215318f95c19" + integrity sha512-bC49z4spJQR3j8vFtJBLqzyzFV0ciuL5HYX7qfSl3KEqeMVV+eTquRvmXxpvB0AMubRrvv7y5DILiLLPi57Ewg== + dependencies: + "@babel/highlight" "^7.24.1" + picocolors "^1.0.0" + +"@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== @@ -73,33 +81,17 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/compat-data@^7.20.1", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742" + integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA== + +"@babel/compat-data@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" - integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.7" - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.8" - "@babel/parser" "^7.17.8" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - -"@babel/core@7.24.5", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.0": +"@babel/core@7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== @@ -120,6 +112,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.1.tgz#b802f931b6498dcb8fed5a4710881a45abbc2784" + integrity sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.24.1" + "@babel/parser" "^7.24.1" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" @@ -129,7 +142,17 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.14.0", "@babel/generator@^7.17.3", "@babel/generator@^7.17.7", "@babel/generator@^7.18.13", "@babel/generator@^7.24.5", "@babel/generator@^7.7.2": +"@babel/generator@^7.14.0", "@babel/generator@^7.18.13", "@babel/generator@^7.23.0", "@babel/generator@^7.7.2": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" + integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== + dependencies: + "@babel/types" "^7.24.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/generator@^7.24.1", "@babel/generator@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== @@ -139,7 +162,7 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5": +"@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== @@ -153,7 +176,7 @@ dependencies: "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== @@ -199,12 +222,12 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.22.20": +"@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -212,7 +235,7 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" -"@babel/helper-hoist-variables@^7.16.7", "@babel/helper-hoist-variables@^7.22.5": +"@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== @@ -226,14 +249,32 @@ dependencies: "@babel/types" "^7.24.5" -"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.1.tgz#961ea2c12aad6cfc75b8c396c81608a08283027b" + integrity sha512-HfEWzysMyOa7xI5uQHc/OcZf67/jc+xe/RZlznWQHhbb8Pg1SkRdbK4yEi61aY8wxQA7PkSfoojtLQP/Kpe3og== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-imports@^7.24.3": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== dependencies: "@babel/types" "^7.24.0" -"@babel/helper-module-transforms@^7.17.7", "@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5": +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-module-transforms@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== @@ -288,14 +329,21 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.16.7", "@babel/helper-split-export-declaration@^7.24.5": +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== dependencies: "@babel/types" "^7.24.5" -"@babel/helper-string-parser@^7.24.1": +"@babel/helper-string-parser@^7.23.4", "@babel/helper-string-parser@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== @@ -319,7 +367,7 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.17.8", "@babel/helpers@^7.24.5": +"@babel/helpers@^7.24.1", "@babel/helpers@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== @@ -328,6 +376,16 @@ "@babel/traverse" "^7.24.5" "@babel/types" "^7.24.5" +"@babel/highlight@^7.24.1": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" + integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.5" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/highlight@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" @@ -338,12 +396,12 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" - integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.8", "@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.24.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" + integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== -"@babel/parser@^7.1.0", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.8", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": +"@babel/parser@^7.24.1", "@babel/parser@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== @@ -389,15 +447,15 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-object-rest-spread@^7.0.0": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d" - integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-parameters" "^7.20.7" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -446,14 +504,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" - integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" + integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-syntax-import-assertions@^7.24.1": +"@babel/plugin-syntax-import-assertions@^7.20.0", "@babel/plugin-syntax-import-assertions@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== @@ -481,7 +539,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.24.1": +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== @@ -685,12 +743,12 @@ "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.18.6.tgz#6d3dd9f9c0fe13349428569fef00b31310bb3f9f" - integrity sha512-wE0xtA7csz+hw4fKPwxmu5jnzAsXPIO57XnRwzXP3T19jWh1BODnPGoG9xKYwvAwusP7iUktHayRFbMPGtODaQ== + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" + integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-flow" "^7.18.6" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-flow" "^7.24.1" "@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.24.1": version "7.24.1" @@ -840,7 +898,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.24.5": +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" + integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-parameters@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== @@ -873,22 +938,22 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-transform-react-display-name@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" - integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" + integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-transform-react-jsx@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz#2721e96d31df96e3b7ad48ff446995d26bc028ff" - integrity sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw== + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" "@babel/plugin-transform-regenerator@^7.24.1": version "7.24.1" @@ -1095,13 +1160,13 @@ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.0.0", "@babel/runtime@^7.20.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" - integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57" + integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ== dependencies: - regenerator-runtime "^0.13.11" + regenerator-runtime "^0.14.0" -"@babel/template@^7.16.7", "@babel/template@^7.18.10", "@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": +"@babel/template@^7.18.10", "@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== @@ -1110,23 +1175,39 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" -"@babel/traverse@7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" +"@babel/traverse@7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.24.5", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.7.2": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" + integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== + dependencies: + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.24.1" + "@babel/types" "^7.24.0" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/traverse@^7.24.1", "@babel/traverse@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== @@ -1150,7 +1231,16 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.13", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@babel/types@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== @@ -1387,6 +1477,38 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@effect/platform-node-shared@^0.3.11": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@effect/platform-node-shared/-/platform-node-shared-0.3.11.tgz#c90757c95387038bbe97d072af1c8b7396e09863" + integrity sha512-juXDDyPJ5REs47XeY9kwWDwHcddHLrXhyjgqEca9wxjG0n+SqOMtBSjLiggA/GbXVZjOC9pCAJi68CY/QHCN0g== + dependencies: + "@parcel/watcher" "^2.4.1" + multipasta "^0.1.21" + +"@effect/platform-node@~0.45.10": + version "0.45.13" + resolved "https://registry.yarnpkg.com/@effect/platform-node/-/platform-node-0.45.13.tgz#c562a0d52841529d11af6bd8c871a34d1a6d9792" + integrity sha512-fHiZEsANZDUU4GosGDznBd9RJsQLmmAwRhZdPm1jwLKK21gn4Gzjzx7uh3oEhQxvJStAYgQCizNhE/1MqTOzgA== + dependencies: + "@effect/platform-node-shared" "^0.3.11" + mime "^3.0.0" + ws "^8.16.0" + +"@effect/platform@~0.48.8": + version "0.48.11" + resolved "https://registry.yarnpkg.com/@effect/platform/-/platform-0.48.11.tgz#ed9b12b6b96069cfe6957e8e9366442fe4c6fd9c" + integrity sha512-ErGcEzaxK1jXqXi70qNdFwxLN4W3sPCCJjGs1p+/zsSzLs5xSlfqbPewtS84NOLBdzaRXR03zjXjW4ZY0XWNSg== + dependencies: + find-my-way-ts "^0.1.1" + isomorphic-ws "^5.0.0" + multipasta "^0.1.21" + path-browserify "^1.0.1" + +"@effect/schema@^0.64.7": + version "0.64.7" + resolved "https://registry.yarnpkg.com/@effect/schema/-/schema-0.64.7.tgz#ef237b7c7ebb5cd51ac179c0cb5b33e30157c43a" + integrity sha512-iTfA7M+sjeoApwJfaalybbR25w/TW2GCerqdftxlwwNco3uOCOzB6nalmRaN4NinjSpcgg15nkDtugvAOQqrOA== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1419,6 +1541,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + "@fastify/merge-json-schemas@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz#3551857b8a17a24e8c799e9f51795edb07baa0bc" @@ -1427,11 +1554,11 @@ fast-deep-equal "^3.1.3" "@graphql-codegen/add@^3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-3.2.1.tgz#f1109f36f194f88a6abcc51703abee43ebbb50a2" - integrity sha512-w82H/evh8SSGoD3K6K/Oh3kqSdbuU+TgHqMYmmHFxtH692v2xhN/cu1s/TotBQ7r4mO7OQutze7dde2tZEXGEQ== + version "3.2.3" + resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-3.2.3.tgz#f1ecee085987e7c21841edc4b1fd48877c663e1a" + integrity sha512-sQOnWpMko4JLeykwyjFTxnhqjd/3NOG2OyMuvK76Wnnwh8DRrNf2VEs2kmSvLl7MndMlOj7Kh5U154dVcvhmKQ== dependencies: - "@graphql-codegen/plugin-helpers" "^2.6.2" + "@graphql-codegen/plugin-helpers" "^3.1.1" tslib "~2.4.0" "@graphql-codegen/cli@2.13.9": @@ -1486,7 +1613,7 @@ "@graphql-tools/utils" "^8.8.0" tslib "~2.4.0" -"@graphql-codegen/plugin-helpers@^2.6.2", "@graphql-codegen/plugin-helpers@^2.7.2": +"@graphql-codegen/plugin-helpers@^2.7.2": version "2.7.2" resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz#6544f739d725441c826a8af6a49519f588ff9bed" integrity sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg== @@ -1498,7 +1625,7 @@ lodash "~4.17.0" tslib "~2.4.0" -"@graphql-codegen/plugin-helpers@^3.0.0", "@graphql-codegen/plugin-helpers@^3.1.2": +"@graphql-codegen/plugin-helpers@^3.0.0", "@graphql-codegen/plugin-helpers@^3.1.1", "@graphql-codegen/plugin-helpers@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz#69a2e91178f478ea6849846ade0a59a844d34389" integrity sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg== @@ -1510,35 +1637,35 @@ lodash "~4.17.0" tslib "~2.4.0" -"@graphql-codegen/plugin-helpers@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-4.0.0.tgz#9c10e4700dc6efe657781dff47347d0c99674061" - integrity sha512-vgNGTanT36hC4RAC/LAThMEjDvnu3WCyx6MtKZcPUtfCWFxbUAr88+OarGl1LAEiOef0agIREC7tIBXCqjKkJA== +"@graphql-codegen/plugin-helpers@^4.0.0", "@graphql-codegen/plugin-helpers@^4.1.0", "@graphql-codegen/plugin-helpers@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-4.2.0.tgz#8324914d0f99162a223cfa01796cdd6be972d2ae" + integrity sha512-THFTCfg+46PXlXobYJ/OoCX6pzjI+9woQqCjdyKtgoI0tn3Xq2HUUCiidndxUpEYVrXb5pRiRXb7b/ZbMQqD0A== dependencies: "@graphql-tools/utils" "^9.0.0" change-case-all "1.0.15" common-tags "1.8.2" import-from "4.0.0" lodash "~4.17.0" - tslib "~2.4.0" + tslib "~2.5.0" -"@graphql-codegen/schema-ast@^2.5.0", "@graphql-codegen/schema-ast@^2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-2.5.1.tgz#ce030ae6de5dacd745848009ba0ca18c9c30910c" - integrity sha512-tewa5DEKbglWn7kYyVBkh3J8YQ5ALqAMVmZwiVFIGOao5u66nd+e4HuFqp0u+Jpz4SJGGi0ap/oFrEvlqLjd2A== +"@graphql-codegen/schema-ast@^2.5.0", "@graphql-codegen/schema-ast@^2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-2.6.1.tgz#8ba1b38827c034b51ecd3ce88622c2ae6cd3fe1a" + integrity sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w== dependencies: - "@graphql-codegen/plugin-helpers" "^2.6.2" - "@graphql-tools/utils" "^8.8.0" + "@graphql-codegen/plugin-helpers" "^3.1.2" + "@graphql-tools/utils" "^9.0.0" tslib "~2.4.0" -"@graphql-codegen/schema-ast@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-3.0.0.tgz#3311a58184f885853d33d8272c527ff5bdf3023b" - integrity sha512-5gC8nNk/bxufS2LBSpaPExRgn6eNo8LQdtwDtwfM9XGEzt/F6rIBQoyOmqqwkiBmgu1PHHH8kLZMBYvYB1x5DA== +"@graphql-codegen/schema-ast@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-3.0.1.tgz#37b458bb57b95715a9eb4259341c856dae2a461d" + integrity sha512-rTKTi4XiW4QFZnrEqetpiYEWVsOFNoiR/v3rY9mFSttXFbIwNXPme32EspTiGWmEEdHY8UuTDtZN3vEcs/31zw== dependencies: - "@graphql-codegen/plugin-helpers" "^4.0.0" + "@graphql-codegen/plugin-helpers" "^4.1.0" "@graphql-tools/utils" "^9.0.0" - tslib "~2.4.0" + tslib "~2.5.0" "@graphql-codegen/testing@1.18.0": version "1.18.0" @@ -1564,26 +1691,26 @@ tslib "~2.4.0" "@graphql-codegen/typescript@^2.8.1": - version "2.8.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.8.1.tgz#2742ab4e1bcc47aebba3f84dcdce3782071e1191" - integrity sha512-kweV1DOOH2blvMheVL55TT0s9bxkmF/zijN9mdk9pRD20i/rI/46qbh8fNKqy/PV12vZOmZGNL6tigdghG2bqg== + version "2.8.8" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.8.8.tgz#8c3b9153e334db43c65f8f31ced69b4c60d14861" + integrity sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw== dependencies: - "@graphql-codegen/plugin-helpers" "^2.7.2" - "@graphql-codegen/schema-ast" "^2.5.1" - "@graphql-codegen/visitor-plugin-common" "2.13.1" + "@graphql-codegen/plugin-helpers" "^3.1.2" + "@graphql-codegen/schema-ast" "^2.6.1" + "@graphql-codegen/visitor-plugin-common" "2.13.8" auto-bind "~4.0.0" tslib "~2.4.0" "@graphql-codegen/typescript@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-3.0.0.tgz#473dde1646540039bca5db4b6daf174d13af0ce3" - integrity sha512-FQWyuIUy1y+fxb9+EZfvdBHBQpYExlIBHV5sg2WGNCsyVyCqBTl0mO8icyOtsQPVg6YFMFe8JJO69vQbwHma5w== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-3.0.4.tgz#e12dc106a2722ebc7d18556980ccf47fa9d0805f" + integrity sha512-x4O47447DZrWNtE/l5CU9QzzW4m1RbmCEdijlA3s2flG/y1Ckqdemob4CWfilSm5/tZ3w1junVDY616RDTSvZw== dependencies: - "@graphql-codegen/plugin-helpers" "^4.0.0" - "@graphql-codegen/schema-ast" "^3.0.0" - "@graphql-codegen/visitor-plugin-common" "3.0.0" + "@graphql-codegen/plugin-helpers" "^4.2.0" + "@graphql-codegen/schema-ast" "^3.0.1" + "@graphql-codegen/visitor-plugin-common" "3.1.1" auto-bind "~4.0.0" - tslib "~2.4.0" + tslib "~2.5.0" "@graphql-codegen/visitor-plugin-common@2.13.1": version "2.13.1" @@ -1601,7 +1728,7 @@ parse-filepath "^1.0.2" tslib "~2.4.0" -"@graphql-codegen/visitor-plugin-common@2.13.7", "@graphql-codegen/visitor-plugin-common@^2.12.1": +"@graphql-codegen/visitor-plugin-common@2.13.7": version "2.13.7" resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.7.tgz#591e054a970a0d572bdfb765bf948dae21bf8aed" integrity sha512-xE6iLDhr9sFM1qwCGJcCXRu5MyA0moapG2HVejwyAXXLubYKYwWnoiEigLH2b5iauh6xsl6XP8hh9D1T1dn5Cw== @@ -1617,6 +1744,22 @@ parse-filepath "^1.0.2" tslib "~2.4.0" +"@graphql-codegen/visitor-plugin-common@2.13.8", "@graphql-codegen/visitor-plugin-common@^2.12.1": + version "2.13.8" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.8.tgz#09bc6317b227e5a278f394f4cef0d6c2d1910597" + integrity sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ== + dependencies: + "@graphql-codegen/plugin-helpers" "^3.1.2" + "@graphql-tools/optimize" "^1.3.0" + "@graphql-tools/relay-operation-optimizer" "^6.5.0" + "@graphql-tools/utils" "^9.0.0" + auto-bind "~4.0.0" + change-case-all "1.0.15" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.4.0" + "@graphql-codegen/visitor-plugin-common@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-3.0.0.tgz#527185eb3b1b06739702084bc6263713e167a166" @@ -1633,123 +1776,183 @@ parse-filepath "^1.0.2" tslib "~2.4.0" +"@graphql-codegen/visitor-plugin-common@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-3.1.1.tgz#50c2aa3c537a805ce68d2f115d0a9811b151428c" + integrity sha512-uAfp+zu/009R3HUAuTK2AamR1bxIltM6rrYYI6EXSmkM3rFtFsLTuJhjUDj98HcUCszJZrADppz8KKLGRUVlNg== + dependencies: + "@graphql-codegen/plugin-helpers" "^4.2.0" + "@graphql-tools/optimize" "^1.3.0" + "@graphql-tools/relay-operation-optimizer" "^6.5.0" + "@graphql-tools/utils" "^9.0.0" + auto-bind "~4.0.0" + change-case-all "1.0.15" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.5.0" + "@graphql-tools/apollo-engine-loader@^7.3.6": - version "7.3.15" - resolved "https://registry.yarnpkg.com/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.3.15.tgz#2eae5c107029f2a0f40b73ab1c180bf96d788de4" - integrity sha512-MzdpnFa48CueKDDv0DjhJxjoFD2oMCXZHcDFJEKNX81AwGLA4b3fW4s+JLPEahIAsnpnh94gmglQX2VH7f006A== + version "7.3.26" + resolved "https://registry.yarnpkg.com/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.3.26.tgz#91e54460d5579933e42a2010b8688c3459c245d8" + integrity sha512-h1vfhdJFjnCYn9b5EY1Z91JTF0KB3hHVJNQIsiUV2mpQXZdeOXQoaWeYEKaiI5R6kwBw5PP9B0fv3jfUIG8LyQ== dependencies: - "@ardatan/sync-fetch" "0.0.1" - "@graphql-tools/utils" "8.13.1" - "@whatwg-node/fetch" "^0.5.0" + "@ardatan/sync-fetch" "^0.0.1" + "@graphql-tools/utils" "^9.2.1" + "@whatwg-node/fetch" "^0.8.0" tslib "^2.4.0" -"@graphql-tools/batch-execute@8.5.8": - version "8.5.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.5.8.tgz#9d51610f33740befb90043070c169f069d4cf8c4" - integrity sha512-epYOlU2DgJz7NGCfOiRYJ6yClu6G+OuuZeMzmWRRjUun5gO5rcZ0pdL9BH7i+JE1NycXy68y+mOWnW9U85AGTA== +"@graphql-tools/batch-execute@^8.5.22": + version "8.5.22" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.5.22.tgz#a742aa9d138fe794e786d8fb6429665dc7df5455" + integrity sha512-hcV1JaY6NJQFQEwCKrYhpfLK8frSXDbtNMoTur98u10Cmecy1zrqNKSqhEyGetpgHxaJRqszGzKeI3RuroDN6A== dependencies: - "@graphql-tools/utils" "8.13.1" - dataloader "2.1.0" + "@graphql-tools/utils" "^9.2.1" + dataloader "^2.2.2" tslib "^2.4.0" - value-or-promise "1.0.11" + value-or-promise "^1.0.12" "@graphql-tools/code-file-loader@^7.3.1": - version "7.3.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-7.3.8.tgz#325b12a4dff5e7dce4aa476938db327498c5e1da" - integrity sha512-L+KWsVOjKd7ilESk1eqXgPrW+ynK4+JAgrEDYSHDmDmGFC17Y+q8R5doCjv3EXYw55fn41OQpNw5pwLkDNrf1g== + version "7.3.23" + resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-7.3.23.tgz#33793f9a1f8e74981f8ae6ec4ab7061f9713db15" + integrity sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q== dependencies: - "@graphql-tools/graphql-tag-pluck" "7.3.8" - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/graphql-tag-pluck" "7.5.2" + "@graphql-tools/utils" "^9.2.1" globby "^11.0.3" tslib "^2.4.0" unixify "^1.0.0" -"@graphql-tools/delegate@9.0.10": - version "9.0.10" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-9.0.10.tgz#306a7f6689b164e7bd6def385dea3d8a838206c1" - integrity sha512-mzj46wLc7JpSlVE5OO/jWK4Y+CBq7dNCEfrCFh04/r4ezjIsSW+JqteCG0FXZMaZouRz8MpozVEG+Epr2rPwQQ== +"@graphql-tools/delegate@^9.0.31": + version "9.0.35" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-9.0.35.tgz#94683f4bcec63520b4a6c8b2abf2e2e9324ea4f1" + integrity sha512-jwPu8NJbzRRMqi4Vp/5QX1vIUeUPpWmlQpOkXQD2r1X45YsVceyUUBnktCrlJlDB4jPRVy7JQGwmYo3KFiOBMA== + dependencies: + "@graphql-tools/batch-execute" "^8.5.22" + "@graphql-tools/executor" "^0.0.20" + "@graphql-tools/schema" "^9.0.19" + "@graphql-tools/utils" "^9.2.1" + dataloader "^2.2.2" + tslib "^2.5.0" + value-or-promise "^1.0.12" + +"@graphql-tools/executor-graphql-ws@^0.0.14": + version "0.0.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-0.0.14.tgz#e0f53fc4cfc8a06cc461b2bc1edb4bb9a8e837ed" + integrity sha512-P2nlkAsPZKLIXImFhj0YTtny5NQVGSsKnhi7PzXiaHSXc6KkzqbWZHKvikD4PObanqg+7IO58rKFpGXP7eeO+w== dependencies: - "@graphql-tools/batch-execute" "8.5.8" - "@graphql-tools/executor" "0.0.2" - "@graphql-tools/schema" "9.0.6" - "@graphql-tools/utils" "8.13.1" - dataloader "2.1.0" - tslib "~2.4.0" - value-or-promise "1.0.11" + "@graphql-tools/utils" "^9.2.1" + "@repeaterjs/repeater" "3.0.4" + "@types/ws" "^8.0.0" + graphql-ws "5.12.1" + isomorphic-ws "5.0.0" + tslib "^2.4.0" + ws "8.13.0" -"@graphql-tools/executor@0.0.2": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-0.0.2.tgz#210c10ca3132cac6b9953a4aae3fbd3fc8498407" - integrity sha512-z87YxQUzxv6SffOEHoEf1jOrkOx45Mh+fQQtD5Kg/qhQuFEhQxxnrYzUYnZjZfMwGlijN4osAN970YMqpHMhmQ== +"@graphql-tools/executor-http@^0.1.7", "@graphql-tools/executor-http@^0.1.9": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-http/-/executor-http-0.1.10.tgz#faf48e18e62a925796c9653c2f50cf2095bc8e6f" + integrity sha512-hnAfbKv0/lb9s31LhWzawQ5hghBfHS+gYWtqxME6Rl0Aufq9GltiiLBcl7OVVOnkLF0KhwgbYP1mB5VKmgTGpg== dependencies: - "@graphql-tools/utils" "8.13.1" - "@graphql-typed-document-node/core" "3.1.1" + "@graphql-tools/utils" "^9.2.1" + "@repeaterjs/repeater" "^3.0.4" + "@whatwg-node/fetch" "^0.8.1" + dset "^3.1.2" + extract-files "^11.0.0" + meros "^1.2.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/executor-legacy-ws@^0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-0.0.11.tgz#a1e12be8279e92a363a23d4105461a34cd9e389e" + integrity sha512-4ai+NnxlNfvIQ4c70hWFvOZlSUN8lt7yc+ZsrwtNFbFPH/EroIzFMapAxM9zwyv9bH38AdO3TQxZ5zNxgBdvUw== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@types/ws" "^8.0.0" + isomorphic-ws "5.0.0" + tslib "^2.4.0" + ws "8.13.0" + +"@graphql-tools/executor@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-0.0.20.tgz#d51d159696e839522dd49d936636af251670e425" + integrity sha512-GdvNc4vszmfeGvUqlcaH1FjBoguvMYzxAfT6tDd4/LgwymepHhinqLNA5otqwVLW+JETcDaK7xGENzFomuE6TA== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@graphql-typed-document-node/core" "3.2.0" + "@repeaterjs/repeater" "^3.0.4" + tslib "^2.4.0" + value-or-promise "^1.0.12" "@graphql-tools/git-loader@^7.2.1": - version "7.2.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-7.2.8.tgz#87924042d19173c04ef62e093eac44b5aeb4c491" - integrity sha512-zezNHiBDp8WiAoIgRjAxyvmHlw1qLAYNd/Bs9yNLfxV+j/wJuMO41IKGf7rId8U3rE+QuEh1okDhPPTRNeK/WQ== + version "7.3.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-7.3.0.tgz#ca10c17d4f58c4592432d9d2ac1c2b393aebad16" + integrity sha512-gcGAK+u16eHkwsMYqqghZbmDquh8QaO24Scsxq+cVR+vx1ekRlsEiXvu+yXVDbZdcJ6PBIbeLcQbEu+xhDLmvQ== dependencies: - "@graphql-tools/graphql-tag-pluck" "7.3.8" - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/graphql-tag-pluck" "7.5.2" + "@graphql-tools/utils" "^9.2.1" is-glob "4.0.3" micromatch "^4.0.4" tslib "^2.4.0" unixify "^1.0.0" "@graphql-tools/github-loader@^7.3.6": - version "7.3.15" - resolved "https://registry.yarnpkg.com/@graphql-tools/github-loader/-/github-loader-7.3.15.tgz#609015da579202ed4c364a57457b66f133d11494" - integrity sha512-PwEnTvJcIlmywG/+wW6XhoI6QNeTwn5kWLS6Ynaq8yHt6XWMLABk62ETjT9fPED4I+h+FduLQ+xtFxO6uePjIw== - dependencies: - "@ardatan/sync-fetch" "0.0.1" - "@graphql-tools/graphql-tag-pluck" "7.3.8" - "@graphql-tools/utils" "8.13.1" - "@whatwg-node/fetch" "^0.5.0" + version "7.3.28" + resolved "https://registry.yarnpkg.com/@graphql-tools/github-loader/-/github-loader-7.3.28.tgz#a7166b136e8442bd8b3ab943ad3b66c84bcabfcf" + integrity sha512-OK92Lf9pmxPQvjUNv05b3tnVhw0JRfPqOf15jZjyQ8BfdEUrJoP32b4dRQQem/wyRL24KY4wOfArJNqzpsbwCA== + dependencies: + "@ardatan/sync-fetch" "^0.0.1" + "@graphql-tools/executor-http" "^0.1.9" + "@graphql-tools/graphql-tag-pluck" "^7.4.6" + "@graphql-tools/utils" "^9.2.1" + "@whatwg-node/fetch" "^0.8.0" tslib "^2.4.0" + value-or-promise "^1.0.12" "@graphql-tools/graphql-file-loader@^7.3.7", "@graphql-tools/graphql-file-loader@^7.5.0": - version "7.5.7" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.5.7.tgz#4206c5615e76105c5eddb42d6523a291449213d6" - integrity sha512-CJrF3JHrVmoAOnHYPLWt4wgfBz2XJ6zfj5T9PhciOPOUjRjHG/IHIVFJ6MPzgGv0rFjJjbJmIo6n7FLElsg61A== + version "7.5.17" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.5.17.tgz#7c281617ea3ab4db4d42a2bdb49850f2b937f0f9" + integrity sha512-hVwwxPf41zOYgm4gdaZILCYnKB9Zap7Ys9OhY1hbwuAuC4MMNY9GpUjoTU3CQc3zUiPoYStyRtUGkHSJZ3HxBw== dependencies: - "@graphql-tools/import" "6.7.8" - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/import" "6.7.18" + "@graphql-tools/utils" "^9.2.1" globby "^11.0.3" tslib "^2.4.0" unixify "^1.0.0" -"@graphql-tools/graphql-tag-pluck@7.3.8": - version "7.3.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.3.8.tgz#59513a49ab16cae880059c72f1e380316e56f7a7" - integrity sha512-zxnvswC3Vatqq/4Z3A+pgaSH2iOdWL7ndjJeHxnv6gUw59/O/DtIC4JSFaDiRqdfzIzj2mrbIKgeIgYlTF2VtQ== +"@graphql-tools/graphql-tag-pluck@7.5.2", "@graphql-tools/graphql-tag-pluck@^7.4.6": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.5.2.tgz#502f1e066e19d832ebdeba5f571d7636dc27572d" + integrity sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA== dependencies: "@babel/parser" "^7.16.8" + "@babel/plugin-syntax-import-assertions" "^7.20.0" "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/utils" "^9.2.1" tslib "^2.4.0" -"@graphql-tools/import@6.7.8": - version "6.7.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.7.8.tgz#7c30fd7fd44ff0bf5d0778d370096f2826efad5b" - integrity sha512-kjC/cKNRtFJj5VZOPyXkhINbFtslm5UUHhyzDoJOMCe8hzPkMtgcvpRrcBRQG9UA7TMKaOobIZhjZgR22piKBg== +"@graphql-tools/import@6.7.18": + version "6.7.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.7.18.tgz#ad092d8a4546bb6ffc3e871e499eec7ac368680b" + integrity sha512-XQDdyZTp+FYmT7as3xRWH/x8dx0QZA2WZqfMF5EWb36a0PiH7WwlRQYIdyYXj8YCLpiWkeBXgBRHmMnwEYR8iQ== dependencies: - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/utils" "^9.2.1" resolve-from "5.0.0" tslib "^2.4.0" "@graphql-tools/json-file-loader@^7.3.7", "@graphql-tools/json-file-loader@^7.4.1": - version "7.4.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-7.4.8.tgz#0af7c749a3407c442719e9c228724f29874786ee" - integrity sha512-xyo11rin7bIhdbY4NW/QoZSn+UzLn5/PX6L3htpZ4S10DvLci0BmH8oyW80TbZj84RsPUhIje2mJJ7sOc41QcQ== + version "7.4.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-7.4.18.tgz#d78ae40979bde51cfc59717757354afc9e35fba2" + integrity sha512-AJ1b6Y1wiVgkwsxT5dELXhIVUPs/u3VZ8/0/oOtpcoyO/vAeM5rOvvWegzicOOnQw8G45fgBRMkkRfeuwVt6+w== dependencies: - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/utils" "^9.2.1" globby "^11.0.3" tslib "^2.4.0" unixify "^1.0.0" -"@graphql-tools/load@7.8.0", "@graphql-tools/load@^7.5.5": +"@graphql-tools/load@7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.8.0.tgz#bd4d2e2a5117de9a60f9691a218217e96afc2ea7" integrity sha512-l4FGgqMW0VOqo+NMYizwV8Zh+KtvVqOf93uaLo9wJ3sS3y/egPCgxPMDJJ/ufQZG3oZ/0oWeKt68qop3jY0yZg== @@ -1759,6 +1962,16 @@ p-limit "3.1.0" tslib "^2.4.0" +"@graphql-tools/load@^7.5.5": + version "7.8.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.8.14.tgz#f2356f9a5f658a42e33934ae036e4b2cadf2d1e9" + integrity sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg== + dependencies: + "@graphql-tools/schema" "^9.0.18" + "@graphql-tools/utils" "^9.2.1" + p-limit "3.1.0" + tslib "^2.4.0" + "@graphql-tools/merge@8.3.6": version "8.3.6" resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.6.tgz#97a936d4c8e8f935e58a514bb516c476437b5b2c" @@ -1767,12 +1980,12 @@ "@graphql-tools/utils" "8.12.0" tslib "^2.4.0" -"@graphql-tools/merge@8.3.8", "@graphql-tools/merge@^8.2.6": - version "8.3.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.8.tgz#6d1232b7d0e927edec27789b78853e01233a8f29" - integrity sha512-L9YE8OpxSlzADcdrc4IG7/33H/iWVXTJXX2ie67cWAb5MFN2t3JBdQMa0bnBcAoOrKB7A8g2+dIp8oXTpdzxjg== +"@graphql-tools/merge@^8.2.6", "@graphql-tools/merge@^8.4.1": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.4.2.tgz#95778bbe26b635e8d2f60ce9856b388f11fe8288" + integrity sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw== dependencies: - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/utils" "^9.2.1" tslib "^2.4.0" "@graphql-tools/merge@^9.0.3": @@ -1784,44 +1997,43 @@ tslib "^2.4.0" "@graphql-tools/optimize@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-1.3.0.tgz#11ea27ac73e857d882ccfd7a3a981d8d6fb521e2" - integrity sha512-30QOWJoMJEt1De7tAFtWJ6VPrP6SLq+tSQrA3x+WMvCW3q2exq5wPDpvAXOakVKu0y8L2E+YkipC0hcQPBQdLg== + version "1.4.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-1.4.0.tgz#20d6a9efa185ef8fc4af4fd409963e0907c6e112" + integrity sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw== dependencies: tslib "^2.4.0" "@graphql-tools/prisma-loader@^7.2.7": - version "7.2.26" - resolved "https://registry.yarnpkg.com/@graphql-tools/prisma-loader/-/prisma-loader-7.2.26.tgz#4e5f2ca204259e3ca5a3038d1bde7b2ada63f5a0" - integrity sha512-zFoKUh2XFFgHkic9BmeQWjq1GHM9fSBIi8Mid6ox8w6FgZ8/fMZeqz8uzN8hX5zKzg6DD+PIfxaGFwM0N/ueHQ== + version "7.2.72" + resolved "https://registry.yarnpkg.com/@graphql-tools/prisma-loader/-/prisma-loader-7.2.72.tgz#6304fc23600458396f3ede713d8e2371df7850e3" + integrity sha512-0a7uV7Fky6yDqd0tI9+XMuvgIo6GAqiVzzzFV4OSLry4AwiQlI3igYseBV7ZVOGhedOTqj/URxjpiv07hRcwag== dependencies: - "@graphql-tools/url-loader" "7.16.6" - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/url-loader" "^7.17.18" + "@graphql-tools/utils" "^9.2.1" "@types/js-yaml" "^4.0.0" "@types/json-stable-stringify" "^1.0.32" - "@types/jsonwebtoken" "^8.5.0" + "@whatwg-node/fetch" "^0.8.2" chalk "^4.1.0" debug "^4.3.1" dotenv "^16.0.0" - graphql-request "^5.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - isomorphic-fetch "^3.0.0" + graphql-request "^6.0.0" + http-proxy-agent "^6.0.0" + https-proxy-agent "^6.0.0" + jose "^4.11.4" js-yaml "^4.0.0" json-stable-stringify "^1.0.1" - jsonwebtoken "^8.5.1" lodash "^4.17.20" scuid "^1.1.0" tslib "^2.4.0" yaml-ast-parser "^0.0.43" "@graphql-tools/relay-operation-optimizer@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.0.tgz#eb51e45c5fb46d472eb2ebfbbcc9cdc0f2a9913c" - integrity sha512-snqmdPiM2eBex6pijRFx4H9MPumVd8ZWM3y+aaRwzc73VUNnjHE4NyVZEEIdlbmJ2HoQ9Zrm9aFlHVMK7B59zg== + version "6.5.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz#a1b74a8e0a5d0c795b8a4d19629b654cf66aa5ab" + integrity sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg== dependencies: "@ardatan/relay-compiler" "12.0.0" - "@graphql-tools/utils" "8.8.0" + "@graphql-tools/utils" "^9.2.1" tslib "^2.4.0" "@graphql-tools/schema@10.0.3": @@ -1844,35 +2056,34 @@ tslib "^2.4.0" value-or-promise "1.0.11" -"@graphql-tools/schema@9.0.6", "@graphql-tools/schema@^9.0.0": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.6.tgz#4ecd2ef2f29cf1a1a47759a91c73e2043f89e9ec" - integrity sha512-/aznltpnVrurfWqXB4chWtaNmBFSk9v/KEJSpvas2fnlwwS9QnzWh6Sm/hsybWesirn5J2w60LLjMrrcCd58UA== +"@graphql-tools/schema@^9.0.0", "@graphql-tools/schema@^9.0.18", "@graphql-tools/schema@^9.0.19": + version "9.0.19" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.19.tgz#c4ad373b5e1b8a0cf365163435b7d236ebdd06e7" + integrity sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w== dependencies: - "@graphql-tools/merge" "8.3.8" - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/merge" "^8.4.1" + "@graphql-tools/utils" "^9.2.1" tslib "^2.4.0" - value-or-promise "1.0.11" + value-or-promise "^1.0.12" -"@graphql-tools/url-loader@7.16.6", "@graphql-tools/url-loader@^7.13.2", "@graphql-tools/url-loader@^7.9.7": - version "7.16.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-7.16.6.tgz#f53ab6e7351665c903541826a7996255c31f85cc" - integrity sha512-wb1x2I/QwZecmO4QXf7FhG7lifT+U5jnXa9X4s/SKMXrKsNQXrC0yjPM/INJaLicRN4pgxTTzK7jFcXMjrKb3A== - dependencies: - "@ardatan/sync-fetch" "0.0.1" - "@graphql-tools/delegate" "9.0.10" - "@graphql-tools/utils" "8.13.1" - "@graphql-tools/wrap" "9.2.5" +"@graphql-tools/url-loader@^7.13.2", "@graphql-tools/url-loader@^7.17.18", "@graphql-tools/url-loader@^7.9.7": + version "7.17.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-7.17.18.tgz#3e253594d23483e4c0dd3a4c3dd2ad5cd0141192" + integrity sha512-ear0CiyTj04jCVAxi7TvgbnGDIN2HgqzXzwsfcqiVg9cvjT40NcMlZ2P1lZDgqMkZ9oyLTV8Bw6j+SyG6A+xPw== + dependencies: + "@ardatan/sync-fetch" "^0.0.1" + "@graphql-tools/delegate" "^9.0.31" + "@graphql-tools/executor-graphql-ws" "^0.0.14" + "@graphql-tools/executor-http" "^0.1.7" + "@graphql-tools/executor-legacy-ws" "^0.0.11" + "@graphql-tools/utils" "^9.2.1" + "@graphql-tools/wrap" "^9.4.2" "@types/ws" "^8.0.0" - "@whatwg-node/fetch" "^0.5.0" - dset "^3.1.2" - extract-files "^11.0.0" - graphql-ws "^5.4.1" + "@whatwg-node/fetch" "^0.8.0" isomorphic-ws "^5.0.0" - meros "^1.1.4" tslib "^2.4.0" value-or-promise "^1.0.11" - ws "^8.3.0" + ws "^8.12.0" "@graphql-tools/utils@10.2.0", "@graphql-tools/utils@^10.0.0", "@graphql-tools/utils@^10.0.13": version "10.2.0" @@ -1891,21 +2102,14 @@ dependencies: tslib "^2.4.0" -"@graphql-tools/utils@8.13.1", "@graphql-tools/utils@^8.6.5", "@graphql-tools/utils@^8.8.0", "@graphql-tools/utils@^8.9.0": +"@graphql-tools/utils@^8.6.5", "@graphql-tools/utils@^8.8.0", "@graphql-tools/utils@^8.9.0": version "8.13.1" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.13.1.tgz#b247607e400365c2cd87ff54654d4ad25a7ac491" integrity sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw== dependencies: tslib "^2.4.0" -"@graphql-tools/utils@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.8.0.tgz#8332ff80a1da9204ccf514750dd6f5c5cccf17dc" - integrity sha512-KJrtx05uSM/cPYFdTnGAS1doL5bftJLAiFCDMZ8Vkifztz3BFn3gpFiy/o4wDtM8s39G46mxmt2Km/RmeltfGw== - dependencies: - tslib "^2.4.0" - -"@graphql-tools/utils@^9.0.0": +"@graphql-tools/utils@^9.0.0", "@graphql-tools/utils@^9.2.1": version "9.2.1" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-9.2.1.tgz#1b3df0ef166cfa3eae706e3518b17d5922721c57" integrity sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A== @@ -1913,23 +2117,18 @@ "@graphql-typed-document-node/core" "^3.1.1" tslib "^2.4.0" -"@graphql-tools/wrap@9.2.5": - version "9.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-9.2.5.tgz#38cd7a7d6b6766860d25cfaa63dcda2b8173b1c4" - integrity sha512-fv6v69bVnr+E22wfaz4rlyVIuhQxgsXgeSLKRcNjIByjhKA+jROdL5Zwk+VxUXSiyBudT3GktbRn7c75g7LXYg== +"@graphql-tools/wrap@^9.4.2": + version "9.4.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-9.4.2.tgz#30835587c4c73be1780908a7cb077d8013aa2703" + integrity sha512-DFcd9r51lmcEKn0JW43CWkkI2D6T9XI1juW/Yo86i04v43O9w2/k4/nx2XTJv4Yv+iXwUw7Ok81PGltwGJSDSA== dependencies: - "@graphql-tools/delegate" "9.0.10" - "@graphql-tools/schema" "9.0.6" - "@graphql-tools/utils" "8.13.1" + "@graphql-tools/delegate" "^9.0.31" + "@graphql-tools/schema" "^9.0.18" + "@graphql-tools/utils" "^9.2.1" tslib "^2.4.0" - value-or-promise "1.0.11" - -"@graphql-typed-document-node/core@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" - integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== + value-or-promise "^1.0.12" -"@graphql-typed-document-node/core@^3.1.1", "@graphql-typed-document-node/core@^3.2.0": +"@graphql-typed-document-node/core@3.2.0", "@graphql-typed-document-node/core@^3.1.1", "@graphql-typed-document-node/core@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== @@ -2179,14 +2378,6 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" @@ -2197,19 +2388,19 @@ "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.2.1": +"@jridgewell/set-array@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -2219,7 +2410,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -2282,30 +2473,31 @@ debug "^4.1.1" semver "^7.5.4" -"@oclif/config@1.18.2", "@oclif/config@^1.18.2": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.2.tgz#5bfe74a9ba6a8ca3dceb314a81bd9ce2e15ebbfe" - integrity sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA== +"@oclif/config@1.18.16": + version "1.18.16" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.16.tgz#3235d260ab1eb8388ebb6255bca3dd956249d796" + integrity sha512-VskIxVcN22qJzxRUq+raalq6Q3HUde7sokB7/xk5TqRZGEKRVbFeqdQBxDWwQeudiJEgcNiMvIFbMQ43dY37FA== dependencies: - "@oclif/errors" "^1.3.3" - "@oclif/parser" "^3.8.0" - debug "^4.1.1" - globby "^11.0.1" + "@oclif/errors" "^1.3.6" + "@oclif/parser" "^3.8.16" + debug "^4.3.4" + globby "^11.1.0" is-wsl "^2.1.1" - tslib "^2.0.0" + tslib "^2.6.1" -"@oclif/errors@1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.5.tgz#a1e9694dbeccab10fe2fe15acb7113991bed636c" - integrity sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ== +"@oclif/config@^1.18.2": + version "1.18.17" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.17.tgz#00aa4049da27edca8f06fc106832d9f0f38786a5" + integrity sha512-k77qyeUvjU8qAJ3XK3fr/QVAqsZO8QOBuESnfeM5HHtPNLSyfVcwiMM2zveSW5xRdLSG3MfV8QnLVkuyCL2ENg== dependencies: - clean-stack "^3.0.0" - fs-extra "^8.1" - indent-string "^4.0.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" + "@oclif/errors" "^1.3.6" + "@oclif/parser" "^3.8.17" + debug "^4.3.4" + globby "^11.1.0" + is-wsl "^2.1.1" + tslib "^2.6.1" -"@oclif/errors@^1.3.3", "@oclif/errors@^1.3.6": +"@oclif/errors@1.3.6", "@oclif/errors@^1.3.6": version "1.3.6" resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.6.tgz#e8fe1fc12346cb77c4f274e26891964f5175f75d" integrity sha512-fYaU4aDceETd89KXP+3cLyg9EHZsLD3RxF2IU9yxahhBpspWjkWi3Dy3bTgcwZ3V47BgxQaGapzJWDM33XIVDQ== @@ -2317,12 +2509,12 @@ wrap-ansi "^7.0.0" "@oclif/help@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.1.tgz#fd96a3dd9fb2314479e6c8584c91b63754a7dff5" - integrity sha512-8rsl4RHL5+vBUAKBL6PFI3mj58hjPCp2VYyXD4TAa7IMStikFfOH2gtWmqLzIlxAED2EpD0dfYwo9JJxYsH7Aw== + version "1.0.15" + resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.15.tgz#5e36e576b8132a4906d2662204ad9de7ece87e8f" + integrity sha512-Yt8UHoetk/XqohYX76DfdrUYLsPKMc5pgkzsZVHDyBSkLiGRzujVaGZdjr32ckVZU9q3a47IjhWxhip7Dz5W/g== dependencies: - "@oclif/config" "1.18.2" - "@oclif/errors" "1.3.5" + "@oclif/config" "1.18.16" + "@oclif/errors" "1.3.6" chalk "^4.1.2" indent-string "^4.0.0" lodash "^4.17.21" @@ -2336,7 +2528,7 @@ resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91" integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== -"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.17": +"@oclif/parser@^3.8.16", "@oclif/parser@^3.8.17": version "3.8.17" resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.17.tgz#e1ce0f29b22762d752d9da1c7abd57ad81c56188" integrity sha512-l04iSd0xoh/16TGVpXb81Gg3z7tlQGrEup16BrVLsZBK6SEYpYHRJZnM32BwZrHI97ZSFfuSwVlzoo6HdsaK8A== @@ -2346,14 +2538,97 @@ chalk "^4.1.0" tslib "^2.6.2" -"@peculiar/asn1-schema@^2.1.6": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.2.0.tgz#d8a54527685c8dee518e6448137349444310ad64" - integrity sha512-1ENEJNY7Lwlua/1wvzpYP194WtjQBfFxvde2FlzfBFh/ln6wvChrtxlORhbKEnYswzn6fOC4c7HdC5izLPMTJg== +"@parcel/watcher-android-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84" + integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== + +"@parcel/watcher-darwin-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz#c817c7a3b4f3a79c1535bfe54a1c2818d9ffdc34" + integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== + +"@parcel/watcher-darwin-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020" + integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== + +"@parcel/watcher-freebsd-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8" + integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== + +"@parcel/watcher-linux-arm-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d" + integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== + +"@parcel/watcher-linux-arm64-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7" + integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== + +"@parcel/watcher-linux-arm64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635" + integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== + +"@parcel/watcher-linux-x64-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39" + integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== + +"@parcel/watcher-linux-x64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16" + integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== + +"@parcel/watcher-win32-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc" + integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== + +"@parcel/watcher-win32-ia32@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7" + integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== + +"@parcel/watcher-win32-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf" + integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== + +"@parcel/watcher@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.1.tgz#a50275151a1bb110879c6123589dba90c19f1bf8" + integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.1" + "@parcel/watcher-darwin-arm64" "2.4.1" + "@parcel/watcher-darwin-x64" "2.4.1" + "@parcel/watcher-freebsd-x64" "2.4.1" + "@parcel/watcher-linux-arm-glibc" "2.4.1" + "@parcel/watcher-linux-arm64-glibc" "2.4.1" + "@parcel/watcher-linux-arm64-musl" "2.4.1" + "@parcel/watcher-linux-x64-glibc" "2.4.1" + "@parcel/watcher-linux-x64-musl" "2.4.1" + "@parcel/watcher-win32-arm64" "2.4.1" + "@parcel/watcher-win32-ia32" "2.4.1" + "@parcel/watcher-win32-x64" "2.4.1" + +"@peculiar/asn1-schema@^2.3.8": + version "2.3.8" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b" + integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA== dependencies: asn1js "^3.0.5" - pvtsutils "^1.3.2" - tslib "^2.4.0" + pvtsutils "^1.3.5" + tslib "^2.6.2" "@peculiar/json-schema@^1.1.12": version "1.1.12" @@ -2363,32 +2638,25 @@ tslib "^2.0.0" "@peculiar/webcrypto@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.4.0.tgz#f941bd95285a0f8a3d2af39ccda5197b80cd32bf" - integrity sha512-U58N44b2m3OuTgpmKgf0LPDOmP3bhwNz01vAnj1mBwxBASRhptWYK+M3zG+HBkDqGQM+bFsoIihTW8MdmPXEqg== + version "1.4.5" + resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.4.5.tgz#424bed6b0d133b772f5cbffd143d0468a90f40a0" + integrity sha512-oDk93QCDGdxFRM8382Zdminzs44dg3M2+E5Np+JWkpqLDyJC9DviMh8F8mEJkYuUcUOGA5jHO5AJJ10MFWdbZw== dependencies: - "@peculiar/asn1-schema" "^2.1.6" + "@peculiar/asn1-schema" "^2.3.8" "@peculiar/json-schema" "^1.1.12" - pvtsutils "^1.3.2" - tslib "^2.4.0" - webcrypto-core "^1.7.4" + pvtsutils "^1.3.5" + tslib "^2.6.2" + webcrypto-core "^1.7.8" "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@pkgr/utils@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.0.tgz#3b8491f112a80839450498816767eb03b7db6139" - integrity sha512-7dIJ9CRVzBnqyEl7diUHPUFJf/oty2SeoVzcMocc5PeOUDK9KGzvgIBjGRRzzlRDaOjh3ADwH0WeibQvi3ls2Q== - dependencies: - cross-spawn "^7.0.3" - is-glob "^4.0.3" - open "^8.4.0" - picocolors "^1.0.0" - tiny-glob "^0.2.9" - tslib "^2.4.0" +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== "@reduxjs/toolkit@2.2.4": version "2.2.4" @@ -2400,6 +2668,16 @@ redux-thunk "^3.1.0" reselect "^5.1.0" +"@repeaterjs/repeater@3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca" + integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== + +"@repeaterjs/repeater@^3.0.4": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.5.tgz#b77571685410217a548a9c753aa3cdfc215bfc78" + integrity sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA== + "@rtk-query/graphql-request-base-query@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@rtk-query/graphql-request-base-query/-/graphql-request-base-query-2.2.0.tgz#e1e5e44793a234ea4c180619e469ed0e1890b2aa" @@ -2408,14 +2686,14 @@ graphql-request "^4.0.0" "@sinclair/typebox@^0.24.1": - version "0.24.28" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.28.tgz#15aa0b416f82c268b1573ab653e4413c965fe794" - integrity sha512-dgJd3HLOkLmz4Bw50eZx/zJwtBq65nms3N9VBYu5LTjJ883oBFkTyXRlCB/ZGGwqYpJJHA5zW2Ibhl5ngITfow== + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== "@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== dependencies: type-detect "4.0.8" @@ -2435,23 +2713,17 @@ prettier-plugin-pkg "^0.17.1" prettier-plugin-sh "^0.12.8" -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - "@trivago/prettier-plugin-sort-imports@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.0.0.tgz#e0936d87fb8d65865c857e6a6dba644103db1b30" - integrity sha512-Tyuk5ZY4a0e2MNFLdluQO9F6d1awFQYXVVujEPFfvKPPXz8DADNHzz73NMhwCSXGSuGGZcA/rKOyZBrxVNMxaA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz#725f411646b3942193a37041c84e0b2116339789" + integrity sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ== dependencies: - "@babel/core" "7.17.8" "@babel/generator" "7.17.7" - "@babel/parser" "7.18.9" - "@babel/traverse" "7.17.3" + "@babel/parser" "^7.20.5" + "@babel/traverse" "7.23.2" "@babel/types" "7.17.0" javascript-natural-sort "0.7.1" - lodash "4.17.21" + lodash "^4.17.21" "@tsconfig/node10@^1.0.7": version "1.0.9" @@ -2469,66 +2741,66 @@ integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.17.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" - integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" + integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.20.7" "@types/graceful-fs@^4.1.3": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" @@ -2541,9 +2813,9 @@ pretty-format "^28.0.0" "@types/js-yaml@^4.0.0": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" - integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.9.tgz#cd82382c4f902fed9691a2ed79ec68c5898af4c2" + integrity sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg== "@types/json-schema@7.0.9": version "7.0.9" @@ -2556,31 +2828,24 @@ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json-stable-stringify@^1.0.32": - version "1.0.34" - resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz#c0fb25e4d957e0ee2e497c1f553d7f8bb668fd75" - integrity sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw== + version "1.0.36" + resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.36.tgz#fe6c6001a69ff8160a772da08779448a333c7ddd" + integrity sha512-b7bq23s4fgBB76n34m2b3RBf6M369B0Z9uRR8aHTMd8kZISRkmDEpPD8hhpYvDFzr3bJCPES96cm3Q6qRNDbQw== "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/jsonwebtoken@^8.5.0": - version "8.5.9" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz#2c064ecb0b3128d837d2764aa0b117b0ff6e4586" - integrity sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg== - dependencies: - "@types/node" "*" - "@types/lodash@4.17.1": version "4.17.1" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.1.tgz#0fabfcf2f2127ef73b119d98452bd317c4a17eb8" integrity sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q== "@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/node@*", "@types/node@20.12.12": version "20.12.12" @@ -2595,9 +2860,9 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== "@types/parse-filepath@1.0.2": version "1.0.2" @@ -2605,9 +2870,9 @@ integrity sha512-CcyaQuvlpejsJR57RWxUR++E7zTKvbDDotZyiKaJsZdlbV8JfHgRYj4aZszEGKVLhiX0pbD8QeAuzEFUol4mRA== "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/pluralize@0.0.33": version "0.0.33" @@ -2615,36 +2880,36 @@ integrity sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg== "@types/prettier@^2.1.5": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" - integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/semver@^7.5.0": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" - integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== "@types/ws@^8.0.0": - version "8.5.3" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" - integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== + version "8.5.10" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": - version "17.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.11.tgz#5e10ca33e219807c0eee0f08b5efcba9b6a42c06" - integrity sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA== + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" @@ -2740,14 +3005,19 @@ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== "@urql/introspection@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@urql/introspection/-/introspection-0.3.2.tgz#18b737e17779cecb74e612a965ed5dc17b978355" - integrity sha512-dbszrDgTyTM1ndvdTe4X7RUciVi2zXxjHhTIrWOSvU3FODX4+90uSVtdn5bXwTuwqM4bxVEc1ekaLYEUeiNLsg== + version "0.3.3" + resolved "https://registry.yarnpkg.com/@urql/introspection/-/introspection-0.3.3.tgz#5bcedfebd515161eecf9b193169c2765bf5674f1" + integrity sha512-tekSLLqWnusfV6V7xaEnLJQSdXOD/lWy7f8JYQwrX+88Md+voGSCSx5WJXI7KLBN3Tat2OV08tAr8UROykls4Q== "@urql/introspection@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@urql/introspection/-/introspection-1.0.2.tgz#220769ab8b8a18737a45dda89ee9b5abf37fe0c5" - integrity sha512-vPuX+DjbmL5EUsvwgAMV8dkxc7JKuuNTzDfsNvtCuVmbAED4Nx39p08HImjTWAewSatjyzZZs+fAhU7z/4P+UQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@urql/introspection/-/introspection-1.0.3.tgz#e35ffe8aa03e91df7472b07d7d730d8bb029ec10" + integrity sha512-5zgnfUDV10c3qudqYvfZ/rOtWVB2QvqanmoDMttqpt+TCCPkSUZdb2qcLCEB6DL7ph8mQRTZhXI29J57nTnqKg== + +"@whatwg-node/events@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@whatwg-node/events/-/events-0.0.3.tgz#13a65dd4f5893f55280f766e29ae48074927acad" + integrity sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA== "@whatwg-node/fetch@^0.3.0": version "0.3.2" @@ -2764,19 +3034,27 @@ undici "^5.8.0" web-streams-polyfill "^3.2.0" -"@whatwg-node/fetch@^0.5.0": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.5.1.tgz#62c7e902ddfb7d16b0b31599d81628bbd22350a9" - integrity sha512-RBZS60EU6CbRJ370BVVKW4F9csZuGh0OQNrUDhJ0IaIFLsXsJorFCM2iwaDWZTAPMqxW1TmuVcVKJ3d/H1dV1g== +"@whatwg-node/fetch@^0.8.0", "@whatwg-node/fetch@^0.8.1", "@whatwg-node/fetch@^0.8.2": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.8.8.tgz#48c6ad0c6b7951a73e812f09dd22d75e9fa18cae" + integrity sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg== dependencies: "@peculiar/webcrypto" "^1.4.0" - abort-controller "^3.0.0" + "@whatwg-node/node-fetch" "^0.3.6" busboy "^1.6.0" - form-data-encoder "^1.7.1" - formdata-node "^4.3.1" - node-fetch "^2.6.7" - undici "^5.12.0" - web-streams-polyfill "^3.2.0" + urlpattern-polyfill "^8.0.0" + web-streams-polyfill "^3.2.1" + +"@whatwg-node/node-fetch@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz#e28816955f359916e2d830b68a64493124faa6d0" + integrity sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA== + dependencies: + "@whatwg-node/events" "^0.0.3" + busboy "^1.6.0" + fast-querystring "^1.1.1" + fast-url-parser "^1.1.3" + tslib "^2.3.1" "@wry/caches@^1.0.0": version "1.0.1" @@ -2786,16 +3064,16 @@ tslib "^2.3.0" "@wry/context@^0.7.0": - version "0.7.3" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.3.tgz#240f6dfd4db5ef54f81f6597f6714e58d4f476a1" - integrity sha512-Nl8WTesHp89RF803Se9X3IiHjdmLBrIvPMaJkl+rKVJAYyPsz1TEUbu89943HpvujtSJgDUx9W4vZw3K1Mr3sA== + version "0.7.4" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.4.tgz#e32d750fa075955c4ab2cfb8c48095e1d42d5990" + integrity sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ== dependencies: tslib "^2.3.0" "@wry/equality@^0.5.6": - version "0.5.6" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.6.tgz#cd4a533c72c3752993ab8cbf682d3d20e3cb601e" - integrity sha512-D46sfMTngaYlrH+OspKf8mIJETntFnf6Hsjb0V41jAXJ7Bx2kB8Rv8RCUujuVWYttFtHkUNp7g+FwxNQAr6mXA== + version "0.5.7" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.7.tgz#72ec1a73760943d439d56b7b1e9985aec5d497bb" + integrity sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw== dependencies: tslib "^2.3.0" @@ -2831,21 +3109,21 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== acorn@^8.4.1, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== dependencies: - debug "4" + debug "^4.3.4" aggregate-error@^3.0.0: version "3.1.0" @@ -2941,9 +3219,9 @@ antlr4ts@^0.5.0-alpha.4: integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -2965,13 +3243,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" + call-bind "^1.0.5" + is-array-buffer "^3.0.4" array-includes@^3.1.7: version "3.1.7" @@ -2990,15 +3268,15 @@ array-union@^2.1.0: integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz#d1c50f0b3a9da191981ff8942a0aedd82794404f" + integrity sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.2: version "1.3.2" @@ -3020,17 +3298,18 @@ array.prototype.flatmap@^1.3.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -arraybuffer.prototype.slice@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" arrify@^1.0.1: @@ -3072,10 +3351,12 @@ auto-bind@~4.0.0: resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" babel-jest@28.1.3, babel-jest@^28.1.3: version "28.1.3" @@ -3217,9 +3498,9 @@ better-path-resolve@1.0.0: is-windows "^1.0.0" binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== bl@^4.1.0: version "4.1.0" @@ -3270,9 +3551,9 @@ braces@^3.0.2, braces@~3.0.2: fill-range "^7.0.1" breakword@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/breakword/-/breakword-1.0.5.tgz#fd420a417f55016736b5b615161cae1c8f819810" - integrity sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg== + version "1.0.6" + resolved "https://registry.yarnpkg.com/breakword/-/breakword-1.0.6.tgz#242506e7b871b7fad1bce8dc05cb0f2a129c12bd" + integrity sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw== dependencies: wcwidth "^1.0.1" @@ -3300,11 +3581,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3325,13 +3601,16 @@ busboy@^1.6.0: dependencies: streamsearch "^1.1.0" -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" callsites@^3.0.0: version "3.1.0" @@ -3462,9 +3741,9 @@ chardet@^0.7.0: integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== chokidar@^3.5.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -3477,14 +3756,14 @@ chokidar@^3.5.2: fsevents "~2.3.2" ci-info@^3.2.0, ci-info@^3.7.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== clean-stack@^2.0.0: version "2.2.0" @@ -3513,9 +3792,9 @@ cli-cursor@^4.0.0: restore-cursor "^4.0.0" cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== cli-truncate@^2.1.0: version "2.1.0" @@ -3567,9 +3846,9 @@ co@^4.6.0: integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: version "1.9.3" @@ -3623,9 +3902,9 @@ concat-map@0.0.1: integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== consola@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/consola/-/consola-3.1.0.tgz#dfdfa62ceb68bc1f06e4a76ad688566bd8813baf" - integrity sha512-rrrJE6rP0qzl/Srg+C9x/AE5Kxfux7reVm1Wh0wCjuXvih6DqZgqDZe8auTD28fzJ9TF0mHlSDrPpWlujQRo1Q== + version "3.2.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" + integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== constant-case@^3.0.4: version "3.0.4" @@ -3636,12 +3915,10 @@ constant-case@^3.0.4: tslib "^2.0.3" upper-case "^2.0.2" -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" +convert-source-map@^1.4.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== convert-source-map@^2.0.0: version "2.0.0" @@ -3662,12 +3939,17 @@ cosmiconfig-toml-loader@1.0.0: dependencies: "@iarna/toml" "^2.2.5" -cosmiconfig-typescript-loader@4.1.1, cosmiconfig-typescript-loader@^4.0.0: +cosmiconfig-typescript-loader@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.1.1.tgz#38dd3578344038dae40fdf09792bc2e9df529f78" integrity sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg== -cosmiconfig@7.0.1, cosmiconfig@^7.0.0: +cosmiconfig-typescript-loader@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz#f3feae459ea090f131df5474ce4b1222912319f9" + integrity sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw== + +cosmiconfig@7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== @@ -3678,6 +3960,27 @@ cosmiconfig@7.0.1, cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.0.0.tgz#e9feae014eab580f858f8a0288f38997a7bebe97" + integrity sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ== + dependencies: + import-fresh "^3.2.1" + js-yaml "^4.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -3730,7 +4033,7 @@ csv-stringify@^5.6.5: resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== -csv@^5.5.0: +csv@^5.5.3: version "5.5.3" resolved "https://registry.yarnpkg.com/csv/-/csv-5.5.3.tgz#cd26c1e45eae00ce6a9b7b27dcb94955ec95207d" integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== @@ -3740,16 +4043,43 @@ csv@^5.5.0: csv-stringify "^5.6.5" stream-transform "^2.1.3" -dataloader@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.1.0.tgz#c69c538235e85e7ac6c6c444bae8ecabf5de9df7" - integrity sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ== +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" dataloader@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== +dataloader@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" + integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== + debounce@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -3770,9 +4100,9 @@ debug@^3.2.7: ms "^2.1.1" decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: decamelize "^1.1.0" map-obj "^1.0.0" @@ -3793,27 +4123,32 @@ deep-is@^0.1.3: integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -3832,6 +4167,11 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -3877,9 +4217,9 @@ dot-case@^3.0.4: tslib "^2.0.3" dotenv@^16.0.0: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== dotenv@^8.1.0: version "8.6.0" @@ -3887,21 +4227,19 @@ dotenv@^8.1.0: integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== dset@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a" - integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q== + version "3.1.3" + resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.3.tgz#c194147f159841148e8e34ca41f638556d9542d2" + integrity sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ== eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -ecdsa-sig-formatter@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" +effect@2.4.7: + version "2.4.7" + resolved "https://registry.yarnpkg.com/effect/-/effect-2.4.7.tgz#c0cefa86e71d7f3d15a53d2c2441dabd646b124e" + integrity sha512-4YOPi4r7nLFJAK1W/l7FM3fptZBtrJkqa5Rh2u7gkFCECn+RiwuQ8KYPm8sf4RFIp+fSQXGA87GIDtyxrz0mbA== electron-to-chromium@^1.4.668: version "1.4.710" @@ -3929,11 +4267,12 @@ emoji-regex@^9.2.2: integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== enquirer@^2.3.0: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== dependencies: ansi-colors "^4.1.1" + strip-ansi "^6.0.1" error-ex@^1.3.1: version "1.3.2" @@ -3942,66 +4281,92 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" - integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.1" - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-set-tostringtag "^2.0.1" +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: + version "1.23.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.2.tgz#693312f3940f967b8dd3eebacb590b01712622e0" + integrity sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.1" - get-symbol-description "^1.0.0" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" has-symbols "^1.0.3" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" is-callable "^1.2.7" - is-negative-zero "^2.0.2" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" + is-shared-array-buffer "^1.0.3" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.13" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-array-concat "^1.0.0" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.5" unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" + which-typed-array "^1.1.15" -es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - has-tostringtag "^1.0.0" + get-intrinsic "^1.2.4" -es-shim-unscopables@^1.0.0: +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -4013,9 +4378,9 @@ es-to-primitive@^1.2.1: is-symbol "^1.0.2" escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" @@ -4042,9 +4407,9 @@ eslint-import-resolver-node@^0.3.9: resolve "^1.22.4" eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== dependencies: debug "^3.2.7" @@ -4143,9 +4508,9 @@ esprima@^4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1" - integrity sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng== + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -4266,15 +4631,20 @@ extract-files@^9.0.0: resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== +fast-decode-uri-component@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" + integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.11, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== +fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -4305,22 +4675,36 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-querystring@^1.0.0, fast-querystring@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53" + integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg== + dependencies: + fast-decode-uri-component "^1.0.1" + fast-uri@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.2.0.tgz#519a0f849bef714aad10e9753d69d8f758f7445a" - integrity sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.3.0.tgz#bdae493942483d299e7285dcb4627767d42e2793" + integrity sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw== + +fast-url-parser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== + dependencies: + punycode "^1.3.2" fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" @@ -4330,9 +4714,9 @@ fbjs-css-vars@^1.0.0: integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== fbjs@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" - integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + version "3.0.5" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.5.tgz#aa0edb7d5caa6340011790bd9249dbef8a81128d" + integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== dependencies: cross-fetch "^3.1.5" fbjs-css-vars "^1.0.0" @@ -4340,7 +4724,7 @@ fbjs@^3.0.0: object-assign "^4.1.0" promise "^7.1.1" setimmediate "^1.0.5" - ua-parser-js "^0.7.30" + ua-parser-js "^1.0.35" figures@^3.0.0: version "3.2.0" @@ -4363,6 +4747,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-my-way-ts@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-my-way-ts/-/find-my-way-ts-0.1.1.tgz#f0a2df4e1ccadad08cedfae683fb18c87cddc2b6" + integrity sha512-nXUdq29JRQ1tYa1/n+DHTVChMARJHz+gi7sDZibwQukzHP7Hrr6s+sxKbaIM8xB3LzhSBJy5yLb0JhIUmHmOiA== + dependencies: + fast-querystring "^1.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -4395,17 +4786,18 @@ find-yarn-workspace-root@^2.0.0: micromatch "^4.0.2" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" - integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== for-each@^0.3.3: version "0.3.3" @@ -4423,9 +4815,9 @@ foreground-child@^3.1.0: signal-exit "^4.0.1" form-data-encoder@^1.7.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" - integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== + version "1.9.0" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.9.0.tgz#fd18d316b1ec830d2a8be8ad86c1cf0317320b34" + integrity sha512-rahaRMkN8P8d/tgK/BLPX+WBVM27NbvdXBxqQujBtkDAIFspaRqN7Od7lfdGQA6KAD+f82fYCLBq1ipvcu8qLw== form-data@^3.0.0: version "3.0.1" @@ -4437,17 +4829,17 @@ form-data@^3.0.0: mime-types "^2.1.12" formdata-node@^4.3.1: - version "4.3.3" - resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.3.3.tgz#21415225be66e2c87a917bfc0fedab30a119c23c" - integrity sha512-coTew7WODO2vF+XhpUdmYz4UBvlsiTMSNaFYZlrXIqYbFd4W7bMwnoALNLE6uvNgzTg2j1JDF0ZImEfF06VPAA== + version "4.4.1" + resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2" + integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== dependencies: node-domexception "1.0.0" - web-streams-polyfill "4.0.0-beta.1" + web-streams-polyfill "4.0.0-beta.3" fs-extra@^11.1.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -4487,26 +4879,26 @@ fs.realpath@^1.0.0: integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1, function-bind@^1.1.2: +function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functions-have-names@^1.2.2, functions-have-names@^1.2.3: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -4533,15 +4925,16 @@ get-east-asian-width@^1.0.0: resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + es-errors "^1.3.0" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-package-type@^0.1.0: version "0.1.0" @@ -4558,13 +4951,14 @@ get-stream@^8.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" @@ -4581,25 +4975,25 @@ glob-parent@^6.0.2: is-glob "^4.0.3" glob@^10.3.7: - version "10.3.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.7.tgz#d5bd30a529c8c9b262fb4b217941f64ad90e25ac" - integrity sha512-wCMbE1m9Nx5yD9LYtgsVWq5VhHlk5WzJirw594qZR6AIvQYuHrdDtIktUVjQItalD53y7dqoedu9xP0u0WaxIQ== + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: foreground-child "^3.1.0" - jackspeak "^2.0.3" + jackspeak "^2.3.5" minimatch "^9.0.1" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" @@ -4609,9 +5003,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" @@ -4622,12 +5016,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.0.0, globby@^11.0.1, globby@^11.0.3, globby@^11.1.0: +globby@^11.0.0, globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -4640,21 +5029,16 @@ globby@^11.0.0, globby@^11.0.1, globby@^11.0.3, globby@^11.1.0: slash "^3.0.0" globby@^13.1.3: - version "13.1.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.4.tgz#2f91c116066bcec152465ba36e5caa4a13c01317" - integrity sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g== + version "13.2.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" + integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== dependencies: dir-glob "^3.0.1" - fast-glob "^3.2.11" - ignore "^5.2.0" + fast-glob "^3.3.0" + ignore "^5.2.4" merge2 "^1.4.1" slash "^4.0.0" -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -4663,9 +5047,9 @@ gopd@^1.0.1: get-intrinsic "^1.1.3" graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== grapheme-splitter@^1.0.4: version "1.0.4" @@ -4677,7 +5061,7 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphql-config@4.3.6, graphql-config@^4.1.0: +graphql-config@4.3.6: version "4.3.6" resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.3.6.tgz#908ef03d6670c3068e51fe2e84e10e3e0af220b6" integrity sha512-i7mAPwc0LAZPnYu2bI8B6yXU5820Wy/ArvmOseDLZIu0OU1UTULEuexHo6ZcHXeT9NvGGaUPQZm8NV3z79YydA== @@ -4693,7 +5077,24 @@ graphql-config@4.3.6, graphql-config@^4.1.0: cosmiconfig-typescript-loader "^4.0.0" minimatch "4.2.1" string-env-interpolation "1.0.1" - ts-node "^10.8.1" + ts-node "^10.8.1" + tslib "^2.4.0" + +graphql-config@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.5.0.tgz#257c2338950b8dce295a27f75c5f6c39f8f777b2" + integrity sha512-x6D0/cftpLUJ0Ch1e5sj1TZn6Wcxx4oMfmhaG9shM0DKajA9iR+j1z86GSTQ19fShbGvrSSvbIQsHku6aQ6BBw== + dependencies: + "@graphql-tools/graphql-file-loader" "^7.3.7" + "@graphql-tools/json-file-loader" "^7.3.7" + "@graphql-tools/load" "^7.5.5" + "@graphql-tools/merge" "^8.2.6" + "@graphql-tools/url-loader" "^7.9.7" + "@graphql-tools/utils" "^9.0.0" + cosmiconfig "8.0.0" + jiti "1.17.1" + minimatch "4.2.3" + string-env-interpolation "1.0.1" tslib "^2.4.0" graphql-helix@1.13.0: @@ -4765,15 +5166,13 @@ graphql-request@^4.0.0: extract-files "^9.0.0" form-data "^3.0.0" -graphql-request@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-5.0.0.tgz#7504a807d0e11be11a3c448e900f0cc316aa18ef" - integrity sha512-SpVEnIo2J5k2+Zf76cUkdvIRaq5FMZvGQYnA4lUWYbc99m+fHh4CZYRRO/Ff4tCLQ613fzCm3SiDT64ubW5Gyw== +graphql-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-6.1.0.tgz#f4eb2107967af3c7a5907eb3131c671eac89be4f" + integrity sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw== dependencies: - "@graphql-typed-document-node/core" "^3.1.1" + "@graphql-typed-document-node/core" "^3.2.0" cross-fetch "^3.1.5" - extract-files "^9.0.0" - form-data "^3.0.0" graphql-tag@2.12.6, graphql-tag@^2.11.0, graphql-tag@^2.12.6: version "2.12.6" @@ -4782,10 +5181,10 @@ graphql-tag@2.12.6, graphql-tag@^2.11.0, graphql-tag@^2.12.6: dependencies: tslib "^2.1.0" -graphql-ws@^5.4.1: - version "5.9.1" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.9.1.tgz#9c0fa48ceb695d61d574ed3ab21b426729e87f2d" - integrity sha512-mL/SWGBwIT9Meq0NlfS55yXXTOeWPMbK7bZBEZhFu46bcGk1coTx2Sdtzxdk+9yHWngD+Fk1PZDWaAutQa9tpw== +graphql-ws@5.12.1: + version "5.12.1" + resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.12.1.tgz#c62d5ac54dbd409cc6520b0b39de374b3d59d0dd" + integrity sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg== graphql@16.8.1: version "16.8.1" @@ -4812,41 +5211,34 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.1.1" + es-define-property "^1.0.0" -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: - function-bind "^1.1.1" + has-symbols "^1.0.3" -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" @@ -4875,21 +5267,20 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== +http-proxy-agent@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-6.1.1.tgz#dc04f1a84e09511740cfbd984a56f86cc42e4277" + integrity sha512-JRCz+4Whs6yrrIoIlrH+ZTmhrRwtMnmOHsHn8GFEn9O2sVfSE+DAZ3oyyGIKF8tjJEeSJmP89j7aTjVsSqsU0g== dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" + agent-base "^7.1.0" + debug "^4.3.4" -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== +https-proxy-agent@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-6.2.1.tgz#0965ab47371b3e531cf6794d1eb148710a992ba7" + integrity sha512-ONsE3+yfZF2caH5+bJlcddtWqNI3Gvs5A38+ngvljxaBiRXRswym2c7yf8UAeFpRFKjFNHIFEHqR/OLAWJzyiA== dependencies: - agent-base "6" + agent-base "^7.0.2" debug "4" human-id@^1.0.2: @@ -4930,14 +5321,14 @@ ieee754@^1.1.13: integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.2.0, ignore@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== immer@^10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.3.tgz#a8de42065e964aa3edf6afc282dfc7f7f34ae3c9" - integrity sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A== + version "10.0.4" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.4.tgz#09af41477236b99449f9d705369a4daaf780362b" + integrity sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw== immutable@~3.7.6: version "3.7.6" @@ -4989,9 +5380,9 @@ inherits@2, inherits@^2.0.3, inherits@^2.0.4: integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inquirer@^8.0.0: - version "8.2.5" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" - integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== + version "8.2.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.1" @@ -5007,15 +5398,15 @@ inquirer@^8.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" - wrap-ansi "^7.0.0" + wrap-ansi "^6.0.1" -internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + es-errors "^1.3.0" + hasown "^2.0.0" side-channel "^1.0.4" invariant@^2.2.4: @@ -5033,14 +5424,13 @@ is-absolute@^1.0.0: is-relative "^1.0.0" is-windows "^1.0.1" -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" + get-intrinsic "^1.2.1" is-arrayish@^0.2.1: version "0.2.1" @@ -5081,6 +5471,13 @@ is-core-module@^2.13.0, is-core-module@^2.13.1: dependencies: hasown "^2.0.0" +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -5088,7 +5485,7 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" -is-docker@^2.0.0, is-docker@^2.1.1: +is-docker@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -5139,10 +5536,10 @@ is-lower-case@^2.0.2: dependencies: tslib "^2.0.3" -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== is-number-object@^1.0.4: version "1.0.7" @@ -5186,12 +5583,12 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" is-stream@^2.0.0: version "2.0.1" @@ -5224,16 +5621,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" + which-typed-array "^1.1.14" is-unc-path@^1.0.0: version "1.0.0" @@ -5266,7 +5659,7 @@ is-windows@^1.0.0, is-windows@^1.0.1: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -5283,28 +5676,20 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isomorphic-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" - integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== - dependencies: - node-fetch "^2.6.1" - whatwg-fetch "^3.4.1" - -isomorphic-ws@^5.0.0: +isomorphic-ws@5.0.0, isomorphic-ws@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -5313,12 +5698,12 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: semver "^6.3.0" istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" + make-dir "^4.0.0" supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: @@ -5331,17 +5716,17 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" - integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jackspeak@^2.0.3: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" - integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -5554,9 +5939,9 @@ jest-mock@^28.1.3: "@types/node" "*" jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-regex-util@^28.0.2: version "28.0.2" @@ -5727,6 +6112,16 @@ jest@28.1.3: import-local "^3.0.2" jest-cli "^28.1.3" +jiti@1.17.1: + version "1.17.1" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.17.1.tgz#264daa43ee89a03e8be28c3d712ccc4eb9f1e8ed" + integrity sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw== + +jose@^4.11.4: + version "4.15.5" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.5.tgz#6475d0f467ecd3c630a1b5dadd2735a7288df706" + integrity sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5757,6 +6152,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -5785,11 +6185,14 @@ json-stable-stringify-without-jsonify@^1.0.1: integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.1, json-stable-stringify@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" - integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" + integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== dependencies: + call-bind "^1.0.5" + isarray "^2.0.5" jsonify "^0.0.1" + object-keys "^1.1.1" json-stringify-safe@^5.0.1: version "5.0.1" @@ -5811,7 +6214,7 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.1, json5@^2.2.3: +json5@^2.2.1, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -5837,38 +6240,12 @@ jsonify@^0.0.1: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== -jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^5.6.0" - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" + json-buffer "3.0.1" kind-of@^6.0.3: version "6.0.3" @@ -5887,7 +6264,7 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -kleur@^4.1.4: +kleur@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== @@ -5991,36 +6368,6 @@ lodash.get@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -6036,17 +6383,12 @@ lodash.mergewith@4.6.2: resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - lodash.startcase@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== -lodash@4.17.21, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.0: +lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -6124,21 +6466,21 @@ lru-cache@^6.0.0: yallist "^4.0.0" "lru-cache@^9.1.1 || ^10.0.0": - version "10.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" - integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: - semver "^6.0.0" + semver "^7.5.3" make-error@1.x, make-error@^1.1.1: version "1.3.6" @@ -6194,12 +6536,12 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -meros@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/meros/-/meros-1.2.0.tgz#096cdede2eb0b1610b219b1031b935260de1ad08" - integrity sha512-3QRZIS707pZQnijHdhbttXRWwrHhZJ/gzolneoxKVz9N/xmsvY/7Ls8lpnI9gxbgxjcHsAVEW3mgwiZCo6kkJQ== +meros@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/meros/-/meros-1.3.0.tgz#c617d2092739d55286bf618129280f362e6242f2" + integrity sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w== -micromatch@4.0.5, micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@4.0.5, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -6219,6 +6561,11 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -6241,6 +6588,13 @@ minimatch@4.2.1: dependencies: brace-expansion "^1.1.7" +minimatch@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.3.tgz#b4dcece1d674dee104bb0fb833ebb85a78cbbca6" + integrity sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng== + dependencies: + brace-expansion "^1.1.7" + minimatch@9.0.3, minimatch@^9.0.1: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" @@ -6248,7 +6602,7 @@ minimatch@9.0.3, minimatch@^9.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -6265,30 +6619,40 @@ minimist-options@^4.0.2: kind-of "^6.0.3" minimist@^1.2.0, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" - integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== mixme@^0.5.1: - version "0.5.4" - resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.4.tgz#8cb3bd0cd32a513c161bf1ca99d143f0bcf2eff3" - integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== + version "0.5.10" + resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.10.tgz#d653b2984b75d9018828f1ea333e51717ead5f51" + integrity sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q== mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.1.2, ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multipasta@^0.1.21: + version "0.1.21" + resolved "https://registry.yarnpkg.com/multipasta/-/multipasta-0.1.21.tgz#abbcffccd09b76406af8dc9dc514ec1041150a2d" + integrity sha512-HpF9156uifsQu1L8KKW1EqXIt3DacHJTzQ+JSm6IShkcyyf+krOWzfOgT3OLHzesM40hbs6/QW5CJWSEdDPQag== + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -6322,15 +6686,20 @@ nock@13.2.9: lodash "^4.17.21" propagate "^2.0.0" +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== + node-domexception@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== node-fetch@^2.5.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: - version "2.6.12" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" - integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" @@ -6374,9 +6743,9 @@ npm-run-path@^4.0.1: path-key "^3.0.0" npm-run-path@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" - integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + version "5.3.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== dependencies: path-key "^4.0.0" @@ -6390,53 +6759,53 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== +object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" + call-bind "^1.0.5" + define-properties "^1.2.1" has-symbols "^1.0.3" object-keys "^1.1.1" object.fromentries@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" object.values@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" once@^1.3.0: version "1.4.0" @@ -6467,15 +6836,6 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - optimism@^0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.18.0.tgz#e7bb38b24715f3fdad8a9a7fc18e999144bbfa63" @@ -6645,6 +7005,11 @@ patch-package@8.0.0: tmp "^0.0.33" yaml "^2.2.2" +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" @@ -6724,9 +7089,9 @@ pify@^4.0.1: integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-dir@^4.2.0: version "4.2.0" @@ -6740,10 +7105,15 @@ pluralize@^8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + preferred-pm@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.0.3.tgz#1b6338000371e3edbce52ef2e4f65eb2e73586d6" - integrity sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ== + version "3.1.3" + resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.1.3.tgz#4125ea5154603136c3b6444e5f5c94ecf90e4916" + integrity sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w== dependencies: find-up "^5.0.0" find-yarn-workspace-root2 "1.2.16" @@ -6818,17 +7188,22 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -pvtsutils@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.2.tgz#9f8570d132cdd3c27ab7d51a2799239bf8d8d5de" - integrity sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ== +pvtsutils@^1.3.2, pvtsutils@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== dependencies: - tslib "^2.4.0" + tslib "^2.6.1" pvutils@^1.1.3: version "1.1.3" @@ -6892,9 +7267,9 @@ read-yaml-file@^1.1.0: strip-bom "^3.0.0" readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -6926,9 +7301,9 @@ redux@^5.0.1: integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" @@ -6937,10 +7312,10 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regenerator-transform@^0.15.2: version "0.15.2" @@ -6949,14 +7324,15 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - functions-have-names "^1.2.3" + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" regexpu-core@^5.3.1: version "5.3.2" @@ -7044,9 +7420,9 @@ resolve-from@^4.0.0: integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve.exports@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== resolve.exports@^2.0.0: version "2.0.2" @@ -7089,9 +7465,9 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.2.0, rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + version "1.3.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== rimraf@5.0.7: version "5.0.7" @@ -7101,9 +7477,9 @@ rimraf@5.0.7: glob "^10.3.7" rimraf@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" @@ -7127,39 +7503,34 @@ run-parallel@^1.1.9: queue-microtask "^1.2.2" rxjs@^7.5.5: - version "7.8.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" - integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" -safe-array-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" - integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + get-intrinsic "^1.2.4" has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@~5.2.0: +safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" + call-bind "^1.0.6" + es-errors "^1.3.0" is-regex "^1.1.4" "safer-buffer@>= 2.1.2 < 3": @@ -7172,19 +7543,19 @@ scuid@^1.1.0: resolved "https://registry.yarnpkg.com/scuid/-/scuid-1.1.0.tgz#d3f9f920956e737a60f72d0e4ad280bf324d5dab" integrity sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg== -"semver@2 || 3 || 4 || 5", semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@7.x, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -7203,6 +7574,28 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -7240,18 +7633,19 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.7.3: - version "1.7.4" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" - integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" @@ -7369,17 +7763,17 @@ spawndamnit@^2.0.0: signal-exit "^3.0.2" spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0: version "3.0.1" @@ -7390,9 +7784,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + version "3.0.17" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" + integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== sponge-case@^1.0.1: version "1.0.1" @@ -7407,9 +7801,9 @@ sprintf-js@~1.0.2: integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" @@ -7471,40 +7865,41 @@ string-width@^5.0.1, string-width@^5.1.2: strip-ansi "^7.0.1" string-width@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.0.0.tgz#14aa1b7aaa126d5b64fa79d3c894da8a9650ba06" - integrity sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw== + version "7.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.1.0.tgz#d994252935224729ea3719c49f7206dc9c46550a" + integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== dependencies: emoji-regex "^10.3.0" get-east-asian-width "^1.0.0" strip-ansi "^7.1.0" -string.prototype.trim@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" - integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.1.1: version "1.3.0" @@ -7588,9 +7983,9 @@ supports-color@^8.0.0: has-flag "^4.0.0" supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" @@ -7613,12 +8008,12 @@ symbol-observable@^4.0.0: integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== synckit@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.3.tgz#f36ca23fb7cbcf2b2b78c9e553ce6764dc6aa415" - integrity sha512-1goXnDYNJlKwCM37f5MTzRwo+8SqutgVtg2d37D6YnHHT4E3IhQMRfKiGdfTZU7LBlI6T8inCQUxnMBFHrbqWw== + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== dependencies: - "@pkgr/utils" "^2.3.0" - tslib "^2.4.0" + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" term-size@^2.1.0: version "2.2.1" @@ -7652,14 +8047,6 @@ through@^2.3.6, through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -tiny-glob@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - title-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/title-case/-/title-case-3.0.3.tgz#bc689b46f02e411f1d1e1d081f7c3deca0489982" @@ -7702,9 +8089,9 @@ trim-newlines@^3.0.0: integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== ts-invariant@^0.10.3: version "0.10.3" @@ -7761,7 +8148,7 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.6.2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.2, tslib@~2.6.0: +tslib@2.6.2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.1, tslib@^2.6.2, tslib@~2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -7771,18 +8158,23 @@ tslib@~2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== +tslib@~2.5.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" + integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== + tty-table@^4.1.5: - version "4.1.6" - resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.1.6.tgz#6bd58338f36c94cce478c3337934d8a65ab40a73" - integrity sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw== + version "4.2.3" + resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.2.3.tgz#e33eb4007a0a9c976c97c37fa13ba66329a5c515" + integrity sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA== dependencies: chalk "^4.1.2" - csv "^5.5.0" - kleur "^4.1.4" + csv "^5.5.3" + kleur "^4.1.5" smartwrap "^2.0.2" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" wcwidth "^1.0.1" - yargs "^17.1.1" + yargs "^17.7.1" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -7826,54 +8218,59 @@ type-fest@^3.0.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== +typed-array-length@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.5.tgz#57d44da160296d8663fd63180a1802ebf25905d5" + integrity sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - is-typed-array "^1.1.9" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" typescript@4.9.5: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -ua-parser-js@^0.7.30: - version "0.7.31" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" - integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== +ua-parser-js@^1.0.35: + version "1.0.37" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.37.tgz#b5dc7b163a5c1f0c510b08446aed4da92c46373f" + integrity sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ== unbox-primitive@^1.0.2: version "1.0.2" @@ -7895,12 +8292,12 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici@^5.12.0, undici@^5.8.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.12.0.tgz#c758ffa704fbcd40d506e4948860ccaf4099f531" - integrity sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg== +undici@^5.8.0: + version "5.28.3" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.3.tgz#a731e0eff2c3fcfd41c1169a869062be222d1e5b" + integrity sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA== dependencies: - busboy "^1.6.0" + "@fastify/busboy" "^2.0.0" unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -7921,9 +8318,9 @@ unicode-match-property-value-ecmascript@^2.1.0: integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== universalify@^0.1.0: version "0.1.2" @@ -7931,9 +8328,9 @@ universalify@^0.1.0: integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== unixify@^1.0.0: version "1.0.0" @@ -7971,6 +8368,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +urlpattern-polyfill@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" + integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== + util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -7987,13 +8389,13 @@ v8-compile-cache-lib@^3.0.1: integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== v8-to-istanbul@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" - integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + version "9.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" + convert-source-map "^2.0.0" validate-npm-package-license@^3.0.1: version "3.0.4" @@ -8014,9 +8416,9 @@ value-or-promise@^1.0.11, value-or-promise@^1.0.12: integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== vscode-languageserver-types@^3.15.1: - version "3.17.3" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64" - integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA== + version "3.17.5" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a" + integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== walker@^1.0.8: version "1.0.8" @@ -8032,37 +8434,32 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -web-streams-polyfill@4.0.0-beta.1: - version "4.0.0-beta.1" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz#3b19b9817374b7cee06d374ba7eeb3aeb80e8c95" - integrity sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ== +web-streams-polyfill@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" + integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== -web-streams-polyfill@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" - integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== +web-streams-polyfill@^3.2.0, web-streams-polyfill@^3.2.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== -webcrypto-core@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.5.tgz#c02104c953ca7107557f9c165d194c6316587ca4" - integrity sha512-gaExY2/3EHQlRNNNVSrbG2Cg94Rutl7fAaKILS1w8ZDhGxdFOaw6EbCfHIxPy9vt/xwp5o0VQAx9aySPF6hU1A== +webcrypto-core@^1.7.8: + version "1.7.8" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.8.tgz#056918036e846c72cfebbb04052e283f57f1114a" + integrity sha512-eBR98r9nQXTqXt/yDRtInszPMjTaSAMJAFDg2AHsgrnczawT1asx9YNBX6k5p+MekbPF4+s/UJJrr88zsTqkSg== dependencies: - "@peculiar/asn1-schema" "^2.1.6" + "@peculiar/asn1-schema" "^2.3.8" "@peculiar/json-schema" "^1.1.12" asn1js "^3.0.1" - pvtsutils "^1.3.2" - tslib "^2.4.0" + pvtsutils "^1.3.5" + tslib "^2.6.2" webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -whatwg-fetch@^3.4.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -8083,9 +8480,9 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== which-pm@2.0.0: version "2.0.0" @@ -8095,16 +8492,16 @@ which-pm@2.0.0: load-yaml-file "^0.2.0" path-exists "^4.0.0" -which-typed-array@^1.1.10: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" + has-tostringtag "^1.0.2" which@^1.2.9: version "1.3.1" @@ -8136,7 +8533,7 @@ widest-line@^3.1.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^6.2.0: +wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== @@ -8185,10 +8582,15 @@ write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@^8.3.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769" - integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ== +ws@8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +ws@^8.12.0, ws@^8.16.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== xml@^1.0.1: version "1.0.1" @@ -8225,7 +8627,7 @@ yaml-ast-parser@^0.0.43: resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== -yaml@2.3.4, yaml@^2.2.2: +yaml@2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== @@ -8235,6 +8637,11 @@ yaml@^1.10.0, yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.2.2: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.1.tgz#2e57e0b5e995292c25c75d2658f0664765210eed" + integrity sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg== + yargs-parser@^18.1.2, yargs-parser@^18.1.3: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -8265,7 +8672,7 @@ yargs@^15.1.0, yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^17.0.0, yargs@^17.1.1, yargs@^17.3.1, yargs@^17.6.2: +yargs@^17.0.0, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.1: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -8306,6 +8713,6 @@ zen-observable@0.8.15: integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== zod@^3.20.2: - version "3.21.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" - integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== + version "3.22.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" + integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== From f5f3b2a69c2d544d80540f0c940da2135bd6dc4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20Ve=C4=8Derek?= Date: Wed, 20 Mar 2024 00:09:11 +0100 Subject: [PATCH 3/6] refactor(typescript-effect): remove the use of schema and move logic over to the client constructor --- .../plugins/typescript/effect/package.json | 13 +- .../plugins/typescript/effect/src/visitor.ts | 46 +++--- .../tests/__snapshots__/effect.spec.ts.snap | 138 +++++++++--------- .../typescript/effect/tests/effect.spec.ts | 3 - yarn.lock | 91 ++++++------ 5 files changed, 138 insertions(+), 153 deletions(-) diff --git a/packages/plugins/typescript/effect/package.json b/packages/plugins/typescript/effect/package.json index ae67228ec..fbc283694 100644 --- a/packages/plugins/typescript/effect/package.json +++ b/packages/plugins/typescript/effect/package.json @@ -37,24 +37,25 @@ "test": "jest --no-watchman --config ../../../../jest.config.js" }, "peerDependencies": { - "@effect/platform": "~0.48.8", - "effect": "^2.4.7", + "@effect/platform": "~0.48.12", + "effect": "^2.4.9", "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "graphql-tag": "^2.0.0" }, "dependencies": { - "@effect/schema": "^0.64.7", "@graphql-codegen/plugin-helpers": "^3.0.0", "@graphql-codegen/visitor-plugin-common": "2.13.1", "auto-bind": "~4.0.0", "tslib": "~2.6.0" }, "devDependencies": { - "@effect/platform": "~0.48.8", - "@effect/platform-node": "~0.45.10", + "@effect/platform": "~0.48.12", + "@effect/platform-node": "~0.45.14", + "@effect/schema": "^0.64.8", "@graphql-codegen/testing": "1.18.0", "@graphql-tools/schema": "10.0.3", - "effect": "2.4.7" + "effect": "2.4.9", + "fast-check": "^3.16.0" }, "publishConfig": { "directory": "dist", diff --git a/packages/plugins/typescript/effect/src/visitor.ts b/packages/plugins/typescript/effect/src/visitor.ts index a6a5b0724..00868c81a 100644 --- a/packages/plugins/typescript/effect/src/visitor.ts +++ b/packages/plugins/typescript/effect/src/visitor.ts @@ -35,11 +35,27 @@ type GraphQLOperationArgs = { }; // https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed -const Accept = 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8'; +const headers = { + Accept: + "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8", + "Content-Type": "application/json", +}; -const makeGraphQLClient = Http.client.mapRequest( - Http.request.setHeaders({ Accept, 'Content-Type': 'application/json' }), -); +const makeGraphQLClient = () => + Effect.map(Http.client.Client, client => + Http.client.mapRequest(client, Http.request.setHeaders(headers)).pipe( + Http.client.filterStatusOk, + Http.client.mapEffectScoped(res => + Effect.flatMap(res.json, _ => { + const result = { body: _ as ExecutionResult, headers: res.headers }; + + return result.body.data + ? Effect.succeed(result as GraphQLSuccessResponse) + : Effect.fail(new MissingDataGraphQLResponseError(result)); + }), + ), + ), + ); const makeGraphQLOperation = ({ document, fallbackOperationName }: GraphQLOperationArgs) => @@ -47,31 +63,14 @@ const makeGraphQLOperation = const operationName = opts?.preferredOpName ?? fallbackOperationName; const query = ${documentMode === DocumentMode.string ? 'document' : 'print(document)'}; - return Effect.flatMap(Http.client.Client, client => + return Effect.flatMap(makeGraphQLClient(), client => Http.request.post('').pipe( Http.request.jsonBody({ query, operationName, variables, }), - Effect.flatMap(Http.client.filterStatusOk(makeGraphQLClient(client))), - Effect.flatMap( - Http.response.schemaJson( - S.struct({ - body: S.any, - headers: S.record(S.string, S.string), - }), - ), - ), - Effect.flatMap(res => { - const body = res.body as ExecutionResult; - const { headers } = res; - - if (body.data) return Effect.succeed(res as GraphQLSuccessResponse); - - return Effect.fail(new MissingDataGraphQLResponseError({ body, headers })); - }), - Effect.scoped, + Effect.flatMap(client), ), ); }; @@ -128,7 +127,6 @@ export class EffectVisitor extends ClientSideBaseVisitor< 'graphql', ), createNamesaceImport('Http', '@effect/platform/HttpClient'), - createNamesaceImport('S', '@effect/schema/Schema'), ].forEach(_ => this._additionalImports.push(_)); this._externalImportPrefix = this.config.importOperationTypesFrom diff --git a/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap b/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap index eacf3174c..2da1a3c6d 100644 --- a/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap +++ b/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap @@ -9,7 +9,6 @@ export type MakeMaybe = Omit & { [SubKey in K]: Mayb import { Data, Effect } from 'effect'; import { DocumentNode, ExecutionResult, print } from 'graphql'; import * as Http from '@effect/platform/HttpClient'; -import * as S from '@effect/schema/Schema'; import gql from 'graphql-tag'; /** All built-in and custom scalars, mapped to their actual values */ export type Scalars = { @@ -265,11 +264,27 @@ type GraphQLOperationArgs = { }; // https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed -const Accept = 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8'; +const headers = { + Accept: + "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8", + "Content-Type": "application/json", +}; -const makeGraphQLClient = Http.client.mapRequest( - Http.request.setHeaders({ Accept, 'Content-Type': 'application/json' }), -); +const makeGraphQLClient = () => + Effect.map(Http.client.Client, client => + Http.client.mapRequest(client, Http.request.setHeaders(headers)).pipe( + Http.client.filterStatusOk, + Http.client.mapEffectScoped(res => + Effect.flatMap(res.json, _ => { + const result = { body: _ as ExecutionResult, headers: res.headers }; + + return result.body.data + ? Effect.succeed(result as GraphQLSuccessResponse) + : Effect.fail(new MissingDataGraphQLResponseError(result)); + }), + ), + ), + ); const makeGraphQLOperation = ({ document, fallbackOperationName }: GraphQLOperationArgs) => @@ -277,31 +292,14 @@ const makeGraphQLOperation = const operationName = opts?.preferredOpName ?? fallbackOperationName; const query = print(document); - return Effect.flatMap(Http.client.Client, client => + return Effect.flatMap(makeGraphQLClient(), client => Http.request.post('').pipe( Http.request.jsonBody({ query, operationName, variables, }), - Effect.flatMap(Http.client.filterStatusOk(makeGraphQLClient(client))), - Effect.flatMap( - Http.response.schemaJson( - S.struct({ - body: S.any, - headers: S.record(S.string, S.string), - }), - ), - ), - Effect.flatMap(res => { - const body = res.body as ExecutionResult; - const { headers } = res; - - if (body.data) return Effect.succeed(res as GraphQLSuccessResponse); - - return Effect.fail(new MissingDataGraphQLResponseError({ body, headers })); - }), - Effect.scoped, + Effect.flatMap(client), ), ); }; @@ -362,7 +360,6 @@ export type MakeMaybe = Omit & { [SubKey in K]: Mayb import { Data, Effect } from 'effect'; import { DocumentNode, ExecutionResult, print } from 'graphql'; import * as Http from '@effect/platform/HttpClient'; -import * as S from '@effect/schema/Schema'; /** All built-in and custom scalars, mapped to their actual values */ export type Scalars = { ID: string; @@ -617,11 +614,27 @@ type GraphQLOperationArgs = { }; // https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed -const Accept = 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8'; +const headers = { + Accept: + "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8", + "Content-Type": "application/json", +}; -const makeGraphQLClient = Http.client.mapRequest( - Http.request.setHeaders({ Accept, 'Content-Type': 'application/json' }), -); +const makeGraphQLClient = () => + Effect.map(Http.client.Client, client => + Http.client.mapRequest(client, Http.request.setHeaders(headers)).pipe( + Http.client.filterStatusOk, + Http.client.mapEffectScoped(res => + Effect.flatMap(res.json, _ => { + const result = { body: _ as ExecutionResult, headers: res.headers }; + + return result.body.data + ? Effect.succeed(result as GraphQLSuccessResponse) + : Effect.fail(new MissingDataGraphQLResponseError(result)); + }), + ), + ), + ); const makeGraphQLOperation = ({ document, fallbackOperationName }: GraphQLOperationArgs) => @@ -629,31 +642,14 @@ const makeGraphQLOperation = const operationName = opts?.preferredOpName ?? fallbackOperationName; const query = document; - return Effect.flatMap(Http.client.Client, client => + return Effect.flatMap(makeGraphQLClient(), client => Http.request.post('').pipe( Http.request.jsonBody({ query, operationName, variables, }), - Effect.flatMap(Http.client.filterStatusOk(makeGraphQLClient(client))), - Effect.flatMap( - Http.response.schemaJson( - S.struct({ - body: S.any, - headers: S.record(S.string, S.string), - }), - ), - ), - Effect.flatMap(res => { - const body = res.body as ExecutionResult; - const { headers } = res; - - if (body.data) return Effect.succeed(res as GraphQLSuccessResponse); - - return Effect.fail(new MissingDataGraphQLResponseError({ body, headers })); - }), - Effect.scoped, + Effect.flatMap(client), ), ); }; @@ -714,7 +710,6 @@ export type MakeMaybe = Omit & { [SubKey in K]: Mayb import { Data, Effect } from 'effect'; import { type DocumentNode, type ExecutionResult, print } from 'graphql'; import * as Http from '@effect/platform/HttpClient'; -import * as S from '@effect/schema/Schema'; import gql from 'graphql-tag'; /** All built-in and custom scalars, mapped to their actual values */ export type Scalars = { @@ -970,11 +965,27 @@ type GraphQLOperationArgs = { }; // https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed -const Accept = 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8'; +const headers = { + Accept: + "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8", + "Content-Type": "application/json", +}; -const makeGraphQLClient = Http.client.mapRequest( - Http.request.setHeaders({ Accept, 'Content-Type': 'application/json' }), -); +const makeGraphQLClient = () => + Effect.map(Http.client.Client, client => + Http.client.mapRequest(client, Http.request.setHeaders(headers)).pipe( + Http.client.filterStatusOk, + Http.client.mapEffectScoped(res => + Effect.flatMap(res.json, _ => { + const result = { body: _ as ExecutionResult, headers: res.headers }; + + return result.body.data + ? Effect.succeed(result as GraphQLSuccessResponse) + : Effect.fail(new MissingDataGraphQLResponseError(result)); + }), + ), + ), + ); const makeGraphQLOperation = ({ document, fallbackOperationName }: GraphQLOperationArgs) => @@ -982,31 +993,14 @@ const makeGraphQLOperation = const operationName = opts?.preferredOpName ?? fallbackOperationName; const query = print(document); - return Effect.flatMap(Http.client.Client, client => + return Effect.flatMap(makeGraphQLClient(), client => Http.request.post('').pipe( Http.request.jsonBody({ query, operationName, variables, }), - Effect.flatMap(Http.client.filterStatusOk(makeGraphQLClient(client))), - Effect.flatMap( - Http.response.schemaJson( - S.struct({ - body: S.any, - headers: S.record(S.string, S.string), - }), - ), - ), - Effect.flatMap(res => { - const body = res.body as ExecutionResult; - const { headers } = res; - - if (body.data) return Effect.succeed(res as GraphQLSuccessResponse); - - return Effect.fail(new MissingDataGraphQLResponseError({ body, headers })); - }), - Effect.scoped, + Effect.flatMap(client), ), ); }; diff --git a/packages/plugins/typescript/effect/tests/effect.spec.ts b/packages/plugins/typescript/effect/tests/effect.spec.ts index 130262524..fc2776c9f 100644 --- a/packages/plugins/typescript/effect/tests/effect.spec.ts +++ b/packages/plugins/typescript/effect/tests/effect.spec.ts @@ -112,7 +112,6 @@ async function test() { "import { DocumentNode, ExecutionResult, print } from 'graphql';", ); expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); - expect(result.prepend).toContain("import * as S from '@effect/schema/Schema';"); expect(output).toMatchSnapshot(); }); @@ -160,7 +159,6 @@ async function test() { "import { DocumentNode, ExecutionResult, print } from 'graphql';", ); expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); - expect(result.prepend).toContain("import * as S from '@effect/schema/Schema';"); expect(output).toMatchSnapshot(); }); @@ -208,7 +206,6 @@ async function test() { "import { type DocumentNode, type ExecutionResult, print } from 'graphql';", ); expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); - expect(result.prepend).toContain("import * as S from '@effect/schema/Schema';"); expect(output).toMatchSnapshot(); }); diff --git a/yarn.lock b/yarn.lock index 71529ed83..4a1cfe4b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -65,15 +65,7 @@ dependencies: node-fetch "^2.6.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.1.tgz#8f4027f85a6e84a695276080e864215318f95c19" - integrity sha512-bC49z4spJQR3j8vFtJBLqzyzFV0ciuL5HYX7qfSl3KEqeMVV+eTquRvmXxpvB0AMubRrvv7y5DILiLLPi57Ewg== - dependencies: - "@babel/highlight" "^7.24.1" - picocolors "^1.0.0" - -"@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== @@ -376,16 +368,6 @@ "@babel/traverse" "^7.24.5" "@babel/types" "^7.24.5" -"@babel/highlight@^7.24.1": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" - integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.5" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - "@babel/highlight@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" @@ -1477,37 +1459,37 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@effect/platform-node-shared@^0.3.11": - version "0.3.11" - resolved "https://registry.yarnpkg.com/@effect/platform-node-shared/-/platform-node-shared-0.3.11.tgz#c90757c95387038bbe97d072af1c8b7396e09863" - integrity sha512-juXDDyPJ5REs47XeY9kwWDwHcddHLrXhyjgqEca9wxjG0n+SqOMtBSjLiggA/GbXVZjOC9pCAJi68CY/QHCN0g== +"@effect/platform-node-shared@^0.3.12": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@effect/platform-node-shared/-/platform-node-shared-0.3.12.tgz#a2c4e199e63579604176e536d49fe0dc140a1be1" + integrity sha512-sbjA6lW4mTN5cSVNzm9rGuObYY61AQzGxzbdtV/J8ATWK5jBLZMh5M5/1vAjiStF1hMI5koF8ZBUZ3p3vyNF0g== dependencies: "@parcel/watcher" "^2.4.1" multipasta "^0.1.21" -"@effect/platform-node@~0.45.10": - version "0.45.13" - resolved "https://registry.yarnpkg.com/@effect/platform-node/-/platform-node-0.45.13.tgz#c562a0d52841529d11af6bd8c871a34d1a6d9792" - integrity sha512-fHiZEsANZDUU4GosGDznBd9RJsQLmmAwRhZdPm1jwLKK21gn4Gzjzx7uh3oEhQxvJStAYgQCizNhE/1MqTOzgA== +"@effect/platform-node@~0.45.14": + version "0.45.14" + resolved "https://registry.yarnpkg.com/@effect/platform-node/-/platform-node-0.45.14.tgz#cc353e7ddff99955fe0e1b1c307ab14d0d43c614" + integrity sha512-HveyfM+UrUjOOfmstyvXII4QlYUvYIuMgptw79h3VzmAPhTDa6fS6S/3MpDtE+8INFzNjHuo/1DKB/BF0rDFNg== dependencies: - "@effect/platform-node-shared" "^0.3.11" + "@effect/platform-node-shared" "^0.3.12" mime "^3.0.0" ws "^8.16.0" -"@effect/platform@~0.48.8": - version "0.48.11" - resolved "https://registry.yarnpkg.com/@effect/platform/-/platform-0.48.11.tgz#ed9b12b6b96069cfe6957e8e9366442fe4c6fd9c" - integrity sha512-ErGcEzaxK1jXqXi70qNdFwxLN4W3sPCCJjGs1p+/zsSzLs5xSlfqbPewtS84NOLBdzaRXR03zjXjW4ZY0XWNSg== +"@effect/platform@~0.48.12": + version "0.48.12" + resolved "https://registry.yarnpkg.com/@effect/platform/-/platform-0.48.12.tgz#f2946d1280d0925cc753c13072fb0fc94d6ff150" + integrity sha512-VFTnkR5X+fDkR7JcUsY3klDrnPqCzYjoPJkEg7wKprB8/CyXQ112rkiVwM6TmqAjwKsxrrgcllcXJa6S2CryIA== dependencies: find-my-way-ts "^0.1.1" isomorphic-ws "^5.0.0" multipasta "^0.1.21" path-browserify "^1.0.1" -"@effect/schema@^0.64.7": - version "0.64.7" - resolved "https://registry.yarnpkg.com/@effect/schema/-/schema-0.64.7.tgz#ef237b7c7ebb5cd51ac179c0cb5b33e30157c43a" - integrity sha512-iTfA7M+sjeoApwJfaalybbR25w/TW2GCerqdftxlwwNco3uOCOzB6nalmRaN4NinjSpcgg15nkDtugvAOQqrOA== +"@effect/schema@^0.64.8": + version "0.64.8" + resolved "https://registry.yarnpkg.com/@effect/schema/-/schema-0.64.8.tgz#db0af72200cd4d569c36c82f3d7b5e5c5a863d82" + integrity sha512-SKhFcc6qEDWMa2OCdwxh4a23Brrpy/uZT2CriTgF8DcnB0kxzEXVLfi2Zt7GOcO+SizKQw2eYjTNT8JceZvG6A== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -3268,14 +3250,15 @@ array-union@^2.1.0: integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array.prototype.findlastindex@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz#d1c50f0b3a9da191981ff8942a0aedd82794404f" - integrity sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ== + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== dependencies: - call-bind "^1.0.5" + call-bind "^1.0.7" define-properties "^1.2.1" - es-abstract "^1.22.3" + es-abstract "^1.23.2" es-errors "^1.3.0" + es-object-atoms "^1.0.0" es-shim-unscopables "^1.0.2" array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.2: @@ -4236,15 +4219,15 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -effect@2.4.7: - version "2.4.7" - resolved "https://registry.yarnpkg.com/effect/-/effect-2.4.7.tgz#c0cefa86e71d7f3d15a53d2c2441dabd646b124e" - integrity sha512-4YOPi4r7nLFJAK1W/l7FM3fptZBtrJkqa5Rh2u7gkFCECn+RiwuQ8KYPm8sf4RFIp+fSQXGA87GIDtyxrz0mbA== +effect@2.4.9: + version "2.4.9" + resolved "https://registry.yarnpkg.com/effect/-/effect-2.4.9.tgz#58c99e495e05ea3310683c54600560fe66adf833" + integrity sha512-hRTy37jVylIYOC4k/VKfgmGkIMEOjR8MOurLzr1J0AD7ufagbcoO7voygZkT2B1STXfBXEsKNWj8yDAzUcPpAA== electron-to-chromium@^1.4.668: - version "1.4.710" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.710.tgz#d0ec4ea8a97df4c5eaeb8c69d45bf81f248b3855" - integrity sha512-w+9yAVHoHhysCa+gln7AzbO9CdjFcL/wN/5dd+XW/Msl2d/4+WisEaCF1nty0xbAKaxdaJfgLB2296U7zZB7BA== + version "1.4.711" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.711.tgz#f9fd04007878cc27ac327d5c6ce300f8b516f635" + integrity sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w== emittery@^0.10.2: version "0.10.2" @@ -4631,6 +4614,13 @@ extract-files@^9.0.0: resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== +fast-check@^3.16.0: + version "3.16.0" + resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-3.16.0.tgz#798fa85212dbfb9e4fdc65b12d872225a8f1c907" + integrity sha512-k8GtQHi4pJoRQ1gVDFQno+/FVkowo/ehiz/aCj9O/D7HRWb1sSFzNrw+iPVU8QlWtH+jNwbuN+dDVg3QkS56DQ== + dependencies: + pure-rand "^6.0.0" + fast-decode-uri-component@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" @@ -7198,6 +7188,11 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +pure-rand@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== + pvtsutils@^1.3.2, pvtsutils@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" From b2ed063518bc249c823891ef7c4864ee6b5c66d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20Ve=C4=8Derek?= Date: Wed, 20 Mar 2024 14:34:40 +0100 Subject: [PATCH 4/6] feat(typescript-effect): export a basic GraphQLClient layer from within the generated SDK Co-authored-by: Tim Smart --- .../plugins/typescript/effect/src/visitor.ts | 92 +++-- .../tests/__snapshots__/effect.spec.ts.snap | 330 +++++++++++------- .../typescript/effect/tests/effect.spec.ts | 97 +---- .../effect/tests/integration.spec.ts | 61 ++-- .../tests/test-files/run-example-query.ts | 23 +- yarn.lock | 16 +- 6 files changed, 329 insertions(+), 290 deletions(-) diff --git a/packages/plugins/typescript/effect/src/visitor.ts b/packages/plugins/typescript/effect/src/visitor.ts index 00868c81a..c0de826f5 100644 --- a/packages/plugins/typescript/effect/src/visitor.ts +++ b/packages/plugins/typescript/effect/src/visitor.ts @@ -10,21 +10,71 @@ import { export interface EffectPluginConfig extends ClientSideBasePluginConfig {} -const additionalStaticContent = (documentMode: DocumentMode) => ` -export type GraphQLSuccessResponse = { - body: ExecutionResult & { data: A }; - headers: Record; +const clientCode = `export type GraphQLSuccessResponse = Pick< + Http.response.ClientResponse, + 'status' | 'headers' +> & { + readonly body: ExecutionResult & { readonly data: A }; }; -export type GraphQLErrorResponse = { - body: Omit; - headers: Record; +export type GraphQLErrorResponse = Pick & { + readonly body: Pick; }; export class MissingDataGraphQLResponseError extends Data.TaggedError( 'MissingDataGraphQLResponseError', ) {} +const headers = { + // https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed + Accept: 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8', + 'Content-Type': 'application/json', +}; + +export class GraphQLClient extends Context.Tag('GraphQLClient')< + GraphQLClient, + Http.client.Client< + never, + Http.error.HttpClientError | MissingDataGraphQLResponseError, + GraphQLSuccessResponse + > +>() { + static fromDefaultClient(client: Http.client.Client.Default): Layer.Layer { + return Layer.succeed( + GraphQLClient, + client.pipe( + Http.client.mapRequest(Http.request.setHeaders(headers)), + Http.client.filterStatusOk, + Http.client.mapEffectScoped(res => + Effect.flatMap(res.json, _ => { + const body = _ as ExecutionResult; + return body.data + ? Effect.succeed({ ...res, body: { ...body, data: body.data } }) + : Effect.fail(new MissingDataGraphQLResponseError({ ...res, body })); + }), + ), + ), + ); + } + + static Live: Layer.Layer = Layer.unwrapEffect( + Effect.map(Http.client.Client, GraphQLClient.fromDefaultClient), + ); + + static fromEndpoint( + endpoint: string, + ): Layer.Layer { + return Layer.unwrapEffect( + Effect.map(Http.client.Client, client => + GraphQLClient.fromDefaultClient( + Http.client.mapRequest(client, Http.request.prependUrl(endpoint)), + ), + ), + ); + } +}`; + +const additionalStaticContent = (documentMode: DocumentMode) => ` export type GraphQLOperationOptions = { preferredOpName?: string; }; @@ -34,28 +84,7 @@ type GraphQLOperationArgs = { fallbackOperationName: string; }; -// https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed -const headers = { - Accept: - "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8", - "Content-Type": "application/json", -}; - -const makeGraphQLClient = () => - Effect.map(Http.client.Client, client => - Http.client.mapRequest(client, Http.request.setHeaders(headers)).pipe( - Http.client.filterStatusOk, - Http.client.mapEffectScoped(res => - Effect.flatMap(res.json, _ => { - const result = { body: _ as ExecutionResult, headers: res.headers }; - - return result.body.data - ? Effect.succeed(result as GraphQLSuccessResponse) - : Effect.fail(new MissingDataGraphQLResponseError(result)); - }), - ), - ), - ); +${clientCode} const makeGraphQLOperation = ({ document, fallbackOperationName }: GraphQLOperationArgs) => @@ -63,7 +92,7 @@ const makeGraphQLOperation = const operationName = opts?.preferredOpName ?? fallbackOperationName; const query = ${documentMode === DocumentMode.string ? 'document' : 'print(document)'}; - return Effect.flatMap(makeGraphQLClient(), client => + return Effect.flatMap(GraphQLClient, client => Http.request.post('').pipe( Http.request.jsonBody({ query, @@ -71,6 +100,7 @@ const makeGraphQLOperation = variables, }), Effect.flatMap(client), + Effect.map(_ => _ as GraphQLSuccessResponse), ), ); }; @@ -113,8 +143,10 @@ export class EffectVisitor extends ClientSideBaseVisitor< [ createNamedImport( [ + ['Context', 'value'], ['Data', 'value'], ['Effect', 'value'], + ['Layer', 'value'], ], 'effect', ), diff --git a/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap b/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap index 2da1a3c6d..0ba365c92 100644 --- a/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap +++ b/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap @@ -6,7 +6,7 @@ export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; -import { Data, Effect } from 'effect'; +import { Context, Data, Effect, Layer } from 'effect'; import { DocumentNode, ExecutionResult, print } from 'graphql'; import * as Http from '@effect/platform/HttpClient'; import gql from 'graphql-tag'; @@ -240,20 +240,6 @@ export const Feed4Document = gql\` } \`; -export type GraphQLSuccessResponse = { - body: ExecutionResult & { data: A }; - headers: Record; -}; - -export type GraphQLErrorResponse = { - body: Omit; - headers: Record; -}; - -export class MissingDataGraphQLResponseError extends Data.TaggedError( - 'MissingDataGraphQLResponseError', -) {} - export type GraphQLOperationOptions = { preferredOpName?: string; }; @@ -263,36 +249,77 @@ type GraphQLOperationArgs = { fallbackOperationName: string; }; -// https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed +export type GraphQLSuccessResponse = Pick< + Http.response.ClientResponse, + 'status' | 'headers' +> & { + readonly body: ExecutionResult & { readonly data: A }; +}; + +export type GraphQLErrorResponse = Pick & { + readonly body: Pick; +}; + +export class MissingDataGraphQLResponseError extends Data.TaggedError( + 'MissingDataGraphQLResponseError', +) {} + const headers = { - Accept: - "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8", - "Content-Type": "application/json", + // https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed + Accept: 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8', + 'Content-Type': 'application/json', }; -const makeGraphQLClient = () => - Effect.map(Http.client.Client, client => - Http.client.mapRequest(client, Http.request.setHeaders(headers)).pipe( - Http.client.filterStatusOk, - Http.client.mapEffectScoped(res => - Effect.flatMap(res.json, _ => { - const result = { body: _ as ExecutionResult, headers: res.headers }; - - return result.body.data - ? Effect.succeed(result as GraphQLSuccessResponse) - : Effect.fail(new MissingDataGraphQLResponseError(result)); - }), +export class GraphQLClient extends Context.Tag('GraphQLClient')< + GraphQLClient, + Http.client.Client< + never, + Http.error.HttpClientError | MissingDataGraphQLResponseError, + GraphQLSuccessResponse + > +>() { + static fromDefaultClient(client: Http.client.Client.Default): Layer.Layer { + return Layer.succeed( + GraphQLClient, + client.pipe( + Http.client.mapRequest(Http.request.setHeaders(headers)), + Http.client.filterStatusOk, + Http.client.mapEffectScoped(res => + Effect.flatMap(res.json, _ => { + const body = _ as ExecutionResult; + return body.data + ? Effect.succeed({ ...res, body: { ...body, data: body.data } }) + : Effect.fail(new MissingDataGraphQLResponseError({ ...res, body })); + }), + ), ), - ), + ); + } + + static Live: Layer.Layer = Layer.unwrapEffect( + Effect.map(Http.client.Client, GraphQLClient.fromDefaultClient), ); + static fromEndpoint( + endpoint: string, + ): Layer.Layer { + return Layer.unwrapEffect( + Effect.map(Http.client.Client, client => + GraphQLClient.fromDefaultClient( + Http.client.mapRequest(client, Http.request.prependUrl(endpoint)), + ), + ), + ); + } +} + const makeGraphQLOperation = ({ document, fallbackOperationName }: GraphQLOperationArgs) => (variables: Vars, opts?: GraphQLOperationOptions) => { const operationName = opts?.preferredOpName ?? fallbackOperationName; const query = print(document); - return Effect.flatMap(makeGraphQLClient(), client => + return Effect.flatMap(GraphQLClient, client => Http.request.post('').pipe( Http.request.jsonBody({ query, @@ -300,6 +327,7 @@ const makeGraphQLOperation = variables, }), Effect.flatMap(client), + Effect.map(_ => _ as GraphQLSuccessResponse), ), ); }; @@ -321,19 +349,15 @@ export const feed4 = makeGraphQLOperation({ fallbackOperationName: 'feed4', }); -import { Layer } from 'effect'; import { NodeHttpClient } from '@effect/platform-node'; +import { flow } from 'effect'; -const HttpClientLive = Layer.effect( - Http.client.Client, - Effect.map( - Http.client.Client, - Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), +const run = flow( + Effect.provide( + GraphQLClient.fromEndpoint('http://localhost:4000/graphql').pipe(Layer.provide(NodeHttpClient.layer)), ), -).pipe(Layer.provide(NodeHttpClient.layer)); - -const run = (e: Effect.Effect) => - e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + Effect.runPromise +); async function test() { await run(feed({})); @@ -357,7 +381,7 @@ export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; -import { Data, Effect } from 'effect'; +import { Context, Data, Effect, Layer } from 'effect'; import { DocumentNode, ExecutionResult, print } from 'graphql'; import * as Http from '@effect/platform/HttpClient'; /** All built-in and custom scalars, mapped to their actual values */ @@ -590,20 +614,6 @@ export const Feed4Document = \` } \`; -export type GraphQLSuccessResponse = { - body: ExecutionResult & { data: A }; - headers: Record; -}; - -export type GraphQLErrorResponse = { - body: Omit; - headers: Record; -}; - -export class MissingDataGraphQLResponseError extends Data.TaggedError( - 'MissingDataGraphQLResponseError', -) {} - export type GraphQLOperationOptions = { preferredOpName?: string; }; @@ -613,36 +623,77 @@ type GraphQLOperationArgs = { fallbackOperationName: string; }; -// https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed +export type GraphQLSuccessResponse = Pick< + Http.response.ClientResponse, + 'status' | 'headers' +> & { + readonly body: ExecutionResult & { readonly data: A }; +}; + +export type GraphQLErrorResponse = Pick & { + readonly body: Pick; +}; + +export class MissingDataGraphQLResponseError extends Data.TaggedError( + 'MissingDataGraphQLResponseError', +) {} + const headers = { - Accept: - "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8", - "Content-Type": "application/json", + // https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed + Accept: 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8', + 'Content-Type': 'application/json', }; -const makeGraphQLClient = () => - Effect.map(Http.client.Client, client => - Http.client.mapRequest(client, Http.request.setHeaders(headers)).pipe( - Http.client.filterStatusOk, - Http.client.mapEffectScoped(res => - Effect.flatMap(res.json, _ => { - const result = { body: _ as ExecutionResult, headers: res.headers }; - - return result.body.data - ? Effect.succeed(result as GraphQLSuccessResponse) - : Effect.fail(new MissingDataGraphQLResponseError(result)); - }), +export class GraphQLClient extends Context.Tag('GraphQLClient')< + GraphQLClient, + Http.client.Client< + never, + Http.error.HttpClientError | MissingDataGraphQLResponseError, + GraphQLSuccessResponse + > +>() { + static fromDefaultClient(client: Http.client.Client.Default): Layer.Layer { + return Layer.succeed( + GraphQLClient, + client.pipe( + Http.client.mapRequest(Http.request.setHeaders(headers)), + Http.client.filterStatusOk, + Http.client.mapEffectScoped(res => + Effect.flatMap(res.json, _ => { + const body = _ as ExecutionResult; + return body.data + ? Effect.succeed({ ...res, body: { ...body, data: body.data } }) + : Effect.fail(new MissingDataGraphQLResponseError({ ...res, body })); + }), + ), ), - ), + ); + } + + static Live: Layer.Layer = Layer.unwrapEffect( + Effect.map(Http.client.Client, GraphQLClient.fromDefaultClient), ); + static fromEndpoint( + endpoint: string, + ): Layer.Layer { + return Layer.unwrapEffect( + Effect.map(Http.client.Client, client => + GraphQLClient.fromDefaultClient( + Http.client.mapRequest(client, Http.request.prependUrl(endpoint)), + ), + ), + ); + } +} + const makeGraphQLOperation = ({ document, fallbackOperationName }: GraphQLOperationArgs) => (variables: Vars, opts?: GraphQLOperationOptions) => { const operationName = opts?.preferredOpName ?? fallbackOperationName; const query = document; - return Effect.flatMap(makeGraphQLClient(), client => + return Effect.flatMap(GraphQLClient, client => Http.request.post('').pipe( Http.request.jsonBody({ query, @@ -650,6 +701,7 @@ const makeGraphQLOperation = variables, }), Effect.flatMap(client), + Effect.map(_ => _ as GraphQLSuccessResponse), ), ); }; @@ -671,19 +723,15 @@ export const feed4 = makeGraphQLOperation({ fallbackOperationName: 'feed4', }); -import { Layer } from 'effect'; import { NodeHttpClient } from '@effect/platform-node'; +import { flow } from 'effect'; -const HttpClientLive = Layer.effect( - Http.client.Client, - Effect.map( - Http.client.Client, - Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), +const run = flow( + Effect.provide( + GraphQLClient.fromEndpoint('http://localhost:4000/graphql').pipe(Layer.provide(NodeHttpClient.layer)), ), -).pipe(Layer.provide(NodeHttpClient.layer)); - -const run = (e: Effect.Effect) => - e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + Effect.runPromise +); async function test() { await run(feed({})); @@ -707,7 +755,7 @@ export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; -import { Data, Effect } from 'effect'; +import { Context, Data, Effect, Layer } from 'effect'; import { type DocumentNode, type ExecutionResult, print } from 'graphql'; import * as Http from '@effect/platform/HttpClient'; import gql from 'graphql-tag'; @@ -941,20 +989,6 @@ export const Feed4Document = gql\` } \`; -export type GraphQLSuccessResponse = { - body: ExecutionResult & { data: A }; - headers: Record; -}; - -export type GraphQLErrorResponse = { - body: Omit; - headers: Record; -}; - -export class MissingDataGraphQLResponseError extends Data.TaggedError( - 'MissingDataGraphQLResponseError', -) {} - export type GraphQLOperationOptions = { preferredOpName?: string; }; @@ -964,36 +998,77 @@ type GraphQLOperationArgs = { fallbackOperationName: string; }; -// https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed +export type GraphQLSuccessResponse = Pick< + Http.response.ClientResponse, + 'status' | 'headers' +> & { + readonly body: ExecutionResult & { readonly data: A }; +}; + +export type GraphQLErrorResponse = Pick & { + readonly body: Pick; +}; + +export class MissingDataGraphQLResponseError extends Data.TaggedError( + 'MissingDataGraphQLResponseError', +) {} + const headers = { - Accept: - "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8", - "Content-Type": "application/json", + // https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed + Accept: 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8', + 'Content-Type': 'application/json', }; -const makeGraphQLClient = () => - Effect.map(Http.client.Client, client => - Http.client.mapRequest(client, Http.request.setHeaders(headers)).pipe( - Http.client.filterStatusOk, - Http.client.mapEffectScoped(res => - Effect.flatMap(res.json, _ => { - const result = { body: _ as ExecutionResult, headers: res.headers }; - - return result.body.data - ? Effect.succeed(result as GraphQLSuccessResponse) - : Effect.fail(new MissingDataGraphQLResponseError(result)); - }), +export class GraphQLClient extends Context.Tag('GraphQLClient')< + GraphQLClient, + Http.client.Client< + never, + Http.error.HttpClientError | MissingDataGraphQLResponseError, + GraphQLSuccessResponse + > +>() { + static fromDefaultClient(client: Http.client.Client.Default): Layer.Layer { + return Layer.succeed( + GraphQLClient, + client.pipe( + Http.client.mapRequest(Http.request.setHeaders(headers)), + Http.client.filterStatusOk, + Http.client.mapEffectScoped(res => + Effect.flatMap(res.json, _ => { + const body = _ as ExecutionResult; + return body.data + ? Effect.succeed({ ...res, body: { ...body, data: body.data } }) + : Effect.fail(new MissingDataGraphQLResponseError({ ...res, body })); + }), + ), ), - ), + ); + } + + static Live: Layer.Layer = Layer.unwrapEffect( + Effect.map(Http.client.Client, GraphQLClient.fromDefaultClient), ); + static fromEndpoint( + endpoint: string, + ): Layer.Layer { + return Layer.unwrapEffect( + Effect.map(Http.client.Client, client => + GraphQLClient.fromDefaultClient( + Http.client.mapRequest(client, Http.request.prependUrl(endpoint)), + ), + ), + ); + } +} + const makeGraphQLOperation = ({ document, fallbackOperationName }: GraphQLOperationArgs) => (variables: Vars, opts?: GraphQLOperationOptions) => { const operationName = opts?.preferredOpName ?? fallbackOperationName; const query = print(document); - return Effect.flatMap(makeGraphQLClient(), client => + return Effect.flatMap(GraphQLClient, client => Http.request.post('').pipe( Http.request.jsonBody({ query, @@ -1001,6 +1076,7 @@ const makeGraphQLOperation = variables, }), Effect.flatMap(client), + Effect.map(_ => _ as GraphQLSuccessResponse), ), ); }; @@ -1022,19 +1098,15 @@ export const feed4 = makeGraphQLOperation({ fallbackOperationName: 'feed4', }); -import { Layer } from 'effect'; import { NodeHttpClient } from '@effect/platform-node'; +import { flow } from 'effect'; -const HttpClientLive = Layer.effect( - Http.client.Client, - Effect.map( - Http.client.Client, - Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), +const run = flow( + Effect.provide( + GraphQLClient.fromEndpoint('http://localhost:4000/graphql').pipe(Layer.provide(NodeHttpClient.layer)), ), -).pipe(Layer.provide(NodeHttpClient.layer)); - -const run = (e: Effect.Effect) => - e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + Effect.runPromise +); async function test() { await run(feed({})); diff --git a/packages/plugins/typescript/effect/tests/effect.spec.ts b/packages/plugins/typescript/effect/tests/effect.spec.ts index fc2776c9f..86207dabd 100644 --- a/packages/plugins/typescript/effect/tests/effect.spec.ts +++ b/packages/plugins/typescript/effect/tests/effect.spec.ts @@ -68,27 +68,16 @@ describe('effect', () => { }; describe('sdk', () => { - it('Should generate the correct content', async () => { - const config = {}; - const docs = [{ location: '', document: basicDoc }]; - const result = (await plugin(schema, docs, config, { - outputFile: 'graphql.ts', - })) as Types.ComplexPluginOutput; - - const usage = ` -import { Layer } from 'effect'; + const usage = ` import { NodeHttpClient } from '@effect/platform-node'; +import { flow } from 'effect'; -const HttpClientLive = Layer.effect( - Http.client.Client, - Effect.map( - Http.client.Client, - Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), +const run = flow( + Effect.provide( + GraphQLClient.fromEndpoint('http://localhost:4000/graphql').pipe(Layer.provide(NodeHttpClient.layer)), ), -).pipe(Layer.provide(NodeHttpClient.layer)); - -const run = (e: Effect.Effect) => - e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); + Effect.runPromise +); async function test() { await run(feed({})); @@ -104,10 +93,16 @@ async function test() { } } `; + it('Should generate the correct content', async () => { + const config = {}; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; const output = await validate(result, config, docs, schema, usage); - expect(result.prepend).toContain("import { Data, Effect } from 'effect';"); + expect(result.prepend).toContain("import { Context, Data, Effect, Layer } from 'effect';"); expect(result.prepend).toContain( "import { DocumentNode, ExecutionResult, print } from 'graphql';", ); @@ -122,39 +117,9 @@ async function test() { outputFile: 'graphql.ts', })) as Types.ComplexPluginOutput; - const usage = ` -import { Layer } from 'effect'; -import { NodeHttpClient } from '@effect/platform-node'; - -const HttpClientLive = Layer.effect( - Http.client.Client, - Effect.map( - Http.client.Client, - Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), - ), -).pipe(Layer.provide(NodeHttpClient.layer)); - -const run = (e: Effect.Effect) => - e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); - -async function test() { - await run(feed({})); - await run(feed3({})); - await run(feed4({})); - - const { body: { data } } = await run(feed2({})); - - if (data.feed) { - if (data.feed[0]) { - const id = data.feed[0].id - } - } -} -`; - const output = await validate(result, config, docs, schema, usage); - expect(result.prepend).toContain("import { Data, Effect } from 'effect';"); + expect(result.prepend).toContain("import { Context, Data, Effect, Layer } from 'effect';"); expect(result.prepend).toContain( "import { DocumentNode, ExecutionResult, print } from 'graphql';", ); @@ -169,39 +134,9 @@ async function test() { outputFile: 'graphql.ts', })) as Types.ComplexPluginOutput; - const usage = ` -import { Layer } from 'effect'; -import { NodeHttpClient } from '@effect/platform-node'; - -const HttpClientLive = Layer.effect( - Http.client.Client, - Effect.map( - Http.client.Client, - Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), - ), -).pipe(Layer.provide(NodeHttpClient.layer)); - -const run = (e: Effect.Effect) => - e.pipe(Effect.provide(HttpClientLive), Effect.runPromise); - -async function test() { - await run(feed({})); - await run(feed3({})); - await run(feed4({})); - - const { body: { data } } = await run(feed2({})); - - if (data.feed) { - if (data.feed[0]) { - const id = data.feed[0].id - } - } -} -`; - const output = await validate(result, config, docs, schema, usage); - expect(result.prepend).toContain("import { Data, Effect } from 'effect';"); + expect(result.prepend).toContain("import { Context, Data, Effect, Layer } from 'effect';"); expect(result.prepend).toContain( "import { type DocumentNode, type ExecutionResult, print } from 'graphql';", ); diff --git a/packages/plugins/typescript/effect/tests/integration.spec.ts b/packages/plugins/typescript/effect/tests/integration.spec.ts index 195a58f83..787ac8ca2 100644 --- a/packages/plugins/typescript/effect/tests/integration.spec.ts +++ b/packages/plugins/typescript/effect/tests/integration.spec.ts @@ -8,28 +8,36 @@ import * as TypeScriptOperationsPlugin from '@graphql-codegen/typescript-operati import { makeExecutableSchema } from '@graphql-tools/schema'; import * as EffectPlugin from '../src/index.js'; +const sdkFileName = 'effect-sdk.ts'; +const sdkFilePath = path.join(__dirname, './test-files', sdkFileName); +const typeDefs = parse(/* GraphQL */ ` + type Query { + add(x: Int!, y: Int!): Int! + } +`); +const schema = makeExecutableSchema({ + typeDefs, + resolvers: { + Query: { + add: (_, { x, y }) => x + y, + }, + }, +}); +const exampleQuery = /* GraphQL */ ` + query Add($x: Int!, $y: Int!) { + add(x: $x, y: $y) + } +`; +const mockServer = mockGraphQLServer({ + schema, + host: 'http://localhost:4000', + path: '/graphql', +}); + describe('Effect Integration', () => { + afterAll(() => mockServer.done()); + it('should send requests correctly', async () => { - const sdkFileName = 'effect-sdk.ts'; - const sdkFilePath = path.join(__dirname, './test-files', sdkFileName); - const typeDefs = parse(/* GraphQL */ ` - type Query { - add(x: Int!, y: Int!): Int! - } - `); - const schema = makeExecutableSchema({ - typeDefs, - resolvers: { - Query: { - add: (_, { x, y }) => x + y, - }, - }, - }); - const exampleQuery = /* GraphQL */ ` - query Add($x: Int!, $y: Int!) { - add(x: $x, y: $y) - } - `; const sdkCodeString = await codegen({ schema: typeDefs, schemaAst: schema, @@ -53,21 +61,16 @@ describe('Effect Integration', () => { 'typescript-operations': {}, }, { - effect: {}, + effect: { mode: 'mixed' }, }, ], config: {}, }); await fs.writeFile(sdkFilePath, sdkCodeString, 'utf-8'); - const mockServer = mockGraphQLServer({ - schema, - host: 'http://localhost:4000', - path: '/graphql', - }); - const { runExampleQuery } = require('./test-files/run-example-query'); - const { body } = await runExampleQuery(2, 3); + const { exampleQueries } = require('./test-files/run-example-query'); + const { add } = exampleQueries('http://localhost:4000/graphql'); + const { body } = await add(2, 3); expect(body.data.add).toBe(5); - mockServer.done(); await fs.remove(sdkFilePath); }); }); diff --git a/packages/plugins/typescript/effect/tests/test-files/run-example-query.ts b/packages/plugins/typescript/effect/tests/test-files/run-example-query.ts index 0a4766f30..af7df0480 100644 --- a/packages/plugins/typescript/effect/tests/test-files/run-example-query.ts +++ b/packages/plugins/typescript/effect/tests/test-files/run-example-query.ts @@ -1,16 +1,13 @@ import { Effect, Layer } from 'effect'; import { NodeHttpClient } from '@effect/platform-node'; -import * as Http from '@effect/platform/HttpClient'; -import { Add } from './effect-sdk.js'; +import { Add, GraphQLClient } from './effect-sdk.js'; -const HttpClientLive = Layer.effect( - Http.client.Client, - Effect.map( - Http.client.Client, - Http.client.mapRequest(Http.request.prependUrl('http://localhost:4000/graphql')), - ), -).pipe(Layer.provide(NodeHttpClient.layer)); - -export const runExampleQuery = (x: number, y: number) => { - return Add({ x, y }).pipe(Effect.provide(HttpClientLive), Effect.runPromise); -}; +export const exampleQueries = (endpoint: string) => ({ + add: (x: number, y: number) => + Add({ x, y }).pipe( + Effect.provide( + GraphQLClient.fromEndpoint(endpoint).pipe(Layer.provide(NodeHttpClient.layer)), + ), + Effect.runPromise, + ), +}); diff --git a/yarn.lock b/yarn.lock index 4a1cfe4b7..00a0f3420 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1459,20 +1459,20 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@effect/platform-node-shared@^0.3.12": - version "0.3.12" - resolved "https://registry.yarnpkg.com/@effect/platform-node-shared/-/platform-node-shared-0.3.12.tgz#a2c4e199e63579604176e536d49fe0dc140a1be1" - integrity sha512-sbjA6lW4mTN5cSVNzm9rGuObYY61AQzGxzbdtV/J8ATWK5jBLZMh5M5/1vAjiStF1hMI5koF8ZBUZ3p3vyNF0g== +"@effect/platform-node-shared@^0.3.13": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@effect/platform-node-shared/-/platform-node-shared-0.3.13.tgz#fcad21159ab77dd9f0c146a04351a13f02b72507" + integrity sha512-DW0xLaYH7PyXbLaTzve9iOUc0F+T3kPE/j5UeOm3wu1MffgwA31HzWhiwvbvjF+qLPqTrthYIZlhFEFC/zjOZg== dependencies: "@parcel/watcher" "^2.4.1" multipasta "^0.1.21" "@effect/platform-node@~0.45.14": - version "0.45.14" - resolved "https://registry.yarnpkg.com/@effect/platform-node/-/platform-node-0.45.14.tgz#cc353e7ddff99955fe0e1b1c307ab14d0d43c614" - integrity sha512-HveyfM+UrUjOOfmstyvXII4QlYUvYIuMgptw79h3VzmAPhTDa6fS6S/3MpDtE+8INFzNjHuo/1DKB/BF0rDFNg== + version "0.45.15" + resolved "https://registry.yarnpkg.com/@effect/platform-node/-/platform-node-0.45.15.tgz#d5cdc52d0bea097acf554f94029104d5b0bd35be" + integrity sha512-cXxDLIpEEgLO0v4YXK8JHS63x3/mGaAoR/QYueu4+DAIwVc0BykurYQh+n1PMKJvvHHprDK8G0xndRWwP0/Neg== dependencies: - "@effect/platform-node-shared" "^0.3.12" + "@effect/platform-node-shared" "^0.3.13" mime "^3.0.0" ws "^8.16.0" From 54e996e9ce01ff255bedfbe9e2d14dd613f17888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20Ve=C4=8Derek?= Date: Wed, 20 Mar 2024 17:47:47 +0100 Subject: [PATCH 5/6] feat(typescript-effect): make plugin output mode configurable --- .../plugins/typescript/effect/src/config.ts | 44 + .../plugins/typescript/effect/src/index.ts | 25 +- .../plugins/typescript/effect/src/visitor.ts | 110 +- .../tests/__snapshots__/effect.spec.ts.snap | 940 +++++++++++++++++- .../typescript/effect/tests/effect.spec.ts | 169 +++- .../effect/tests/integration.spec.ts | 111 ++- ...le-query.ts => run-example-query-mixed.ts} | 0 .../test-files/run-example-query-split.ts | 13 + 8 files changed, 1282 insertions(+), 130 deletions(-) create mode 100644 packages/plugins/typescript/effect/src/config.ts rename packages/plugins/typescript/effect/tests/test-files/{run-example-query.ts => run-example-query-mixed.ts} (100%) create mode 100644 packages/plugins/typescript/effect/tests/test-files/run-example-query-split.ts diff --git a/packages/plugins/typescript/effect/src/config.ts b/packages/plugins/typescript/effect/src/config.ts new file mode 100644 index 000000000..98fcb690f --- /dev/null +++ b/packages/plugins/typescript/effect/src/config.ts @@ -0,0 +1,44 @@ +import { RawClientSideBasePluginConfig } from '@graphql-codegen/visitor-plugin-common'; + +/** + * @description This plugin generates a fully-typed, ready-to-use SDK written with [`effect`](https://effect.website). + */ + +export interface RawEffectPluginConfig extends RawClientSideBasePluginConfig { + /** + * @description Allows you to override the output mode of the `typescript-effect` codegen plugin. To generate the GraphQL client in a separate file, use the `client-only` and `operations-only` modes, respectively. + * @default 'mixed' + * + * @exampleMarkdown + * ```ts filename="codegen.ts" + * import type { CodegenConfig } from '@graphql-codegen/cli'; + * + * const config: CodegenConfig = { + * // ... + * generates: { + * 'path/to/client.ts': { + * plugins: ['typescript-effect'], + * config: { + * mode: 'client-only' + * }, + * }, + * 'path/to/sdk.ts': { + * plugins: ['typescript', 'typescript-operations', 'typescript-effect'], + * config: { + * mode: 'operations-only', + * relativeClientImportPath: './client.js', + * }, + * }, + * }, + * }; + * export default config; + * ``` + */ + mode?: 'client-only' | 'operations-only' | 'mixed'; + + /** + * @description Specifies the relative import path of the graphql client file. A required config when the mode is set to `operations-only`, ignored in all other cases. + * @default undefined + */ + relativeClientImportPath?: string; +} diff --git a/packages/plugins/typescript/effect/src/index.ts b/packages/plugins/typescript/effect/src/index.ts index 0d3e65d9c..af63753df 100644 --- a/packages/plugins/typescript/effect/src/index.ts +++ b/packages/plugins/typescript/effect/src/index.ts @@ -5,17 +5,17 @@ import { type PluginValidateFn, type Types, } from '@graphql-codegen/plugin-helpers'; -import { - type LoadedFragment, - type RawClientSideBasePluginConfig, -} from '@graphql-codegen/visitor-plugin-common'; +import type { LoadedFragment } from '@graphql-codegen/visitor-plugin-common'; +import type { RawEffectPluginConfig } from './config.js'; import { EffectVisitor } from './visitor.js'; -export const plugin: PluginFunction<{}> = ( +export const plugin: PluginFunction = ( schema: GraphQLSchema, documents: Types.DocumentFile[], - config: RawClientSideBasePluginConfig, + config: RawEffectPluginConfig, ) => { + if (config.mode === 'client-only') return EffectVisitor.clientContent(); + const allAst = concatAST(documents.map(v => v.document)); const allFragments: LoadedFragment[] = [ ...( @@ -46,6 +46,15 @@ export const plugin: PluginFunction<{}> = ( export const validate: PluginValidateFn = async ( schema: GraphQLSchema, documents: Types.DocumentFile[], - config: RawClientSideBasePluginConfig, + config: RawEffectPluginConfig, outputFile: string, -) => {}; +) => { + if ( + config.mode === 'operations-only' && + (!config.relativeClientImportPath || config.relativeClientImportPath.length === 0) + ) { + throw new Error( + `Plugin "typescript-effect" requires the "relativeClientImportPath" configuration option to be a non-empty string when "mode" is set to "operations-only"!`, + ); + } +}; diff --git a/packages/plugins/typescript/effect/src/visitor.ts b/packages/plugins/typescript/effect/src/visitor.ts index c0de826f5..81d5bffa8 100644 --- a/packages/plugins/typescript/effect/src/visitor.ts +++ b/packages/plugins/typescript/effect/src/visitor.ts @@ -4,11 +4,21 @@ import { type ClientSideBasePluginConfig, ClientSideBaseVisitor, DocumentMode, + getConfigValue, LoadedFragment, - type RawClientSideBasePluginConfig, } from '@graphql-codegen/visitor-plugin-common'; +import type { RawEffectPluginConfig } from './config.js'; -export interface EffectPluginConfig extends ClientSideBasePluginConfig {} +export type EffectPluginConfig = ClientSideBasePluginConfig & + ( + | { + mode?: 'client-only' | 'mixed'; + } + | { + mode: 'operations-only'; + relativeClientImportPath: string; + } + ); const clientCode = `export type GraphQLSuccessResponse = Pick< Http.response.ClientResponse, @@ -74,23 +84,21 @@ export class GraphQLClient extends Context.Tag('GraphQLClient')< } }`; -const additionalStaticContent = (documentMode: DocumentMode) => ` +const additionalStaticContent = (config: EffectPluginConfig) => ` export type GraphQLOperationOptions = { preferredOpName?: string; }; type GraphQLOperationArgs = { - document: ${documentMode === DocumentMode.string ? 'string' : 'DocumentNode'}; + document: ${config.documentMode === DocumentMode.string ? 'string' : 'DocumentNode'}; fallbackOperationName: string; }; - -${clientCode} - +${config.mode === 'operations-only' ? '' : `\n${clientCode}\n`} const makeGraphQLOperation = ({ document, fallbackOperationName }: GraphQLOperationArgs) => (variables: Vars, opts?: GraphQLOperationOptions) => { const operationName = opts?.preferredOpName ?? fallbackOperationName; - const query = ${documentMode === DocumentMode.string ? 'document' : 'print(document)'}; + const query = ${config.documentMode === DocumentMode.string ? 'document' : 'print(document)'}; return Effect.flatMap(GraphQLClient, client => Http.request.post('').pipe( @@ -107,7 +115,7 @@ const makeGraphQLOperation = `; export class EffectVisitor extends ClientSideBaseVisitor< - RawClientSideBasePluginConfig, + RawEffectPluginConfig, EffectPluginConfig > { private _externalImportPrefix: string; @@ -122,9 +130,12 @@ export class EffectVisitor extends ClientSideBaseVisitor< constructor( schema: GraphQLSchema, fragments: LoadedFragment[], - rawConfig: RawClientSideBasePluginConfig, + rawConfig: RawEffectPluginConfig, ) { - super(schema, fragments, rawConfig, {}); + super(schema, fragments, rawConfig, { + mode: getConfigValue(rawConfig.mode, 'mixed'), + relativeClientImportPath: getConfigValue(rawConfig.relativeClientImportPath, undefined), + }); autoBind(this); @@ -141,31 +152,61 @@ export class EffectVisitor extends ClientSideBaseVisitor< `import ${type === 'type' ? 'type ' : ''}* as ${namespace} from '${from}';`; [ - createNamedImport( - [ - ['Context', 'value'], - ['Data', 'value'], - ['Effect', 'value'], - ['Layer', 'value'], - ], - 'effect', - ), - createNamedImport( - [ - ['DocumentNode', 'type'], - ['ExecutionResult', 'type'], - ['print', 'value'], - ], - 'graphql', - ), + this.config.mode === 'operations-only' + ? createNamedImport([['Effect', 'value']], 'effect') + : createNamedImport( + [ + ['Context', 'value'], + ['Data', 'value'], + ['Effect', 'value'], + ['Layer', 'value'], + ], + 'effect', + ), + this.config.mode === 'operations-only' + ? createNamedImport( + [ + ['DocumentNode', 'type'], + ['print', 'value'], + ], + 'graphql', + ) + : createNamedImport( + [ + ['DocumentNode', 'type'], + ['ExecutionResult', 'type'], + ['print', 'value'], + ], + 'graphql', + ), createNamesaceImport('Http', '@effect/platform/HttpClient'), - ].forEach(_ => this._additionalImports.push(_)); + this.config.mode === 'operations-only' + ? createNamedImport( + [ + ['GraphQLClient', 'value'], + ['GraphQLSuccessResponse', 'type'], + ], + this.config.relativeClientImportPath, + ) + : [], + ] + .flat() + .forEach(_ => this._additionalImports.push(_)); this._externalImportPrefix = this.config.importOperationTypesFrom ? `${this.config.importOperationTypesFrom}.` : ''; } + static clientContent(): string { + return `import { Context, Data, Effect, Layer } from 'effect'; +import type { ExecutionResult } from 'graphql'; +import * as Http from '@effect/platform/HttpClient'; + +${clientCode} +`; + } + public OperationDefinition(node: OperationDefinitionNode) { const operationName = node.name?.value; @@ -210,6 +251,13 @@ export class EffectVisitor extends ClientSideBaseVisitor< } public get sdkContent(): string { + if (this.config.mode === 'client-only') { + // absurd code path + throw new Error( + `Plugin "typescript-effect": unexpected call to "sdkContent". Please, report this issue in https://github.com/dotansimha/graphql-code-generator-community.`, + ); + } + const allPossibleOperations = this._operationsToInclude.map( ({ node, documentVariableName, operationResultType, operationVariablesTypes }) => { const operationName = node.name.value; @@ -221,8 +269,6 @@ export class EffectVisitor extends ClientSideBaseVisitor< }, ); - return `${additionalStaticContent(this.config.documentMode)}\n${allPossibleOperations.join( - '\n', - )}\n`; + return `${additionalStaticContent(this.config)}\n${allPossibleOperations.join('\n')}\n`; } } diff --git a/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap b/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap index 0ba365c92..09ead3f3b 100644 --- a/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap +++ b/packages/plugins/typescript/effect/tests/__snapshots__/effect.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`effect sdk Should generate the correct content 1`] = ` +exports[`effect sdk with (default) mode:mixed configuration Should generate the correct content 1`] = ` "export type Maybe = T | null; export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; @@ -375,7 +375,7 @@ async function test() { " `; -exports[`effect sdk Should generate the correct content with documentMode=string 1`] = ` +exports[`effect sdk with (default) mode:mixed configuration Should generate the correct content with documentMode=string 1`] = ` "export type Maybe = T | null; export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; @@ -749,7 +749,7 @@ async function test() { " `; -exports[`effect sdk Should support useTypeImports 1`] = ` +exports[`effect sdk with (default) mode:mixed configuration Should support useTypeImports 1`] = ` "export type Maybe = T | null; export type InputMaybe = Maybe; export type Exact = { [K in keyof T]: T[K] }; @@ -1123,3 +1123,937 @@ async function test() { } " `; + +exports[`effect sdk with mode:client-only configuration Should generate the correct content 1`] = ` +"import { Context, Data, Effect, Layer } from 'effect'; +import type { ExecutionResult } from 'graphql'; +import * as Http from '@effect/platform/HttpClient'; + +export type GraphQLSuccessResponse = Pick< + Http.response.ClientResponse, + 'status' | 'headers' +> & { + readonly body: ExecutionResult & { readonly data: A }; +}; + +export type GraphQLErrorResponse = Pick & { + readonly body: Pick; +}; + +export class MissingDataGraphQLResponseError extends Data.TaggedError( + 'MissingDataGraphQLResponseError', +) {} + +const headers = { + // https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md#legacy-watershed + Accept: 'application/graphql-response+json; charset=utf-8, application/json; charset=utf-8', + 'Content-Type': 'application/json', +}; + +export class GraphQLClient extends Context.Tag('GraphQLClient')< + GraphQLClient, + Http.client.Client< + never, + Http.error.HttpClientError | MissingDataGraphQLResponseError, + GraphQLSuccessResponse + > +>() { + static fromDefaultClient(client: Http.client.Client.Default): Layer.Layer { + return Layer.succeed( + GraphQLClient, + client.pipe( + Http.client.mapRequest(Http.request.setHeaders(headers)), + Http.client.filterStatusOk, + Http.client.mapEffectScoped(res => + Effect.flatMap(res.json, _ => { + const body = _ as ExecutionResult; + return body.data + ? Effect.succeed({ ...res, body: { ...body, data: body.data } }) + : Effect.fail(new MissingDataGraphQLResponseError({ ...res, body })); + }), + ), + ), + ); + } + + static Live: Layer.Layer = Layer.unwrapEffect( + Effect.map(Http.client.Client, GraphQLClient.fromDefaultClient), + ); + + static fromEndpoint( + endpoint: string, + ): Layer.Layer { + return Layer.unwrapEffect( + Effect.map(Http.client.Client, client => + GraphQLClient.fromDefaultClient( + Http.client.mapRequest(client, Http.request.prependUrl(endpoint)), + ), + ), + ); + } +} +" +`; + +exports[`effect sdk with mode:operations-only configuration Should generate the correct content 1`] = ` +"export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +import { Effect } from 'effect'; +import { DocumentNode, print } from 'graphql'; +import * as Http from '@effect/platform/HttpClient'; +import { GraphQLClient, GraphQLSuccessResponse } from './client.js'; +import gql from 'graphql-tag'; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; +}; + +export type Query = { + __typename?: 'Query'; + /** A feed of repository submissions */ + feed?: Maybe>>; + /** A single entry */ + entry?: Maybe; + /** Return the currently logged in user, or null if nobody is logged in */ + currentUser?: Maybe; +}; + + +export type QueryFeedArgs = { + type: FeedType; + offset?: InputMaybe; + limit?: InputMaybe; +}; + + +export type QueryEntryArgs = { + repoFullName: Scalars['String']; +}; + +/** A list of options for the sort order of the feed */ +export enum FeedType { + /** Sort by a combination of freshness and score, using Reddit's algorithm */ + Hot = 'HOT', + /** Newest entries first */ + New = 'NEW', + /** Highest score entries first */ + Top = 'TOP' +} + +/** Information about a GitHub repository submitted to GitHunt */ +export type Entry = { + __typename?: 'Entry'; + /** Information about the repository from GitHub */ + repository: Repository; + /** The GitHub user who submitted this entry */ + postedBy: User; + /** A timestamp of when the entry was submitted */ + createdAt: Scalars['Float']; + /** The score of this repository, upvotes - downvotes */ + score: Scalars['Int']; + /** The hot score of this repository */ + hotScore: Scalars['Float']; + /** Comments posted about this repository */ + comments: Array>; + /** The number of comments posted about this repository */ + commentCount: Scalars['Int']; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** XXX to be changed */ + vote: Vote; +}; + + +/** Information about a GitHub repository submitted to GitHunt */ +export type EntryCommentsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; +}; + +/** + * A repository object from the GitHub API. This uses the exact field names returned by the + * GitHub API for simplicity, even though the convention for GraphQL is usually to camel case. + */ +export type Repository = { + __typename?: 'Repository'; + /** Just the name of the repository, e.g. GitHunt-API */ + name: Scalars['String']; + /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */ + full_name: Scalars['String']; + /** The description of the repository */ + description?: Maybe; + /** The link to the repository on GitHub */ + html_url: Scalars['String']; + /** The number of people who have starred this repository on GitHub */ + stargazers_count: Scalars['Int']; + /** The number of open issues on this repository on GitHub */ + open_issues_count?: Maybe; + /** The owner of this repository on GitHub, e.g. apollostack */ + owner?: Maybe; +}; + +/** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ +export type User = { + __typename?: 'User'; + /** The name of the user, e.g. apollostack */ + login: Scalars['String']; + /** The URL to a directly embeddable image for this user's avatar */ + avatar_url: Scalars['String']; + /** The URL of this user's GitHub page */ + html_url: Scalars['String']; +}; + +/** A comment about an entry, submitted by a user */ +export type Comment = { + __typename?: 'Comment'; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** The GitHub user who posted the comment */ + postedBy: User; + /** A timestamp of when the comment was posted */ + createdAt: Scalars['Float']; + /** The text of the comment */ + content: Scalars['String']; + /** The repository which this comment is about */ + repoName: Scalars['String']; +}; + +/** XXX to be removed */ +export type Vote = { + __typename?: 'Vote'; + vote_value: Scalars['Int']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + /** Submit a new repository, returns the new submission */ + submitRepository?: Maybe; + /** Vote on a repository submission, returns the submission that was voted on */ + vote?: Maybe; + /** Comment on a repository, returns the new comment */ + submitComment?: Maybe; +}; + + +export type MutationSubmitRepositoryArgs = { + repoFullName: Scalars['String']; +}; + + +export type MutationVoteArgs = { + repoFullName: Scalars['String']; + type: VoteType; +}; + + +export type MutationSubmitCommentArgs = { + repoFullName: Scalars['String']; + commentContent: Scalars['String']; +}; + +/** The type of vote to record, when submitting a vote */ +export enum VoteType { + Up = 'UP', + Down = 'DOWN', + Cancel = 'CANCEL' +} + +export type Subscription = { + __typename?: 'Subscription'; + /** Subscription fires on every comment added */ + commentAdded?: Maybe; +}; + + +export type SubscriptionCommentAddedArgs = { + repoFullName: Scalars['String']; +}; +export type FeedQueryVariables = Exact<{ [key: string]: never; }>; + + +export type FeedQuery = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number, commentCount: number, repository: { __typename?: 'Repository', owner?: { __typename?: 'User', avatar_url: string } | null } } | null> | null }; + +export type Feed2QueryVariables = Exact<{ + v: Scalars['String']; +}>; + + +export type Feed2Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed3QueryVariables = Exact<{ + v?: InputMaybe; +}>; + + +export type Feed3Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed4QueryVariables = Exact<{ + v?: Scalars['String']; +}>; + + +export type Feed4Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export const FeedDocument = gql\` + query feed { + feed { + id + commentCount + repository { + owner { + avatar_url + } + } + } +} + \`; +export const Feed2Document = gql\` + query feed2($v: String!) { + feed { + id + } +} + \`; +export const Feed3Document = gql\` + query feed3($v: String) { + feed { + id + } +} + \`; +export const Feed4Document = gql\` + query feed4($v: String! = "TEST") { + feed { + id + } +} + \`; + +export type GraphQLOperationOptions = { + preferredOpName?: string; +}; + +type GraphQLOperationArgs = { + document: DocumentNode; + fallbackOperationName: string; +}; + +const makeGraphQLOperation = + ({ document, fallbackOperationName }: GraphQLOperationArgs) => + (variables: Vars, opts?: GraphQLOperationOptions) => { + const operationName = opts?.preferredOpName ?? fallbackOperationName; + const query = print(document); + + return Effect.flatMap(GraphQLClient, client => + Http.request.post('').pipe( + Http.request.jsonBody({ + query, + operationName, + variables, + }), + Effect.flatMap(client), + Effect.map(_ => _ as GraphQLSuccessResponse), + ), + ); + }; + +export const feed = makeGraphQLOperation({ + document: FeedDocument, + fallbackOperationName: 'feed', +}); +export const feed2 = makeGraphQLOperation({ + document: Feed2Document, + fallbackOperationName: 'feed2', +}); +export const feed3 = makeGraphQLOperation({ + document: Feed3Document, + fallbackOperationName: 'feed3', +}); +export const feed4 = makeGraphQLOperation({ + document: Feed4Document, + fallbackOperationName: 'feed4', +}); +" +`; + +exports[`effect sdk with mode:operations-only configuration Should generate the correct content with documentMode=string 1`] = ` +"export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +import { Effect } from 'effect'; +import { DocumentNode, print } from 'graphql'; +import * as Http from '@effect/platform/HttpClient'; +import { GraphQLClient, GraphQLSuccessResponse } from './client.js'; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; +}; + +export type Query = { + __typename?: 'Query'; + /** A feed of repository submissions */ + feed?: Maybe>>; + /** A single entry */ + entry?: Maybe; + /** Return the currently logged in user, or null if nobody is logged in */ + currentUser?: Maybe; +}; + + +export type QueryFeedArgs = { + type: FeedType; + offset?: InputMaybe; + limit?: InputMaybe; +}; + + +export type QueryEntryArgs = { + repoFullName: Scalars['String']; +}; + +/** A list of options for the sort order of the feed */ +export enum FeedType { + /** Sort by a combination of freshness and score, using Reddit's algorithm */ + Hot = 'HOT', + /** Newest entries first */ + New = 'NEW', + /** Highest score entries first */ + Top = 'TOP' +} + +/** Information about a GitHub repository submitted to GitHunt */ +export type Entry = { + __typename?: 'Entry'; + /** Information about the repository from GitHub */ + repository: Repository; + /** The GitHub user who submitted this entry */ + postedBy: User; + /** A timestamp of when the entry was submitted */ + createdAt: Scalars['Float']; + /** The score of this repository, upvotes - downvotes */ + score: Scalars['Int']; + /** The hot score of this repository */ + hotScore: Scalars['Float']; + /** Comments posted about this repository */ + comments: Array>; + /** The number of comments posted about this repository */ + commentCount: Scalars['Int']; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** XXX to be changed */ + vote: Vote; +}; + + +/** Information about a GitHub repository submitted to GitHunt */ +export type EntryCommentsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; +}; + +/** + * A repository object from the GitHub API. This uses the exact field names returned by the + * GitHub API for simplicity, even though the convention for GraphQL is usually to camel case. + */ +export type Repository = { + __typename?: 'Repository'; + /** Just the name of the repository, e.g. GitHunt-API */ + name: Scalars['String']; + /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */ + full_name: Scalars['String']; + /** The description of the repository */ + description?: Maybe; + /** The link to the repository on GitHub */ + html_url: Scalars['String']; + /** The number of people who have starred this repository on GitHub */ + stargazers_count: Scalars['Int']; + /** The number of open issues on this repository on GitHub */ + open_issues_count?: Maybe; + /** The owner of this repository on GitHub, e.g. apollostack */ + owner?: Maybe; +}; + +/** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ +export type User = { + __typename?: 'User'; + /** The name of the user, e.g. apollostack */ + login: Scalars['String']; + /** The URL to a directly embeddable image for this user's avatar */ + avatar_url: Scalars['String']; + /** The URL of this user's GitHub page */ + html_url: Scalars['String']; +}; + +/** A comment about an entry, submitted by a user */ +export type Comment = { + __typename?: 'Comment'; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** The GitHub user who posted the comment */ + postedBy: User; + /** A timestamp of when the comment was posted */ + createdAt: Scalars['Float']; + /** The text of the comment */ + content: Scalars['String']; + /** The repository which this comment is about */ + repoName: Scalars['String']; +}; + +/** XXX to be removed */ +export type Vote = { + __typename?: 'Vote'; + vote_value: Scalars['Int']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + /** Submit a new repository, returns the new submission */ + submitRepository?: Maybe; + /** Vote on a repository submission, returns the submission that was voted on */ + vote?: Maybe; + /** Comment on a repository, returns the new comment */ + submitComment?: Maybe; +}; + + +export type MutationSubmitRepositoryArgs = { + repoFullName: Scalars['String']; +}; + + +export type MutationVoteArgs = { + repoFullName: Scalars['String']; + type: VoteType; +}; + + +export type MutationSubmitCommentArgs = { + repoFullName: Scalars['String']; + commentContent: Scalars['String']; +}; + +/** The type of vote to record, when submitting a vote */ +export enum VoteType { + Up = 'UP', + Down = 'DOWN', + Cancel = 'CANCEL' +} + +export type Subscription = { + __typename?: 'Subscription'; + /** Subscription fires on every comment added */ + commentAdded?: Maybe; +}; + + +export type SubscriptionCommentAddedArgs = { + repoFullName: Scalars['String']; +}; +export type FeedQueryVariables = Exact<{ [key: string]: never; }>; + + +export type FeedQuery = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number, commentCount: number, repository: { __typename?: 'Repository', owner?: { __typename?: 'User', avatar_url: string } | null } } | null> | null }; + +export type Feed2QueryVariables = Exact<{ + v: Scalars['String']; +}>; + + +export type Feed2Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed3QueryVariables = Exact<{ + v?: InputMaybe; +}>; + + +export type Feed3Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed4QueryVariables = Exact<{ + v?: Scalars['String']; +}>; + + +export type Feed4Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export const FeedDocument = \` + query feed { + feed { + id + commentCount + repository { + owner { + avatar_url + } + } + } +} + \`; +export const Feed2Document = \` + query feed2($v: String!) { + feed { + id + } +} + \`; +export const Feed3Document = \` + query feed3($v: String) { + feed { + id + } +} + \`; +export const Feed4Document = \` + query feed4($v: String! = "TEST") { + feed { + id + } +} + \`; + +export type GraphQLOperationOptions = { + preferredOpName?: string; +}; + +type GraphQLOperationArgs = { + document: string; + fallbackOperationName: string; +}; + +const makeGraphQLOperation = + ({ document, fallbackOperationName }: GraphQLOperationArgs) => + (variables: Vars, opts?: GraphQLOperationOptions) => { + const operationName = opts?.preferredOpName ?? fallbackOperationName; + const query = document; + + return Effect.flatMap(GraphQLClient, client => + Http.request.post('').pipe( + Http.request.jsonBody({ + query, + operationName, + variables, + }), + Effect.flatMap(client), + Effect.map(_ => _ as GraphQLSuccessResponse), + ), + ); + }; + +export const feed = makeGraphQLOperation({ + document: FeedDocument, + fallbackOperationName: 'feed', +}); +export const feed2 = makeGraphQLOperation({ + document: Feed2Document, + fallbackOperationName: 'feed2', +}); +export const feed3 = makeGraphQLOperation({ + document: Feed3Document, + fallbackOperationName: 'feed3', +}); +export const feed4 = makeGraphQLOperation({ + document: Feed4Document, + fallbackOperationName: 'feed4', +}); +" +`; + +exports[`effect sdk with mode:operations-only configuration Should support useTypeImports 1`] = ` +"export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +import { Effect } from 'effect'; +import { type DocumentNode, print } from 'graphql'; +import * as Http from '@effect/platform/HttpClient'; +import { GraphQLClient, type GraphQLSuccessResponse } from './client.js'; +import gql from 'graphql-tag'; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; +}; + +export type Query = { + __typename?: 'Query'; + /** A feed of repository submissions */ + feed?: Maybe>>; + /** A single entry */ + entry?: Maybe; + /** Return the currently logged in user, or null if nobody is logged in */ + currentUser?: Maybe; +}; + + +export type QueryFeedArgs = { + type: FeedType; + offset?: InputMaybe; + limit?: InputMaybe; +}; + + +export type QueryEntryArgs = { + repoFullName: Scalars['String']; +}; + +/** A list of options for the sort order of the feed */ +export enum FeedType { + /** Sort by a combination of freshness and score, using Reddit's algorithm */ + Hot = 'HOT', + /** Newest entries first */ + New = 'NEW', + /** Highest score entries first */ + Top = 'TOP' +} + +/** Information about a GitHub repository submitted to GitHunt */ +export type Entry = { + __typename?: 'Entry'; + /** Information about the repository from GitHub */ + repository: Repository; + /** The GitHub user who submitted this entry */ + postedBy: User; + /** A timestamp of when the entry was submitted */ + createdAt: Scalars['Float']; + /** The score of this repository, upvotes - downvotes */ + score: Scalars['Int']; + /** The hot score of this repository */ + hotScore: Scalars['Float']; + /** Comments posted about this repository */ + comments: Array>; + /** The number of comments posted about this repository */ + commentCount: Scalars['Int']; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** XXX to be changed */ + vote: Vote; +}; + + +/** Information about a GitHub repository submitted to GitHunt */ +export type EntryCommentsArgs = { + limit?: InputMaybe; + offset?: InputMaybe; +}; + +/** + * A repository object from the GitHub API. This uses the exact field names returned by the + * GitHub API for simplicity, even though the convention for GraphQL is usually to camel case. + */ +export type Repository = { + __typename?: 'Repository'; + /** Just the name of the repository, e.g. GitHunt-API */ + name: Scalars['String']; + /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */ + full_name: Scalars['String']; + /** The description of the repository */ + description?: Maybe; + /** The link to the repository on GitHub */ + html_url: Scalars['String']; + /** The number of people who have starred this repository on GitHub */ + stargazers_count: Scalars['Int']; + /** The number of open issues on this repository on GitHub */ + open_issues_count?: Maybe; + /** The owner of this repository on GitHub, e.g. apollostack */ + owner?: Maybe; +}; + +/** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ +export type User = { + __typename?: 'User'; + /** The name of the user, e.g. apollostack */ + login: Scalars['String']; + /** The URL to a directly embeddable image for this user's avatar */ + avatar_url: Scalars['String']; + /** The URL of this user's GitHub page */ + html_url: Scalars['String']; +}; + +/** A comment about an entry, submitted by a user */ +export type Comment = { + __typename?: 'Comment'; + /** The SQL ID of this entry */ + id: Scalars['Int']; + /** The GitHub user who posted the comment */ + postedBy: User; + /** A timestamp of when the comment was posted */ + createdAt: Scalars['Float']; + /** The text of the comment */ + content: Scalars['String']; + /** The repository which this comment is about */ + repoName: Scalars['String']; +}; + +/** XXX to be removed */ +export type Vote = { + __typename?: 'Vote'; + vote_value: Scalars['Int']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + /** Submit a new repository, returns the new submission */ + submitRepository?: Maybe; + /** Vote on a repository submission, returns the submission that was voted on */ + vote?: Maybe; + /** Comment on a repository, returns the new comment */ + submitComment?: Maybe; +}; + + +export type MutationSubmitRepositoryArgs = { + repoFullName: Scalars['String']; +}; + + +export type MutationVoteArgs = { + repoFullName: Scalars['String']; + type: VoteType; +}; + + +export type MutationSubmitCommentArgs = { + repoFullName: Scalars['String']; + commentContent: Scalars['String']; +}; + +/** The type of vote to record, when submitting a vote */ +export enum VoteType { + Up = 'UP', + Down = 'DOWN', + Cancel = 'CANCEL' +} + +export type Subscription = { + __typename?: 'Subscription'; + /** Subscription fires on every comment added */ + commentAdded?: Maybe; +}; + + +export type SubscriptionCommentAddedArgs = { + repoFullName: Scalars['String']; +}; +export type FeedQueryVariables = Exact<{ [key: string]: never; }>; + + +export type FeedQuery = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number, commentCount: number, repository: { __typename?: 'Repository', owner?: { __typename?: 'User', avatar_url: string } | null } } | null> | null }; + +export type Feed2QueryVariables = Exact<{ + v: Scalars['String']; +}>; + + +export type Feed2Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed3QueryVariables = Exact<{ + v?: InputMaybe; +}>; + + +export type Feed3Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export type Feed4QueryVariables = Exact<{ + v?: Scalars['String']; +}>; + + +export type Feed4Query = { __typename?: 'Query', feed?: Array<{ __typename?: 'Entry', id: number } | null> | null }; + +export const FeedDocument = gql\` + query feed { + feed { + id + commentCount + repository { + owner { + avatar_url + } + } + } +} + \`; +export const Feed2Document = gql\` + query feed2($v: String!) { + feed { + id + } +} + \`; +export const Feed3Document = gql\` + query feed3($v: String) { + feed { + id + } +} + \`; +export const Feed4Document = gql\` + query feed4($v: String! = "TEST") { + feed { + id + } +} + \`; + +export type GraphQLOperationOptions = { + preferredOpName?: string; +}; + +type GraphQLOperationArgs = { + document: DocumentNode; + fallbackOperationName: string; +}; + +const makeGraphQLOperation = + ({ document, fallbackOperationName }: GraphQLOperationArgs) => + (variables: Vars, opts?: GraphQLOperationOptions) => { + const operationName = opts?.preferredOpName ?? fallbackOperationName; + const query = print(document); + + return Effect.flatMap(GraphQLClient, client => + Http.request.post('').pipe( + Http.request.jsonBody({ + query, + operationName, + variables, + }), + Effect.flatMap(client), + Effect.map(_ => _ as GraphQLSuccessResponse), + ), + ); + }; + +export const feed = makeGraphQLOperation({ + document: FeedDocument, + fallbackOperationName: 'feed', +}); +export const feed2 = makeGraphQLOperation({ + document: Feed2Document, + fallbackOperationName: 'feed2', +}); +export const feed3 = makeGraphQLOperation({ + document: Feed3Document, + fallbackOperationName: 'feed3', +}); +export const feed4 = makeGraphQLOperation({ + document: Feed4Document, + fallbackOperationName: 'feed4', +}); +" +`; diff --git a/packages/plugins/typescript/effect/tests/effect.spec.ts b/packages/plugins/typescript/effect/tests/effect.spec.ts index 86207dabd..ee7e7723d 100644 --- a/packages/plugins/typescript/effect/tests/effect.spec.ts +++ b/packages/plugins/typescript/effect/tests/effect.spec.ts @@ -6,10 +6,8 @@ import { plugin as tsDocumentsPlugin, type TypeScriptDocumentsPluginConfig, } from '@graphql-codegen/typescript-operations'; -import { - DocumentMode, - type RawClientSideBasePluginConfig, -} from '@graphql-codegen/visitor-plugin-common'; +import { DocumentMode } from '@graphql-codegen/visitor-plugin-common'; +import { RawEffectPluginConfig } from '../src/config.js'; import { plugin } from '../src/index.js'; describe('effect', () => { @@ -48,9 +46,7 @@ describe('effect', () => { const validate = async ( content: Types.PluginOutput, - config: TypeScriptPluginConfig & - TypeScriptDocumentsPluginConfig & - RawClientSideBasePluginConfig, + config: TypeScriptPluginConfig & TypeScriptDocumentsPluginConfig & RawEffectPluginConfig, docs: Types.DocumentFile[], pluginSchema: GraphQLSchema, usage: string, @@ -68,7 +64,9 @@ describe('effect', () => { }; describe('sdk', () => { - const usage = ` + describe('with (default) mode:mixed configuration', () => { + const baseConfig = {}; + const usage = ` import { NodeHttpClient } from '@effect/platform-node'; import { flow } from 'effect'; @@ -93,55 +91,132 @@ async function test() { } } `; - it('Should generate the correct content', async () => { - const config = {}; - const docs = [{ location: '', document: basicDoc }]; - const result = (await plugin(schema, docs, config, { - outputFile: 'graphql.ts', - })) as Types.ComplexPluginOutput; + it('Should generate the correct content', async () => { + const config = baseConfig; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + + const output = await validate(result, config, docs, schema, usage); + + expect(result.prepend).toContain("import { Context, Data, Effect, Layer } from 'effect';"); + expect(result.prepend).toContain( + "import { DocumentNode, ExecutionResult, print } from 'graphql';", + ); + expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); + expect(output).toMatchSnapshot(); + }); - const output = await validate(result, config, docs, schema, usage); + it('Should generate the correct content with documentMode=string', async () => { + const config = { ...baseConfig, documentMode: DocumentMode.string }; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; - expect(result.prepend).toContain("import { Context, Data, Effect, Layer } from 'effect';"); - expect(result.prepend).toContain( - "import { DocumentNode, ExecutionResult, print } from 'graphql';", - ); - expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); - expect(output).toMatchSnapshot(); + const output = await validate(result, config, docs, schema, usage); + + expect(result.prepend).toContain("import { Context, Data, Effect, Layer } from 'effect';"); + expect(result.prepend).toContain( + "import { DocumentNode, ExecutionResult, print } from 'graphql';", + ); + expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); + expect(output).toMatchSnapshot(); + }); + + it('Should support useTypeImports', async () => { + const config = { ...baseConfig, useTypeImports: true }; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + + const output = await validate(result, config, docs, schema, usage); + + expect(result.prepend).toContain("import { Context, Data, Effect, Layer } from 'effect';"); + expect(result.prepend).toContain( + "import { type DocumentNode, type ExecutionResult, print } from 'graphql';", + ); + expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); + expect(output).toMatchSnapshot(); + }); }); - it('Should generate the correct content with documentMode=string', async () => { - const config = { documentMode: DocumentMode.string }; - const docs = [{ location: '', document: basicDoc }]; - const result = (await plugin(schema, docs, config, { - outputFile: 'graphql.ts', - })) as Types.ComplexPluginOutput; + describe('with mode:operations-only configuration', () => { + const baseConfig = { + mode: 'operations-only', + relativeClientImportPath: './client.js', + } as const; + const usage = ''; + + it('Should generate the correct content', async () => { + const config = baseConfig; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + + const output = await validate(result, config, docs, schema, usage); + + expect(result.prepend).toContain("import { Effect } from 'effect';"); + expect(result.prepend).toContain("import { DocumentNode, print } from 'graphql';"); + expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); + expect(result.prepend).toContain( + "import { GraphQLClient, GraphQLSuccessResponse } from './client.js';", + ); + expect(output).toMatchSnapshot(); + }); + + it('Should generate the correct content with documentMode=string', async () => { + const config = { ...baseConfig, documentMode: DocumentMode.string }; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + + const output = await validate(result, config, docs, schema, usage); - const output = await validate(result, config, docs, schema, usage); + expect(result.prepend).toContain("import { Effect } from 'effect';"); + expect(result.prepend).toContain("import { DocumentNode, print } from 'graphql';"); + expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); + expect(result.prepend).toContain( + "import { GraphQLClient, GraphQLSuccessResponse } from './client.js';", + ); + expect(output).toMatchSnapshot(); + }); - expect(result.prepend).toContain("import { Context, Data, Effect, Layer } from 'effect';"); - expect(result.prepend).toContain( - "import { DocumentNode, ExecutionResult, print } from 'graphql';", - ); - expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); - expect(output).toMatchSnapshot(); + it('Should support useTypeImports', async () => { + const config = { ...baseConfig, useTypeImports: true }; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql.ts', + })) as Types.ComplexPluginOutput; + + const output = await validate(result, config, docs, schema, usage); + + expect(result.prepend).toContain("import { Effect } from 'effect';"); + expect(result.prepend).toContain("import { type DocumentNode, print } from 'graphql';"); + expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); + expect(result.prepend).toContain( + "import { GraphQLClient, type GraphQLSuccessResponse } from './client.js';", + ); + expect(output).toMatchSnapshot(); + }); }); - it('Should support useTypeImports', async () => { - const config = { useTypeImports: true }; - const docs = [{ location: '', document: basicDoc }]; - const result = (await plugin(schema, docs, config, { - outputFile: 'graphql.ts', - })) as Types.ComplexPluginOutput; + describe('with mode:client-only configuration', () => { + const baseConfig = { mode: 'client-only' } as const; - const output = await validate(result, config, docs, schema, usage); + it('Should generate the correct content', async () => { + const config = baseConfig; + const docs = [{ location: '', document: basicDoc }]; + const result = (await plugin(schema, docs, config, { + outputFile: 'graphql-client.ts', + })) as Types.ComplexPluginOutput; - expect(result.prepend).toContain("import { Context, Data, Effect, Layer } from 'effect';"); - expect(result.prepend).toContain( - "import { type DocumentNode, type ExecutionResult, print } from 'graphql';", - ); - expect(result.prepend).toContain("import * as Http from '@effect/platform/HttpClient';"); - expect(output).toMatchSnapshot(); + expect(result).toMatchSnapshot(); + }); }); it('Should log a warning when an operation is anonymous', async () => { diff --git a/packages/plugins/typescript/effect/tests/integration.spec.ts b/packages/plugins/typescript/effect/tests/integration.spec.ts index 787ac8ca2..3eec20854 100644 --- a/packages/plugins/typescript/effect/tests/integration.spec.ts +++ b/packages/plugins/typescript/effect/tests/integration.spec.ts @@ -8,6 +8,8 @@ import * as TypeScriptOperationsPlugin from '@graphql-codegen/typescript-operati import { makeExecutableSchema } from '@graphql-tools/schema'; import * as EffectPlugin from '../src/index.js'; +const clientFileName = 'effect-client.ts'; +const clientFilePath = path.join(__dirname, './test-files', clientFileName); const sdkFileName = 'effect-sdk.ts'; const sdkFilePath = path.join(__dirname, './test-files', sdkFileName); const typeDefs = parse(/* GraphQL */ ` @@ -28,49 +30,78 @@ const exampleQuery = /* GraphQL */ ` add(x: $x, y: $y) } `; -const mockServer = mockGraphQLServer({ - schema, - host: 'http://localhost:4000', - path: '/graphql', -}); +const baseCodegenConfig = { + schema: typeDefs, + schemaAst: schema, + documents: [ + { + document: parse(exampleQuery), + rawSDL: exampleQuery, + }, + ], + filename: 'dummy-filename', + pluginMap: { + typescript: TypeScriptPlugin, + 'typescript-operations': TypeScriptOperationsPlugin, + effect: EffectPlugin, + }, + config: {}, +}; + +const testAdd = async (testFilePath: string) => { + const server = mockGraphQLServer({ + schema, + host: 'http://localhost:4000', + path: '/graphql', + }); + const { exampleQueries } = require(testFilePath); + const { add } = exampleQueries('http://localhost:4000/graphql'); + const { body } = await add(2, 3); + expect(body.data.add).toBe(5); + server.done(); +}; describe('Effect Integration', () => { - afterAll(() => mockServer.done()); + describe('with "mixed" mode configuration', () => { + it('should send requests correctly', async () => { + const sdkCodeString = await codegen({ + ...baseCodegenConfig, + plugins: [ + { typescript: {} }, + { 'typescript-operations': {} }, + { effect: { mode: 'mixed' } }, + ], + }); + await fs.writeFile(sdkFilePath, sdkCodeString, 'utf-8'); + await testAdd('./test-files/run-example-query-mixed'); + await fs.remove(sdkFilePath); + }); + }); - it('should send requests correctly', async () => { - const sdkCodeString = await codegen({ - schema: typeDefs, - schemaAst: schema, - documents: [ - { - document: parse(exampleQuery), - rawSDL: exampleQuery, - }, - ], - filename: sdkFileName, - pluginMap: { - typescript: TypeScriptPlugin, - 'typescript-operations': TypeScriptOperationsPlugin, - effect: EffectPlugin, - }, - plugins: [ - { - typescript: {}, - }, - { - 'typescript-operations': {}, - }, - { - effect: { mode: 'mixed' }, - }, - ], - config: {}, + describe('with "split" mode configuration', () => { + it('should send requests correctly', async () => { + const clientCodeString = await codegen({ + ...baseCodegenConfig, + plugins: [{ effect: { mode: 'client-only' } }], + }); + await fs.writeFile(clientFilePath, clientCodeString, 'utf-8'); + const sdkCodeString = await codegen({ + ...baseCodegenConfig, + plugins: [ + { typescript: {} }, + { 'typescript-operations': {} }, + { + effect: { + mode: 'operations-only', + relativeClientImportPath: './effect-client.js', + }, + }, + ], + }); + await fs.writeFile(sdkFilePath, sdkCodeString, 'utf-8'); + await testAdd('./test-files/run-example-query-split'); + await fs.remove(clientFilePath); + await fs.remove(sdkFilePath); }); - await fs.writeFile(sdkFilePath, sdkCodeString, 'utf-8'); - const { exampleQueries } = require('./test-files/run-example-query'); - const { add } = exampleQueries('http://localhost:4000/graphql'); - const { body } = await add(2, 3); - expect(body.data.add).toBe(5); - await fs.remove(sdkFilePath); }); }); diff --git a/packages/plugins/typescript/effect/tests/test-files/run-example-query.ts b/packages/plugins/typescript/effect/tests/test-files/run-example-query-mixed.ts similarity index 100% rename from packages/plugins/typescript/effect/tests/test-files/run-example-query.ts rename to packages/plugins/typescript/effect/tests/test-files/run-example-query-mixed.ts diff --git a/packages/plugins/typescript/effect/tests/test-files/run-example-query-split.ts b/packages/plugins/typescript/effect/tests/test-files/run-example-query-split.ts new file mode 100644 index 000000000..62d9159a7 --- /dev/null +++ b/packages/plugins/typescript/effect/tests/test-files/run-example-query-split.ts @@ -0,0 +1,13 @@ +import { Effect } from 'effect'; +import { NodeHttpClient } from '@effect/platform-node'; +import { GraphQLClient } from './effect-client.js'; +import { Add } from './effect-sdk.js'; + +export const exampleQueries = (endpoint: string) => ({ + add: (x: number, y: number) => + Add({ x, y }).pipe( + Effect.provide(GraphQLClient.fromEndpoint(endpoint)), + Effect.provide(NodeHttpClient.layer), + Effect.runPromise, + ), +}); From f374095da8d12843b08648e074a197351e7fa66a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20Ve=C4=8Derek?= Date: Thu, 2 May 2024 23:04:54 +0200 Subject: [PATCH 6/6] fix: remove redundant patch of @urql/instrospection as a fixup of 3416b87833e58f286cfe9ba0807dbee3c274c245 --- patches/@urql+introspection+0.3.2.patch | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 patches/@urql+introspection+0.3.2.patch diff --git a/patches/@urql+introspection+0.3.2.patch b/patches/@urql+introspection+0.3.2.patch deleted file mode 100644 index 2d80048a5..000000000 --- a/patches/@urql+introspection+0.3.2.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/node_modules/@urql/introspection/dist/urql-introspection.mjs b/node_modules/@urql/introspection/dist/urql-introspection.mjs -index f560a86..d732c77 100644 ---- a/node_modules/@urql/introspection/dist/urql-introspection.mjs -+++ b/node_modules/@urql/introspection/dist/urql-introspection.mjs -@@ -1,10 +1,9 @@ --import { buildSchema as e } from "graphql/utilities/buildASTSchema.mjs"; -- --import { execute as n } from "graphql/execution/execute.mjs"; -- --import { parse as a } from "graphql/language/parser.mjs"; -- --import { getIntrospectionQuery as t } from "graphql/utilities/index.mjs"; -+import { -+ buildSchema as e, -+ execute as n, -+ parse as a, -+ getIntrospectionQuery as t, -+} from "graphql"; - - function getIntrospectedSchema(r) { - if ("string" == typeof r) {