diff --git a/.changeset/chilled-elephants-smile.md b/.changeset/chilled-elephants-smile.md new file mode 100644 index 00000000000..8a4654b59c2 --- /dev/null +++ b/.changeset/chilled-elephants-smile.md @@ -0,0 +1,6 @@ +--- +"@fuel-ts/errors": minor +"@fuel-ts/providers": minor +--- + +Reverted GraphQL subscriptions, thus removing `Provider.operations.statusChange`. diff --git a/.eslintrc.js b/.eslintrc.js index b1842ac410e..e30f62a7dae 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -25,12 +25,6 @@ module.exports = { // Disable error on devDependencies importing since this isn't a TS library 'import/no-extraneous-dependencies': ['error', { devDependencies: true }], 'no-await-in-loop': 0, - 'no-restricted-syntax': [ - 'off', - { - selector: 'ForOfStatement', - }, - ], 'prefer-destructuring': 0, 'no-bitwise': 0, 'no-underscore-dangle': 'off', diff --git a/.github/actions/ci-setup/action.yaml b/.github/actions/ci-setup/action.yaml index 964dd336156..a56ce209fcd 100644 --- a/.github/actions/ci-setup/action.yaml +++ b/.github/actions/ci-setup/action.yaml @@ -2,7 +2,7 @@ name: "CI setup" inputs: node-version: description: "Node version" - default: 18.18.0 + default: 18.14.1 pnpm-version: description: "PNPM version" default: 8.6.1 diff --git a/.nvmrc b/.nvmrc index 02c8b485edb..617bcf916bf 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.18.0 +18.14.1 diff --git a/package.json b/package.json index 7226a358968..f27014945f2 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,10 @@ "author": "Fuel Labs (https://fuel.network/)", "private": true, "engines": { - "node": ">= 18.18.0", - "pnpm": ">= 8.6.1" + "node": ">= 18.14.1", + "pnpm": ">= 8.1.1" }, - "packageManager": "pnpm@8.6.1", + "packageManager": "pnpm@8.1.1", "scripts": { "dev": "nodemon --config nodemon.config.json -x 'pnpm build:packages'", "build": "turbo run build", @@ -88,5 +88,10 @@ "tsx": "^3.12.7", "turbo": "^1.8.8", "typescript": "~5.1.6" + }, + "pnpm": { + "overrides": { + "cross-fetch": "4.0.0" + } } } diff --git a/packages/errors/src/error-codes.ts b/packages/errors/src/error-codes.ts index ad3bd051f35..8d574b2aaef 100644 --- a/packages/errors/src/error-codes.ts +++ b/packages/errors/src/error-codes.ts @@ -11,7 +11,7 @@ export enum ErrorCode { TYPE_NOT_FOUND = 'type-not-found', TYPE_NOT_SUPPORTED = 'type-not-supported', INVALID_DECODE_VALUE = 'invalid-decode-value', - JSON_ABI_ERROR = 'json-abi-error', + JSON_ABI_ERROR = 'abi-main-method-missing', TYPE_ID_NOT_FOUND = 'type-id-not-found', BIN_FILE_NOT_FOUND = 'bin-file-not-found', CODER_NOT_FOUND = 'coder-not-found', @@ -87,9 +87,6 @@ export enum ErrorCode { SCRIPT_REVERTED = 'script-reverted', SCRIPT_RETURN_INVALID_TYPE = 'script-return-invalid-type', - // general - FUEL_NODE_ERROR = 'fuel-node-error', - // coder // ... } diff --git a/packages/providers/codegen.json b/packages/providers/codegen.json index aaa56a5f78e..0f48ea80586 100644 --- a/packages/providers/codegen.json +++ b/packages/providers/codegen.json @@ -1,19 +1,13 @@ { "$schema": "https://www.graphql-code-generator.com/config.schema.json", "schema": "./fuel-core-schema.graphql", + "documents": "./src/operations.graphql", "generates": { "./src/__generated__/operations.ts": { - "documents": "./src/operations.graphql", "plugins": [ { "typescript": {} }, - { - "typescript-operations": {} - }, - { - "typescript-generic-sdk": { - "dedupeFragments": true - } - } + { "typescript-operations": {} }, + { "typescript-graphql-request": {} } ], "config": { "scalars": { diff --git a/packages/providers/package.json b/packages/providers/package.json index f8076893515..65fb001f294 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -39,7 +39,6 @@ "graphql": "^16.6.0", "graphql-request": "^5.0.0", "graphql-tag": "^2.12.6", - "graphql-sse": "^2.2.1", "ramda": "^0.29.0", "tai64": "^1.0.0" }, @@ -49,8 +48,8 @@ "@graphql-codegen/typescript": "^2.8.0", "@graphql-codegen/typescript-graphql-request": "^4.5.7", "@graphql-codegen/typescript-operations": "^2.5.5", - "@graphql-codegen/typescript-generic-sdk": "^3.1.0", "@types/ramda": "^0.29.3", - "get-graphql-schema": "^2.1.2" + "get-graphql-schema": "^2.1.2", + "typescript": "^4.8.4" } } diff --git a/packages/providers/src/operations.graphql b/packages/providers/src/operations.graphql index 5e14a6fdeaf..f92f7691c3e 100644 --- a/packages/providers/src/operations.graphql +++ b/packages/providers/src/operations.graphql @@ -4,31 +4,6 @@ # generate `operations.ts` from this file. # Fragments - -fragment transactionStatusFragment on TransactionStatus { - type: __typename - ... on SubmittedStatus { - time - } - ... on SuccessStatus { - block { - id - } - time - programState { - returnType - data - } - } - ... on FailureStatus { - block { - id - } - time - reason - } -} - fragment transactionFragment on Transaction { id rawPayload @@ -37,7 +12,27 @@ fragment transactionFragment on Transaction { ...receiptFragment } status { - ...transactionStatusFragment + type: __typename + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + block { + id + } + time + programState { + returnType + data + } + } + ... on FailureStatus { + block { + id + } + time + reason + } } } @@ -473,15 +468,3 @@ mutation produceBlocks( startTimestamp: $startTimestamp ) } - -subscription submitAndAwait($encodedTransaction: HexString!) { - submitAndAwait(tx: $encodedTransaction) { - ...transactionStatusFragment - } -} - -subscription statusChange($transactionId: TransactionId!) { - statusChange(id: $transactionId) { - ...transactionStatusFragment - } -} diff --git a/packages/providers/src/provider.ts b/packages/providers/src/provider.ts index c6d21bd9e56..9239eedfddf 100644 --- a/packages/providers/src/provider.ts +++ b/packages/providers/src/provider.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ import type { BytesLike } from '@ethersproject/bytes'; import { arrayify, hexlify } from '@ethersproject/bytes'; import type { Network } from '@ethersproject/networks'; @@ -14,10 +15,7 @@ import { TransactionCoder, } from '@fuel-ts/transactions'; import { checkFuelCoreVersionCompatibility } from '@fuel-ts/versions'; -import { print } from 'graphql'; import { GraphQLClient } from 'graphql-request'; -import type { Client } from 'graphql-sse'; -import { createClient } from 'graphql-sse'; import { clone } from 'ramda'; import { getSdk as getOperationsSdk } from './__generated__/operations'; @@ -193,19 +191,14 @@ export type FetchRequestOptions = { body: string; }; -export type CustomFetch = ( - url: string, - options: FetchRequestOptions, - providerOptions?: Partial, 'fetch'>> -) => Promise; /* * Provider initialization options */ -export type ProviderOptions = { - fetch: CustomFetch | undefined; - cacheUtxo: number | undefined; - timeout: number | undefined; +export type ProviderOptions = { + fetch?: (url: string, options: FetchRequestOptions) => Promise; + cacheUtxo?: number; }; + /** * Provider Call transaction params */ @@ -227,26 +220,8 @@ type NodeInfoCache = Record; * A provider for connecting to a node */ export default class Provider { - operations!: ReturnType; - #subscriptionClient!: Client; - + operations: ReturnType; cache?: MemoryCache; - options: ProviderOptions = { - timeout: undefined, - cacheUtxo: undefined, - fetch: undefined, - }; - - private static getFetchFn(options: ProviderOptions) { - return options.fetch !== undefined - ? options.fetch - : (url: string, request: FetchRequestOptions) => - fetch(url, { - ...request, - signal: - options.timeout !== undefined ? AbortSignal.timeout(options.timeout) : undefined, - }); - } static clearChainAndNodeCaches() { Provider.nodeInfoCache = {}; @@ -267,11 +242,10 @@ export default class Provider { protected constructor( /** GraphQL endpoint of the Fuel node */ public url: string, - options: Partial = {} + public options: ProviderOptions = {} ) { - this.options = { ...this.options, ...options }; - this.createOperations(); - this.cache = this.options.cacheUtxo ? new MemoryCache(this.options.cacheUtxo) : undefined; + this.operations = this.createOperations(url, options); + this.cache = options.cacheUtxo ? new MemoryCache(options.cacheUtxo) : undefined; } /** @@ -279,7 +253,7 @@ export default class Provider { * @param url - GraphQL endpoint of the Fuel node * @param options - Additional options for the provider */ - static async create(url: string, options: Partial = {}) { + static async create(url: string, options: ProviderOptions = {}) { const provider = new Provider(url, options); await provider.fetchChainAndNodeInfo(); return provider; @@ -334,7 +308,7 @@ export default class Provider { */ async connect(url: string) { this.url = url; - this.createOperations(); + this.operations = this.createOperations(url); await this.fetchChainAndNodeInfo(); } @@ -374,77 +348,10 @@ export default class Provider { * @param options - Additional options for the provider * @returns The operation SDK object */ - private createOperations() { - const fetchFn = Provider.getFetchFn(this.options); - const gqlClient = new GraphQLClient(this.url, { - fetch: (nodeUrl: string, request: FetchRequestOptions) => - fetchFn(nodeUrl, request, this.options), - }); - - if (this.#subscriptionClient) this.#subscriptionClient.dispose(); - this.#subscriptionClient = Provider.createSubscriptionClient(this.url, fetchFn, this.options); - - // @ts-expect-error This is due to this function being generic and us using multiple libraries. Its type is specified when calling a specific operation via provider.operations.xyz. - this.operations = getOperationsSdk((query, vars) => { - const isSubscription = - (query.definitions.find((x) => x.kind === 'OperationDefinition') as { operation: string }) - ?.operation === 'subscription'; - if (isSubscription) { - return this.#subscriptionClient.iterate({ - query: print(query), - variables: vars as Record, - }); - } - - return gqlClient.request(query, vars); - }); - } - - private static createSubscriptionClient( - url: string, - fetchFn: ReturnType, - options: ProviderOptions - ) { - return createClient({ - url: `${url}-sub`, - onMessage: (msg) => { - /* - This is the only place where I've managed to wedge in error throwing - without the error being converted to the graphql-sse library's NetworkError or being silently ignored. - These are errors returned from the node as a field of the `data` property with a 200 response code, - so they aren't treated as errors by the graphql-sse library. - This function (onMessage) gets called after a fetch but before message processing. - So the fetchFn below gets called first, the node returns errors, then this function is called. - The _isError property is added in the response processing in the fetchFn as a way to differentiate between errors and successful responses. - See here: https://github.com/enisdenjo/graphql-sse/blob/370ec133f8ca9c7b763a6ca0223c756a09169c59/src/client.ts#L872 - */ - if ((msg.data as { _isError: boolean })._isError) { - throw new FuelError(ErrorCode.FUEL_NODE_ERROR, JSON.stringify(msg.data?.errors)); - } - }, - fetchFn: async ( - subscriptionUrl: string, - request: FetchRequestOptions & { signal: AbortSignal } - ) => Provider.adaptSubscriptionResponse(await fetchFn(subscriptionUrl, request, options)), - }); - } - - /** - The subscription response processing serves two purposes: - 1. To add an `event` field which is mandated by the graphql-sse library (not by the SSE protocol) - (see [the library's protocol](https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md)) - 2. To process the node's response because it's a different format to the types generated by graphql-codegen. - */ - private static async adaptSubscriptionResponse(originalResponse: Response): Promise { - const originalResponseText = await originalResponse.text(); - const originalResponseData = JSON.parse(originalResponseText.split('data:')[1]); - const data = originalResponseData.data; - const errors = originalResponseData.errors; - - let text = 'event:next'; - text += `\ndata:${JSON.stringify(data ?? { _isError: true, errors })}`; - text += '\n\n'; - return new Response(text, originalResponse); + private createOperations(url: string, options: ProviderOptions = {}) { + this.url = url; + const gqlClient = new GraphQLClient(url, options.fetch ? { fetch: options.fetch } : undefined); + return getOperationsSdk(gqlClient); } /** @@ -794,7 +701,7 @@ export default class Provider { filter: { owner: owner.toB256(), assetId: assetId && hexlify(assetId) }, }); - const coins = result.coins.edges.map((edge) => edge.node); + const coins = result.coins.edges!.map((edge) => edge!.node!); return coins.map((coin) => ({ id: coin.utxoId, @@ -1062,7 +969,7 @@ export default class Provider { filter: { owner: owner.toB256() }, }); - const balances = result.balances.edges.map((edge) => edge.node); + const balances = result.balances.edges!.map((edge) => edge!.node!); return balances.map((balance) => ({ assetId: balance.assetId, @@ -1089,7 +996,7 @@ export default class Provider { owner: address.toB256(), }); - const messages = result.messages.edges.map((edge) => edge.node); + const messages = result.messages.edges!.map((edge) => edge!.node!); return messages.map((message) => ({ messageId: InputMessageCoder.getMessageId({ diff --git a/packages/providers/src/transaction-response/transaction-response.ts b/packages/providers/src/transaction-response/transaction-response.ts index 470992104e5..12a99aa46a6 100644 --- a/packages/providers/src/transaction-response/transaction-response.ts +++ b/packages/providers/src/transaction-response/transaction-response.ts @@ -29,6 +29,7 @@ import type { GqlTransaction, AbiMap, } from '../transaction-summary/types'; +import { sleep } from '../utils'; /** @hidden */ export type TransactionResultCallReceipt = ReceiptCall; @@ -71,6 +72,9 @@ export type TransactionResultReceipt = | TransactionResultMintReceipt | TransactionResultBurnReceipt; +const STATUS_POLLING_INTERVAL_MAX_MS = 5000; +const STATUS_POLLING_INTERVAL_MIN_MS = 1000; + /** @hidden */ export type TransactionResult = TransactionSummary & { gqlTransaction: GqlTransaction; @@ -86,6 +90,10 @@ export class TransactionResponse { provider: Provider; /** Gas used on the transaction */ gasUsed: BN = bn(0); + /** Number of attempts made to fetch the transaction */ + fetchAttempts: number = 0; + /** Number of attempts made to retrieve a processed transaction. */ + resultAttempts: number = 0; /** The graphql Transaction with receipts object. */ gqlTransaction?: GqlTransaction; @@ -125,14 +133,7 @@ export class TransactionResponse { }); if (!response.transaction) { - for await (const { statusChange } of this.provider.operations.statusChange({ - transactionId: this.id, - })) { - if (statusChange) { - break; - } - } - + await this.sleepBasedOnAttempts(++this.fetchAttempts); return this.fetch(); } @@ -202,10 +203,12 @@ export class TransactionResponse { async waitForResult( contractsAbiMap?: AbiMap ): Promise> { - for await (const { statusChange } of this.provider.operations.statusChange({ - transactionId: this.id, - })) { - if (statusChange.__typename !== 'SubmittedStatus') break; + await this.fetch(); + + if (this.gqlTransaction?.status?.type === 'SubmittedStatus') { + await this.sleepBasedOnAttempts(++this.resultAttempts); + + return this.waitForResult(contractsAbiMap); } const transactionSummary = await this.getTransactionSummary(contractsAbiMap); @@ -237,4 +240,18 @@ export class TransactionResponse { return result; } + + /** + * Introduces a delay based on the number of previous attempts made. + * + * @param attempts - The number of attempts. + */ + private async sleepBasedOnAttempts(attempts: number): Promise { + // TODO: Consider adding `maxTimeout` or `maxAttempts` parameter. + // The aim is to avoid perpetual execution; when the limit + // is reached, we can throw accordingly. + await sleep( + Math.min(STATUS_POLLING_INTERVAL_MIN_MS * attempts, STATUS_POLLING_INTERVAL_MAX_MS) + ); + } } diff --git a/packages/providers/test/provider.test.ts b/packages/providers/test/provider.test.ts index e523163da02..f47648d9f4f 100644 --- a/packages/providers/test/provider.test.ts +++ b/packages/providers/test/provider.test.ts @@ -3,15 +3,15 @@ import { hexlify, arrayify } from '@ethersproject/bytes'; import { Address } from '@fuel-ts/address'; import { BaseAssetId, ZeroBytes32 } from '@fuel-ts/address/configs'; import { randomBytes } from '@fuel-ts/crypto'; -import { ErrorCode, FuelError } from '@fuel-ts/errors'; +import { FuelError, ErrorCode } from '@fuel-ts/errors'; import { expectToThrowFuelError, safeExec } from '@fuel-ts/errors/test-utils'; import { BN, bn } from '@fuel-ts/math'; import type { Receipt } from '@fuel-ts/transactions'; import { InputType, ReceiptType, TransactionType } from '@fuel-ts/transactions'; -import * as fuelTsVersionsMod from '@fuel-ts/versions'; import { versions } from '@fuel-ts/versions'; +import * as fuelTsVersionsMod from '@fuel-ts/versions'; +import * as GraphQL from 'graphql-request'; -import type { FetchRequestOptions } from '../src/provider'; import Provider from '../src/provider'; import type { CoinTransactionRequestInput, @@ -21,6 +21,8 @@ import { ScriptTransactionRequest } from '../src/transaction-request'; import { fromTai64ToUnix, fromUnixToTai64 } from '../src/utils'; import { messageProofResponse, messageStatusResponse } from './fixtures'; +import { MOCK_CHAIN } from './fixtures/chain'; +import { MOCK_NODE_INFO } from './fixtures/nodeInfo'; // https://stackoverflow.com/a/72885576 jest.mock('@fuel-ts/versions', () => ({ @@ -55,6 +57,7 @@ const getCustomFetch = } return fetch(url, options); }; + // TODO: Figure out a way to import this constant from `@fuel-ts/wallet/configs` const FUEL_NETWORK_URL = 'http://127.0.0.1:4000/graphql'; @@ -202,15 +205,22 @@ describe('Provider', () => { it('can change the provider url of the current instance', async () => { const providerUrl1 = FUEL_NETWORK_URL; - const providerUrl2 = 'https://beta-4.fuel.network/graphql'; + const providerUrl2 = 'http://127.0.0.1:8080/graphql'; - const provider = await Provider.create(providerUrl1, { - fetch: (url: string, options: FetchRequestOptions) => - getCustomFetch('getVersion', { nodeInfo: { nodeVersion: url } })(url, options), - }); + const provider = await Provider.create(providerUrl1); expect(provider.url).toBe(providerUrl1); - expect(await provider.getVersion()).toEqual(providerUrl1); + + const spyGraphQLClient = jest.spyOn(GraphQL, 'GraphQLClient').mockImplementation( + () => + ({ + request: () => + Promise.resolve({ + chain: MOCK_CHAIN, + nodeInfo: MOCK_NODE_INFO, + }), + } as unknown as GraphQL.GraphQLClient) + ); const spyFetchChainAndNodeInfo = jest.spyOn(Provider.prototype, 'fetchChainAndNodeInfo'); const spyFetchChain = jest.spyOn(Provider.prototype, 'fetchChain'); @@ -218,8 +228,7 @@ describe('Provider', () => { await provider.connect(providerUrl2); expect(provider.url).toBe(providerUrl2); - - expect(await provider.getVersion()).toEqual(providerUrl2); + expect(spyGraphQLClient).toBeCalledWith(providerUrl2, undefined); expect(spyFetchChainAndNodeInfo).toHaveBeenCalledTimes(1); expect(spyFetchChain).toHaveBeenCalledTimes(1); @@ -682,51 +691,6 @@ describe('Provider', () => { expect(messageStatus).toMatchSnapshot(); }); - it('default timeout is undefined', async () => { - const provider = await Provider.create(FUEL_NETWORK_URL); - expect(provider.options.timeout).toBeUndefined(); - }); - - it('throws TimeoutError on timeout when calling an operation', async () => { - const { error } = await safeExec(async () => { - const provider = await Provider.create(FUEL_NETWORK_URL, { timeout: 0 }); - await provider.getTransaction('will fail due to timeout'); - }); - - expect(error).toMatchObject({ - code: 23, - name: 'TimeoutError', - message: 'The operation was aborted due to timeout', - }); - }); - - it('throws TimeoutError on timeout when calling a subscription', async () => { - const { error } = await safeExec(async () => { - const provider = await Provider.create(FUEL_NETWORK_URL, { timeout: 0 }); - provider.operations.statusChange({ transactionId: 'doesnt matter, will be aborted' }); - }); - expect(error).toMatchObject({ - code: 23, - name: 'TimeoutError', - message: 'The operation was aborted due to timeout', - }); - }); - - it('errors returned from node via subscriptions are thrown', async () => { - const provider = await Provider.create(FUEL_NETWORK_URL); - - await expectToThrowFuelError( - async () => { - for await (const iterator of provider.operations.statusChange({ - transactionId: 'Invalid ID that will cause node to return errors', - })) { - if (iterator) break; - } - }, - { code: ErrorCode.FUEL_NODE_ERROR } - ); - }); - it('can connect', async () => { const provider = await Provider.create(FUEL_NETWORK_URL); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3571eb6dbcb..4f05ba8ac09 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + cross-fetch: 4.0.0 + importers: .: @@ -130,7 +133,7 @@ importers: version: 0.1.1 ts-jest: specifier: ^29.0.3 - version: 29.0.3(@babel/core@7.22.10)(@jest/types@29.5.0)(esbuild@0.17.19)(jest@29.5.0)(typescript@5.1.6) + version: 29.0.3(@babel/core@7.22.5)(@jest/types@29.5.0)(esbuild@0.17.19)(jest@29.5.0)(typescript@5.1.6) tsup: specifier: ^6.7.0 version: 6.7.0(typescript@5.1.6) @@ -163,7 +166,7 @@ importers: version: link:../../packages/fuels next: specifier: 13.4.4 - version: 13.4.4(@babel/core@7.22.10)(react-dom@18.2.0)(react@18.2.0) + version: 13.4.4(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -609,7 +612,7 @@ importers: dependencies: node-fetch: specifier: ^2.6.7 - version: 2.7.0 + version: 2.6.7 shelljs: specifier: ^0.8.5 version: 0.8.5 @@ -618,7 +621,7 @@ importers: dependencies: node-fetch: specifier: ^2.6.7 - version: 2.7.0 + version: 2.6.7 shelljs: specifier: ^0.8.5 version: 0.8.5 @@ -949,9 +952,6 @@ importers: graphql-request: specifier: ^5.0.0 version: 5.0.0(graphql@16.6.0) - graphql-sse: - specifier: ^2.2.1 - version: 2.2.1(graphql@16.6.0) graphql-tag: specifier: ^2.12.6 version: 2.12.6(graphql@16.6.0) @@ -967,13 +967,10 @@ importers: version: link:../utils '@graphql-codegen/cli': specifier: ^2.13.7 - version: 2.13.7(@babel/core@7.22.10)(@types/node@16.18.34)(graphql@16.6.0)(ts-node@10.9.1)(typescript@5.1.6) + version: 2.13.7(@babel/core@7.22.5)(@types/node@16.18.34)(graphql@16.6.0)(ts-node@10.9.1)(typescript@4.9.5) '@graphql-codegen/typescript': specifier: ^2.8.0 version: 2.8.0(graphql@16.6.0) - '@graphql-codegen/typescript-generic-sdk': - specifier: ^3.1.0 - version: 3.1.0(graphql-tag@2.12.6)(graphql@16.6.0) '@graphql-codegen/typescript-graphql-request': specifier: ^4.5.7 version: 4.5.7(graphql-request@5.0.0)(graphql-tag@2.12.6)(graphql@16.6.0) @@ -986,6 +983,9 @@ importers: get-graphql-schema: specifier: ^2.1.2 version: 2.1.2 + typescript: + specifier: ^4.8.4 + version: 4.9.5 packages/script: dependencies: @@ -1423,7 +1423,7 @@ packages: resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} engines: {node: '>=14'} dependencies: - node-fetch: 2.7.0 + node-fetch: 2.6.11 transitivePeerDependencies: - encoding dev: true @@ -1438,13 +1438,6 @@ packages: '@azu/format-text': 1.0.2 dev: true - /@babel/code-frame@7.22.10: - resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.10 - chalk: 2.4.2 - /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} @@ -1455,32 +1448,6 @@ packages: resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} - engines: {node: '>=6.9.0'} - - /@babel/core@7.22.10: - resolution: {integrity: sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.10 - '@babel/generator': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) - '@babel/helpers': 7.22.10 - '@babel/parser': 7.22.10 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.10 - '@babel/types': 7.22.10 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - /@babel/core@7.22.5: resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} engines: {node: '>=6.9.0'} @@ -1517,15 +1484,6 @@ packages: semver: 6.3.0 dev: false - /@babel/generator@7.22.10: - resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.10 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - /@babel/generator@7.22.5: resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} engines: {node: '>=6.9.0'} @@ -1548,16 +1506,6 @@ packages: '@babel/types': 7.22.5 dev: false - /@babel/helper-compilation-targets@7.22.10: - resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 6.3.1 - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} engines: {node: '>=6.9.0'} @@ -1662,19 +1610,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.10): - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 - /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} @@ -1731,12 +1666,6 @@ packages: dependencies: '@babel/types': 7.22.5 - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.10 - /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} @@ -1761,16 +1690,6 @@ packages: - supports-color dev: false - /@babel/helpers@7.22.10: - resolution: {integrity: sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.10 - '@babel/types': 7.22.10 - transitivePeerDependencies: - - supports-color - /@babel/helpers@7.22.5: resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} engines: {node: '>=6.9.0'} @@ -1781,14 +1700,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/highlight@7.22.10: - resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} @@ -1797,13 +1708,6 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.22.10: - resolution: {integrity: sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.10 - /@babel/parser@7.22.5: resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} engines: {node: '>=6.0.0'} @@ -2019,16 +1923,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} @@ -2038,16 +1932,6 @@ packages: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} @@ -2056,7 +1940,6 @@ packages: dependencies: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - dev: false /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} @@ -2084,16 +1967,6 @@ packages: '@babel/core': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - dev: false - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} @@ -2676,20 +2549,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.10): - resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.10 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.10) - '@babel/types': 7.22.5 - dev: false - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} engines: {node: '>=6.9.0'} @@ -3018,23 +2877,6 @@ packages: '@babel/parser': 7.22.5 '@babel/types': 7.22.5 - /@babel/traverse@7.22.10: - resolution: {integrity: sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.10 - '@babel/generator': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.10 - '@babel/types': 7.22.10 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/traverse@7.22.5: resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} engines: {node: '>=6.9.0'} @@ -3052,14 +2894,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.22.10: - resolution: {integrity: sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - to-fast-properties: 2.0.0 - /@babel/types@7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} @@ -3177,7 +3011,7 @@ packages: resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} dependencies: dataloader: 1.4.0 - node-fetch: 2.7.0 + node-fetch: 2.6.11 transitivePeerDependencies: - encoding dev: true @@ -3901,21 +3735,21 @@ packages: resolution: {integrity: sha512-MXtNDk0WXONIrDJOlk07+X7GegpCz2hfbAgSIWycOD0th2z1GndvMqBryiw/pTVDHLnHe+5TGIODLsprI4RiEw==} dev: false - /@graphql-codegen/cli@2.13.7(@babel/core@7.22.10)(@types/node@16.18.34)(graphql@16.6.0)(ts-node@10.9.1)(typescript@5.1.6): + /@graphql-codegen/cli@2.13.7(@babel/core@7.22.5)(@types/node@16.18.34)(graphql@16.6.0)(ts-node@10.9.1)(typescript@4.9.5): resolution: {integrity: sha512-Rpk4WWrDgkDoVELftBr7/74MPiYmCITEF2+AWmyZZ2xzaC9cO2PqzZ+OYDEBNWD6UEk0RrIfVSa+slDKjhY59w==} hasBin: true peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@babel/generator': 7.22.10 + '@babel/generator': 7.22.5 '@babel/template': 7.22.5 - '@babel/types': 7.22.10 + '@babel/types': 7.22.5 '@graphql-codegen/core': 2.6.2(graphql@16.6.0) '@graphql-codegen/plugin-helpers': 2.7.2(graphql@16.6.0) '@graphql-tools/apollo-engine-loader': 7.3.26(graphql@16.6.0) - '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.22.10)(graphql@16.6.0) - '@graphql-tools/git-loader': 7.3.0(@babel/core@7.22.10)(graphql@16.6.0) - '@graphql-tools/github-loader': 7.3.28(@babel/core@7.22.10)(@types/node@16.18.34)(graphql@16.6.0) + '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.22.5)(graphql@16.6.0) + '@graphql-tools/git-loader': 7.3.0(@babel/core@7.22.5)(graphql@16.6.0) + '@graphql-tools/github-loader': 7.3.28(@babel/core@7.22.5)(@types/node@16.18.34)(graphql@16.6.0) '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.6.0) '@graphql-tools/json-file-loader': 7.4.18(graphql@16.6.0) '@graphql-tools/load': 7.8.14(graphql@16.6.0) @@ -3927,11 +3761,11 @@ packages: chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 4.1.1(@types/node@16.18.34)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6) + cosmiconfig-typescript-loader: 4.1.1(@types/node@16.18.34)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@4.9.5) debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.6.0 - graphql-config: 4.3.6(@types/node@16.18.34)(graphql@16.6.0)(typescript@5.1.6) + graphql-config: 4.3.6(@types/node@16.18.34)(graphql@16.6.0)(typescript@4.9.5) inquirer: 8.2.5 is-glob: 4.0.3 json-to-pretty-yaml: 1.2.2 @@ -4009,23 +3843,6 @@ packages: tslib: 2.4.1 dev: true - /@graphql-codegen/typescript-generic-sdk@3.1.0(graphql-tag@2.12.6)(graphql@16.6.0): - resolution: {integrity: sha512-nQZi/YGRI1+qCZZsh0V5nz6+hCHSN4OU9tKyOTDsEPyDFnGEukDuRdCH2IZasGn22a3Iu5TUDkgp5w9wEQwGmg==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql-tag: ^2.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 2.13.1(graphql@16.6.0) - auto-bind: 4.0.0 - graphql: 16.6.0 - graphql-tag: 2.12.6(graphql@16.6.0) - tslib: 2.4.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@graphql-codegen/typescript-graphql-request@4.5.7(graphql-request@5.0.0)(graphql-tag@2.12.6)(graphql@16.6.0): resolution: {integrity: sha512-1YPaCO+0q5z0Um6Om+5LMWdB8+WQxda8eXRXwy0dqSGRy9X5HTZz/pxqaTgy76yMtPBxq1UNa7lruBTzszHhJg==} peerDependencies: @@ -4098,27 +3915,6 @@ packages: - supports-color dev: true - /@graphql-codegen/visitor-plugin-common@2.13.1(graphql@16.6.0): - resolution: {integrity: sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 2.7.2(graphql@16.6.0) - '@graphql-tools/optimize': 1.4.0(graphql@16.6.0) - '@graphql-tools/relay-operation-optimizer': 6.5.18(graphql@16.6.0) - '@graphql-tools/utils': 8.13.1(graphql@16.6.0) - auto-bind: 4.0.0 - change-case-all: 1.0.14 - dependency-graph: 0.11.0 - graphql: 16.6.0 - graphql-tag: 2.12.6(graphql@16.6.0) - parse-filepath: 1.0.2 - tslib: 2.4.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@graphql-tools/apollo-engine-loader@7.3.26(graphql@16.6.0): resolution: {integrity: sha512-h1vfhdJFjnCYn9b5EY1Z91JTF0KB3hHVJNQIsiUV2mpQXZdeOXQoaWeYEKaiI5R6kwBw5PP9B0fv3jfUIG8LyQ==} peerDependencies: @@ -4145,12 +3941,12 @@ packages: value-or-promise: 1.0.12 dev: true - /@graphql-tools/code-file-loader@7.3.23(@babel/core@7.22.10)(graphql@16.6.0): + /@graphql-tools/code-file-loader@7.3.23(@babel/core@7.22.5)(graphql@16.6.0): resolution: {integrity: sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.22.10)(graphql@16.6.0) + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.22.5)(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) globby: 11.1.0 graphql: 16.6.0 @@ -4241,12 +4037,12 @@ packages: value-or-promise: 1.0.12 dev: true - /@graphql-tools/git-loader@7.3.0(@babel/core@7.22.10)(graphql@16.6.0): + /@graphql-tools/git-loader@7.3.0(@babel/core@7.22.5)(graphql@16.6.0): resolution: {integrity: sha512-gcGAK+u16eHkwsMYqqghZbmDquh8QaO24Scsxq+cVR+vx1ekRlsEiXvu+yXVDbZdcJ6PBIbeLcQbEu+xhDLmvQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.22.10)(graphql@16.6.0) + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.22.5)(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 is-glob: 4.0.3 @@ -4258,14 +4054,14 @@ packages: - supports-color dev: true - /@graphql-tools/github-loader@7.3.28(@babel/core@7.22.10)(@types/node@16.18.34)(graphql@16.6.0): + /@graphql-tools/github-loader@7.3.28(@babel/core@7.22.5)(@types/node@16.18.34)(graphql@16.6.0): resolution: {integrity: sha512-OK92Lf9pmxPQvjUNv05b3tnVhw0JRfPqOf15jZjyQ8BfdEUrJoP32b4dRQQem/wyRL24KY4wOfArJNqzpsbwCA==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/executor-http': 0.1.10(@types/node@16.18.34)(graphql@16.6.0) - '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.22.10)(graphql@16.6.0) + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.22.5)(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) '@whatwg-node/fetch': 0.8.8 graphql: 16.6.0 @@ -4291,15 +4087,15 @@ packages: unixify: 1.0.0 dev: true - /@graphql-tools/graphql-tag-pluck@7.5.2(@babel/core@7.22.10)(graphql@16.6.0): + /@graphql-tools/graphql-tag-pluck@7.5.2(@babel/core@7.22.5)(graphql@16.6.0): resolution: {integrity: sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@babel/parser': 7.22.10 - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.10) - '@babel/traverse': 7.22.10 - '@babel/types': 7.22.10 + '@babel/parser': 7.22.5 + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.5) + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.6.0 @@ -4359,7 +4155,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 - tslib: 2.6.0 + tslib: 2.4.1 dev: true /@graphql-tools/prisma-loader@7.2.72(@types/node@16.18.34)(graphql@16.6.0): @@ -4402,7 +4198,7 @@ packages: '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.6.0 + tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color @@ -4985,6 +4781,11 @@ packages: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} @@ -5011,7 +4812,7 @@ packages: /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 dev: true @@ -5498,7 +5299,7 @@ packages: resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==} engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.22.10 + '@babel/code-frame': 7.22.5 '@babel/runtime': 7.22.5 '@types/aria-query': 5.0.1 aria-query: 5.1.3 @@ -6819,8 +6620,8 @@ packages: event-target-polyfill: 0.0.3 form-data-encoder: 1.9.0 formdata-node: 4.4.1 - node-fetch: 2.7.0 - undici: 5.23.0 + node-fetch: 2.6.11 + undici: 5.22.1 web-streams-polyfill: 3.2.1 transitivePeerDependencies: - encoding @@ -8183,7 +7984,7 @@ packages: '@iarna/toml': 2.2.5 dev: true - /cosmiconfig-typescript-loader@4.1.1(@types/node@16.18.34)(cosmiconfig@7.0.1)(ts-node@10.9.1)(typescript@5.1.6): + /cosmiconfig-typescript-loader@4.1.1(@types/node@16.18.34)(cosmiconfig@7.0.1)(ts-node@10.9.1)(typescript@4.9.5): resolution: {integrity: sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -8194,11 +7995,11 @@ packages: dependencies: '@types/node': 16.18.34 cosmiconfig: 7.0.1 - ts-node: 10.9.1(@types/node@16.18.34)(typescript@5.1.6) - typescript: 5.1.6 + ts-node: 10.9.1(@types/node@16.18.34)(typescript@4.9.5) + typescript: 4.9.5 dev: true - /cosmiconfig-typescript-loader@4.1.1(@types/node@16.18.34)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@5.1.6): + /cosmiconfig-typescript-loader@4.1.1(@types/node@16.18.34)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@4.9.5): resolution: {integrity: sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -8209,8 +8010,8 @@ packages: dependencies: '@types/node': 16.18.34 cosmiconfig: 7.1.0 - ts-node: 10.9.1(@types/node@16.18.34)(typescript@5.1.6) - typescript: 5.1.6 + ts-node: 10.9.1(@types/node@16.18.34)(typescript@4.9.5) + typescript: 4.9.5 dev: true /cosmiconfig@6.0.0: @@ -8249,10 +8050,10 @@ packages: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true - /cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + /cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} dependencies: - node-fetch: 2.7.0 + node-fetch: 2.6.12 transitivePeerDependencies: - encoding @@ -9259,8 +9060,8 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 dependencies: - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.10) - '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.10) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) eslint: 8.38.0 lodash: 4.17.21 string-natural-compare: 3.0.1 @@ -9772,7 +9573,7 @@ packages: /fbjs@3.0.5: resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} dependencies: - cross-fetch: 3.1.8 + cross-fetch: 4.0.0 fbjs-css-vars: 1.0.2 loose-envify: 1.4.0 object-assign: 4.1.1 @@ -10091,7 +9892,7 @@ packages: chalk: 2.4.2 graphql: 14.7.0 minimist: 1.2.8 - node-fetch: 2.7.0 + node-fetch: 2.6.11 transitivePeerDependencies: - encoding dev: true @@ -10239,7 +10040,7 @@ packages: /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - /graphql-config@4.3.6(@types/node@16.18.34)(graphql@16.6.0)(typescript@5.1.6): + /graphql-config@4.3.6(@types/node@16.18.34)(graphql@16.6.0)(typescript@4.9.5): resolution: {integrity: sha512-i7mAPwc0LAZPnYu2bI8B6yXU5820Wy/ArvmOseDLZIu0OU1UTULEuexHo6ZcHXeT9NvGGaUPQZm8NV3z79YydA==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -10253,11 +10054,11 @@ packages: '@graphql-tools/utils': 8.13.1(graphql@16.6.0) cosmiconfig: 7.0.1 cosmiconfig-toml-loader: 1.0.0 - cosmiconfig-typescript-loader: 4.1.1(@types/node@16.18.34)(cosmiconfig@7.0.1)(ts-node@10.9.1)(typescript@5.1.6) + cosmiconfig-typescript-loader: 4.1.1(@types/node@16.18.34)(cosmiconfig@7.0.1)(ts-node@10.9.1)(typescript@4.9.5) graphql: 16.6.0 minimatch: 4.2.1 string-env-interpolation: 1.0.1 - ts-node: 10.9.1(@types/node@16.18.34)(typescript@5.1.6) + ts-node: 10.9.1(@types/node@16.18.34)(typescript@4.9.5) tslib: 2.6.0 transitivePeerDependencies: - '@swc/core' @@ -10275,7 +10076,7 @@ packages: graphql: 14 - 16 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) - cross-fetch: 3.1.8 + cross-fetch: 4.0.0 extract-files: 9.0.0 form-data: 3.0.1 graphql: 16.6.0 @@ -10288,21 +10089,12 @@ packages: graphql: 14 - 16 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) - cross-fetch: 3.1.8 + cross-fetch: 4.0.0 graphql: 16.6.0 transitivePeerDependencies: - encoding dev: true - /graphql-sse@2.2.1(graphql@16.6.0): - resolution: {integrity: sha512-lLpddzD+DqI6zJaaNo04T7uFtHgQtf45vjMxllKZb2Z/4ddX0KED0Ckf3Yeq0FN6+nTzu3vjXcDTOd+Y3dU4BA==} - engines: {node: '>=12'} - peerDependencies: - graphql: '>=0.11 <=16' - dependencies: - graphql: 16.6.0 - dev: false - /graphql-tag@2.12.6(graphql@16.6.0): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -13060,7 +12852,7 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next@13.4.4(@babel/core@7.22.10)(react-dom@18.2.0)(react@18.2.0): + /next@13.4.4(@babel/core@7.22.5)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA==} engines: {node: '>=16.8.0'} hasBin: true @@ -13085,7 +12877,7 @@ packages: postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.10)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.5)(react@18.2.0) zod: 3.21.4 optionalDependencies: '@next/swc-darwin-arm64': 13.4.4 @@ -13117,8 +12909,20 @@ packages: engines: {node: '>=10.5.0'} dev: true - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + /node-fetch@2.6.11: + resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-fetch@2.6.12: + resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -13128,6 +12932,18 @@ packages: dependencies: whatwg-url: 5.0.0 + /node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} @@ -15495,10 +15311,6 @@ packages: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - /semver@7.0.0: resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} hasBin: true @@ -16049,7 +15861,7 @@ packages: webpack: 5.88.0(esbuild@0.17.19) dev: false - /styled-jsx@5.1.1(@babel/core@7.22.10)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.22.5)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -16062,7 +15874,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.5 client-only: 0.0.1 react: 18.2.0 dev: false @@ -16326,7 +16138,7 @@ packages: fs-extra: 8.1.0 get-url-origin: 1.0.1 minimatch: 3.1.2 - node-fetch: 2.7.0 + node-fetch: 2.6.11 p-memoize: 3.1.0 p-queue: 6.6.2 textlint: 13.3.2 @@ -16504,7 +16316,7 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-jest@29.0.3(@babel/core@7.22.10)(@jest/types@29.5.0)(esbuild@0.17.19)(jest@29.5.0)(typescript@5.1.6): + /ts-jest@29.0.3(@babel/core@7.22.5)(@jest/types@29.5.0)(esbuild@0.17.19)(jest@29.5.0)(typescript@5.1.6): resolution: {integrity: sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -16525,7 +16337,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.10 + '@babel/core': 7.22.5 '@jest/types': 29.5.0 bs-logger: 0.2.6 esbuild: 0.17.19 @@ -16544,7 +16356,7 @@ packages: resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} dev: true - /ts-node@10.9.1(@types/node@16.18.34)(typescript@5.1.6): + /ts-node@10.9.1(@types/node@16.18.34)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -16570,7 +16382,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.1.6 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -16859,7 +16671,6 @@ packages: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - dev: false /typescript@5.0.2: resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} @@ -16905,8 +16716,8 @@ packages: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} dev: true - /undici@5.23.0: - resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} + /undici@5.22.1: + resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} engines: {node: '>=14.0'} dependencies: busboy: 1.6.0